280 trace("3"); |
280 trace("3"); |
281 |
281 |
282 // Need new claim bits for the pointer adjustment tracing. |
282 // Need new claim bits for the pointer adjustment tracing. |
283 ClassLoaderDataGraph::clear_claimed_marks(); |
283 ClassLoaderDataGraph::clear_claimed_marks(); |
284 |
284 |
285 // Because the two closures below are created statically, cannot |
285 // Because the closure below is created statically, we cannot |
286 // use OopsInGenClosure constructor which takes a generation, |
286 // use OopsInGenClosure constructor which takes a generation, |
287 // as the Universe has not been created when the static constructors |
287 // as the Universe has not been created when the static constructors |
288 // are run. |
288 // are run. |
289 adjust_root_pointer_closure.set_orig_generation(gch->get_gen(level)); |
|
290 adjust_pointer_closure.set_orig_generation(gch->get_gen(level)); |
289 adjust_pointer_closure.set_orig_generation(gch->get_gen(level)); |
291 |
290 |
292 gch->gen_process_strong_roots(level, |
291 gch->gen_process_strong_roots(level, |
293 false, // Younger gens are not roots. |
292 false, // Younger gens are not roots. |
294 true, // activate StrongRootsScope |
293 true, // activate StrongRootsScope |
295 false, // not scavenging |
294 false, // not scavenging |
296 SharedHeap::SO_AllClasses, |
295 SharedHeap::SO_AllClasses, |
297 &adjust_root_pointer_closure, |
296 &adjust_pointer_closure, |
298 false, // do not walk code |
297 false, // do not walk code |
299 &adjust_root_pointer_closure, |
298 &adjust_pointer_closure, |
300 &adjust_klass_closure); |
299 &adjust_klass_closure); |
301 |
300 |
302 // Now adjust pointers in remaining weak roots. (All of which should |
301 // Now adjust pointers in remaining weak roots. (All of which should |
303 // have been cleared if they pointed to non-surviving objects.) |
302 // have been cleared if they pointed to non-surviving objects.) |
304 CodeBlobToOopClosure adjust_code_pointer_closure(&adjust_pointer_closure, |
303 CodeBlobToOopClosure adjust_code_pointer_closure(&adjust_pointer_closure, |
305 /*do_marking=*/ false); |
304 /*do_marking=*/ false); |
306 gch->gen_process_weak_roots(&adjust_root_pointer_closure, |
305 gch->gen_process_weak_roots(&adjust_pointer_closure, |
307 &adjust_code_pointer_closure, |
306 &adjust_code_pointer_closure); |
308 &adjust_pointer_closure); |
|
309 |
307 |
310 adjust_marks(); |
308 adjust_marks(); |
311 GenAdjustPointersClosure blk; |
309 GenAdjustPointersClosure blk; |
312 gch->generation_iterate(&blk, true); |
310 gch->generation_iterate(&blk, true); |
313 } |
311 } |