src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp
changeset 55395 9c6d907cefac
parent 55385 2c47220ce9bb
child 55423 970adfac768d
equal deleted inserted replaced
55394:b444bbe5c45c 55395:9c6d907cefac
  1277   Stack<oop,mtGC> oop_stack;
  1277   Stack<oop,mtGC> oop_stack;
  1278 
  1278 
  1279   // First, we process all GC roots. This populates the work stack with initial objects.
  1279   // First, we process all GC roots. This populates the work stack with initial objects.
  1280   ShenandoahAllRootScanner rp(1, ShenandoahPhaseTimings::_num_phases);
  1280   ShenandoahAllRootScanner rp(1, ShenandoahPhaseTimings::_num_phases);
  1281   ObjectIterateScanRootClosure oops(&_aux_bit_map, &oop_stack);
  1281   ObjectIterateScanRootClosure oops(&_aux_bit_map, &oop_stack);
  1282   rp.roots_do_unchecked(&oops);
  1282 
       
  1283   if (unload_classes()) {
       
  1284     rp.strong_roots_do_unchecked(&oops);
       
  1285   } else {
       
  1286     rp.roots_do_unchecked(&oops);
       
  1287   }
  1283 
  1288 
  1284   // Work through the oop stack to traverse heap.
  1289   // Work through the oop stack to traverse heap.
  1285   while (! oop_stack.is_empty()) {
  1290   while (! oop_stack.is_empty()) {
  1286     oop obj = oop_stack.pop();
  1291     oop obj = oop_stack.pop();
  1287     assert(oopDesc::is_oop(obj), "must be a valid oop");
  1292     assert(oopDesc::is_oop(obj), "must be a valid oop");