Mercurial > hg > truffle
diff src/share/vm/runtime/thread.hpp @ 989:148e5441d916
6863023: need non-perm oops in code cache for JSR 292
Summary: Make a special root-list for those few nmethods which might contain non-perm oops.
Reviewed-by: twisti, kvn, never, jmasa, ysr
author | jrose |
---|---|
date | Tue, 15 Sep 2009 21:53:47 -0700 |
parents | bd02caa94611 |
children | 46b819ba120b |
line wrap: on
line diff
--- a/src/share/vm/runtime/thread.hpp Tue Sep 15 11:09:34 2009 -0700 +++ b/src/share/vm/runtime/thread.hpp Tue Sep 15 21:53:47 2009 -0700 @@ -374,7 +374,8 @@ // GC support // Apply "f->do_oop" to all root oops in "this". - void oops_do(OopClosure* f); + // Apply "cf->do_code_blob" (if !NULL) to all code blobs active in frames + void oops_do(OopClosure* f, CodeBlobClosure* cf); // Handles the parallel case for the method below. private: @@ -398,7 +399,7 @@ } // Sweeper support - void nmethods_do(); + void nmethods_do(CodeBlobClosure* cf); // Tells if adr belong to this thread. This is used // for checking if a lock is owned by the running thread. @@ -1238,10 +1239,10 @@ void frames_do(void f(frame*, const RegisterMap*)); // Memory operations - void oops_do(OopClosure* f); + void oops_do(OopClosure* f, CodeBlobClosure* cf); // Sweeper operations - void nmethods_do(); + void nmethods_do(CodeBlobClosure* cf); // Memory management operations void gc_epilogue(); @@ -1629,9 +1630,9 @@ // Apply "f->do_oop" to all root oops in all threads. // This version may only be called by sequential code. - static void oops_do(OopClosure* f); + static void oops_do(OopClosure* f, CodeBlobClosure* cf); // This version may be called by sequential or parallel code. - static void possibly_parallel_oops_do(OopClosure* f); + static void possibly_parallel_oops_do(OopClosure* f, CodeBlobClosure* cf); // This creates a list of GCTasks, one per thread. static void create_thread_roots_tasks(GCTaskQueue* q); // This creates a list of GCTasks, one per thread, for marking objects. @@ -1639,13 +1640,13 @@ // Apply "f->do_oop" to roots in all threads that // are part of compiled frames - static void compiled_frame_oops_do(OopClosure* f); + static void compiled_frame_oops_do(OopClosure* f, CodeBlobClosure* cf); static void convert_hcode_pointers(); static void restore_hcode_pointers(); // Sweeper - static void nmethods_do(); + static void nmethods_do(CodeBlobClosure* cf); static void gc_epilogue(); static void gc_prologue();