mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 03:24:38 +02:00
6863023: need non-perm oops in code cache for JSR 292
Make a special root-list for those few nmethods which might contain non-perm oops. Reviewed-by: twisti, kvn, never, jmasa, ysr
This commit is contained in:
parent
1cf5b7ae11
commit
e261aecad8
74 changed files with 979 additions and 279 deletions
|
@ -374,7 +374,8 @@ class Thread: public ThreadShadow {
|
|||
|
||||
// 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 @@ public:
|
|||
}
|
||||
|
||||
// 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 @@ class JavaThread: public Thread {
|
|||
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 @@ class Threads: AllStatic {
|
|||
|
||||
// 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 @@ class Threads: AllStatic {
|
|||
|
||||
// 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();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue