238 // are run. |
238 // are run. |
239 follow_root_closure.set_orig_generation(gch->get_gen(level)); |
239 follow_root_closure.set_orig_generation(gch->get_gen(level)); |
240 |
240 |
241 gch->gen_process_strong_roots(level, |
241 gch->gen_process_strong_roots(level, |
242 false, // Younger gens are not roots. |
242 false, // Younger gens are not roots. |
|
243 true, // activate StrongRootsScope |
243 true, // Collecting permanent generation. |
244 true, // Collecting permanent generation. |
244 SharedHeap::SO_SystemClasses, |
245 SharedHeap::SO_SystemClasses, |
245 &follow_root_closure, &follow_root_closure); |
246 &follow_root_closure, |
|
247 true, // walk code active on stacks |
|
248 &follow_root_closure); |
246 |
249 |
247 // Process reference objects found during marking |
250 // Process reference objects found during marking |
248 { |
251 { |
249 ref_processor()->setup_policy(clear_all_softrefs); |
252 ref_processor()->setup_policy(clear_all_softrefs); |
250 ref_processor()->process_discovered_references( |
253 ref_processor()->process_discovered_references( |
328 adjust_root_pointer_closure.set_orig_generation(gch->get_gen(level)); |
331 adjust_root_pointer_closure.set_orig_generation(gch->get_gen(level)); |
329 adjust_pointer_closure.set_orig_generation(gch->get_gen(level)); |
332 adjust_pointer_closure.set_orig_generation(gch->get_gen(level)); |
330 |
333 |
331 gch->gen_process_strong_roots(level, |
334 gch->gen_process_strong_roots(level, |
332 false, // Younger gens are not roots. |
335 false, // Younger gens are not roots. |
|
336 true, // activate StrongRootsScope |
333 true, // Collecting permanent generation. |
337 true, // Collecting permanent generation. |
334 SharedHeap::SO_AllClasses, |
338 SharedHeap::SO_AllClasses, |
335 &adjust_root_pointer_closure, |
339 &adjust_root_pointer_closure, |
|
340 false, // do not walk code |
336 &adjust_root_pointer_closure); |
341 &adjust_root_pointer_closure); |
337 |
342 |
338 // Now adjust pointers in remaining weak roots. (All of which should |
343 // Now adjust pointers in remaining weak roots. (All of which should |
339 // have been cleared if they pointed to non-surviving objects.) |
344 // have been cleared if they pointed to non-surviving objects.) |
|
345 CodeBlobToOopClosure adjust_code_pointer_closure(&adjust_pointer_closure, |
|
346 /*do_marking=*/ false); |
340 gch->gen_process_weak_roots(&adjust_root_pointer_closure, |
347 gch->gen_process_weak_roots(&adjust_root_pointer_closure, |
|
348 &adjust_code_pointer_closure, |
341 &adjust_pointer_closure); |
349 &adjust_pointer_closure); |
342 |
350 |
343 adjust_marks(); |
351 adjust_marks(); |
344 GenAdjustPointersClosure blk; |
352 GenAdjustPointersClosure blk; |
345 gch->generation_iterate(&blk, true); |
353 gch->generation_iterate(&blk, true); |