equal
deleted
inserted
replaced
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"); |