comparison src/share/vm/memory/genMarkSweep.cpp @ 1000:a1423fe86a18

Merge
author trims
date Fri, 09 Oct 2009 15:18:52 -0700
parents 89e0543e1737 54b3b351d6f9
children 2a1472c30599
comparison
equal deleted inserted replaced
984:6ddec5389232 1000:a1423fe86a18
242 // are run. 242 // are run.
243 follow_root_closure.set_orig_generation(gch->get_gen(level)); 243 follow_root_closure.set_orig_generation(gch->get_gen(level));
244 244
245 gch->gen_process_strong_roots(level, 245 gch->gen_process_strong_roots(level,
246 false, // Younger gens are not roots. 246 false, // Younger gens are not roots.
247 true, // activate StrongRootsScope
247 true, // Collecting permanent generation. 248 true, // Collecting permanent generation.
248 SharedHeap::SO_SystemClasses, 249 SharedHeap::SO_SystemClasses,
249 &follow_root_closure, &follow_root_closure); 250 &follow_root_closure,
251 true, // walk code active on stacks
252 &follow_root_closure);
250 253
251 // Process reference objects found during marking 254 // Process reference objects found during marking
252 { 255 {
253 ref_processor()->setup_policy(clear_all_softrefs); 256 ref_processor()->setup_policy(clear_all_softrefs);
254 ref_processor()->process_discovered_references( 257 ref_processor()->process_discovered_references(
336 adjust_root_pointer_closure.set_orig_generation(gch->get_gen(level)); 339 adjust_root_pointer_closure.set_orig_generation(gch->get_gen(level));
337 adjust_pointer_closure.set_orig_generation(gch->get_gen(level)); 340 adjust_pointer_closure.set_orig_generation(gch->get_gen(level));
338 341
339 gch->gen_process_strong_roots(level, 342 gch->gen_process_strong_roots(level,
340 false, // Younger gens are not roots. 343 false, // Younger gens are not roots.
344 true, // activate StrongRootsScope
341 true, // Collecting permanent generation. 345 true, // Collecting permanent generation.
342 SharedHeap::SO_AllClasses, 346 SharedHeap::SO_AllClasses,
343 &adjust_root_pointer_closure, 347 &adjust_root_pointer_closure,
348 false, // do not walk code
344 &adjust_root_pointer_closure); 349 &adjust_root_pointer_closure);
345 350
346 // Now adjust pointers in remaining weak roots. (All of which should 351 // Now adjust pointers in remaining weak roots. (All of which should
347 // have been cleared if they pointed to non-surviving objects.) 352 // have been cleared if they pointed to non-surviving objects.)
353 CodeBlobToOopClosure adjust_code_pointer_closure(&adjust_pointer_closure,
354 /*do_marking=*/ false);
348 gch->gen_process_weak_roots(&adjust_root_pointer_closure, 355 gch->gen_process_weak_roots(&adjust_root_pointer_closure,
356 &adjust_code_pointer_closure,
349 &adjust_pointer_closure); 357 &adjust_pointer_closure);
350 358
351 adjust_marks(); 359 adjust_marks();
352 GenAdjustPointersClosure blk; 360 GenAdjustPointersClosure blk;
353 gch->generation_iterate(&blk, true); 361 gch->generation_iterate(&blk, true);