src/share/vm/memory/genMarkSweep.cpp

changeset 1424
148e5441d916
parent 892
27a80744a83b
child 1428
54b3b351d6f9
equal deleted inserted replaced
1422:00977607da34 1424:148e5441d916
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);

mercurial