< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp

Print this page
rev 55429 : 8226413: Shenandoah: Separate root scanner for SH::object_iterate()

*** 1277,1294 **** // Reset bitmap _aux_bit_map.clear(); Stack<oop,mtGC> oop_stack; ! // First, we process all GC roots. This populates the work stack with initial objects. ! ShenandoahAllRootScanner rp(1, ShenandoahPhaseTimings::_num_phases); ObjectIterateScanRootClosure oops(&_aux_bit_map, &oop_stack); if (unload_classes()) { ! rp.strong_roots_do_unchecked(&oops); } else { ! rp.roots_do_unchecked(&oops); } // Work through the oop stack to traverse heap. while (! oop_stack.is_empty()) { oop obj = oop_stack.pop(); --- 1277,1294 ---- // Reset bitmap _aux_bit_map.clear(); Stack<oop,mtGC> oop_stack; ! // First, we process GC roots according to current GC cycle. This populates the work stack with initial objects. ! ShenandoahHeapIterationRootScanner rp; ObjectIterateScanRootClosure oops(&_aux_bit_map, &oop_stack); if (unload_classes()) { ! rp.strong_roots_do(&oops); } else { ! rp.roots_do(&oops); } // Work through the oop stack to traverse heap. while (! oop_stack.is_empty()) { oop obj = oop_stack.pop();
< prev index next >