mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 19:44:41 +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
|
@ -240,9 +240,12 @@ void GenMarkSweep::mark_sweep_phase1(int level,
|
|||
|
||||
gch->gen_process_strong_roots(level,
|
||||
false, // Younger gens are not roots.
|
||||
true, // activate StrongRootsScope
|
||||
true, // Collecting permanent generation.
|
||||
SharedHeap::SO_SystemClasses,
|
||||
&follow_root_closure, &follow_root_closure);
|
||||
&follow_root_closure,
|
||||
true, // walk code active on stacks
|
||||
&follow_root_closure);
|
||||
|
||||
// Process reference objects found during marking
|
||||
{
|
||||
|
@ -330,14 +333,19 @@ void GenMarkSweep::mark_sweep_phase3(int level) {
|
|||
|
||||
gch->gen_process_strong_roots(level,
|
||||
false, // Younger gens are not roots.
|
||||
true, // activate StrongRootsScope
|
||||
true, // Collecting permanent generation.
|
||||
SharedHeap::SO_AllClasses,
|
||||
&adjust_root_pointer_closure,
|
||||
false, // do not walk code
|
||||
&adjust_root_pointer_closure);
|
||||
|
||||
// Now adjust pointers in remaining weak roots. (All of which should
|
||||
// have been cleared if they pointed to non-surviving objects.)
|
||||
CodeBlobToOopClosure adjust_code_pointer_closure(&adjust_pointer_closure,
|
||||
/*do_marking=*/ false);
|
||||
gch->gen_process_weak_roots(&adjust_root_pointer_closure,
|
||||
&adjust_code_pointer_closure,
|
||||
&adjust_pointer_closure);
|
||||
|
||||
adjust_marks();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue