--- a/hotspot/src/share/vm/runtime/thread.hpp Mon May 16 14:21:16 2011 -0700
+++ b/hotspot/src/share/vm/runtime/thread.hpp Mon May 16 22:16:44 2011 -0700
@@ -439,7 +439,7 @@
// GC support
// Apply "f->do_oop" to all root oops in "this".
// Apply "cf->do_code_blob" (if !NULL) to all code blobs active in frames
- void oops_do(OopClosure* f, CodeBlobClosure* cf);
+ virtual void oops_do(OopClosure* f, CodeBlobClosure* cf);
// Handles the parallel case for the method below.
private:
@@ -1381,7 +1381,7 @@
void trace_frames() PRODUCT_RETURN;
// Print an annotated view of the stack frames
- void print_frame_layout(int depth = 0, bool validate_only = false) PRODUCT_RETURN;
+ void print_frame_layout(int depth = 0, bool validate_only = false) NOT_DEBUG_RETURN;
void validate_frame_layout() {
print_frame_layout(0, true);
}
@@ -1698,6 +1698,8 @@
CompileQueue* _queue;
BufferBlob* _buffer_blob;
+ nmethod* _scanned_nmethod; // nmethod being scanned by the sweeper
+
public:
static CompilerThread* current();
@@ -1726,6 +1728,11 @@
_log = log;
}
+ // GC support
+ // Apply "f->do_oop" to all root oops in "this".
+ // Apply "cf->do_code_blob" (if !NULL) to all code blobs active in frames
+ void oops_do(OopClosure* f, CodeBlobClosure* cf);
+
#ifndef PRODUCT
private:
IdealGraphPrinter *_ideal_graph_printer;
@@ -1737,6 +1744,12 @@
// Get/set the thread's current task
CompileTask* task() { return _task; }
void set_task(CompileTask* task) { _task = task; }
+
+ // Track the nmethod currently being scanned by the sweeper
+ void set_scanned_nmethod(nmethod* nm) {
+ assert(_scanned_nmethod == NULL || nm == NULL, "should reset to NULL before writing a new value");
+ _scanned_nmethod = nm;
+ }
};
inline CompilerThread* CompilerThread::current() {