equal
deleted
inserted
replaced
1485 // get unmarked objects in the roots. |
1485 // get unmarked objects in the roots. |
1486 |
1486 |
1487 if (!cancelled_gc()) { |
1487 if (!cancelled_gc()) { |
1488 concurrent_mark()->finish_mark_from_roots(/* full_gc = */ false); |
1488 concurrent_mark()->finish_mark_from_roots(/* full_gc = */ false); |
1489 |
1489 |
1490 if (has_forwarded_objects()) { |
1490 // Degen may be caused by failed evacuation of roots |
1491 concurrent_mark()->update_roots(ShenandoahPhaseTimings::update_roots); |
1491 if (is_degenerated_gc_in_progress() && has_forwarded_objects()) { |
|
1492 concurrent_mark()->update_roots(ShenandoahPhaseTimings::degen_gc_update_roots); |
|
1493 } |
|
1494 |
|
1495 if (ShenandoahVerify) { |
|
1496 verifier()->verify_roots_no_forwarded(); |
1492 } |
1497 } |
1493 |
1498 |
1494 stop_concurrent_marking(); |
1499 stop_concurrent_marking(); |
1495 |
1500 |
1496 { |
1501 { |
1538 if (ShenandoahPacing) { |
1543 if (ShenandoahPacing) { |
1539 pacer()->setup_for_evac(); |
1544 pacer()->setup_for_evac(); |
1540 } |
1545 } |
1541 |
1546 |
1542 if (ShenandoahVerify) { |
1547 if (ShenandoahVerify) { |
|
1548 verifier()->verify_roots_no_forwarded(); |
1543 verifier()->verify_during_evacuation(); |
1549 verifier()->verify_during_evacuation(); |
1544 } |
1550 } |
1545 } else { |
1551 } else { |
1546 if (ShenandoahVerify) { |
1552 if (ShenandoahVerify) { |
1547 verifier()->verify_after_concmark(); |
1553 verifier()->verify_after_concmark(); |
2174 clear_cancelled_gc(); |
2180 clear_cancelled_gc(); |
2175 } |
2181 } |
2176 assert(!cancelled_gc(), "Should have been done right before"); |
2182 assert(!cancelled_gc(), "Should have been done right before"); |
2177 |
2183 |
2178 concurrent_mark()->update_roots(is_degenerated_gc_in_progress() ? |
2184 concurrent_mark()->update_roots(is_degenerated_gc_in_progress() ? |
2179 ShenandoahPhaseTimings::degen_gc_update_roots: |
2185 ShenandoahPhaseTimings::degen_gc_update_roots: |
2180 ShenandoahPhaseTimings::final_update_refs_roots); |
2186 ShenandoahPhaseTimings::final_update_refs_roots); |
2181 |
2187 |
2182 ShenandoahGCPhase final_update_refs(ShenandoahPhaseTimings::final_update_refs_recycle); |
2188 ShenandoahGCPhase final_update_refs(ShenandoahPhaseTimings::final_update_refs_recycle); |
2183 |
2189 |
2184 trash_cset_regions(); |
2190 trash_cset_regions(); |
2185 set_has_forwarded_objects(false); |
2191 set_has_forwarded_objects(false); |
2186 set_update_refs_in_progress(false); |
2192 set_update_refs_in_progress(false); |
2187 |
2193 |
2188 if (ShenandoahVerify) { |
2194 if (ShenandoahVerify) { |
|
2195 verifier()->verify_roots_no_forwarded(); |
2189 verifier()->verify_after_updaterefs(); |
2196 verifier()->verify_after_updaterefs(); |
2190 } |
2197 } |
2191 |
2198 |
2192 if (VerifyAfterGC) { |
2199 if (VerifyAfterGC) { |
2193 Universe::verify(); |
2200 Universe::verify(); |