From 6cf7f9c4a76b99ed7aa4dc7ee54692331fc73408 Mon Sep 17 00:00:00 2001 From: Aleksey Shipilev Date: Thu, 22 Aug 2024 11:39:47 +0000 Subject: [PATCH] 8338662: Shenandoah: Remove excessive ShenandoahVerifier::verify_during_evacuation Reviewed-by: wkemper, ysr --- .../gc/shenandoah/shenandoahConcurrentGC.cpp | 6 ------ .../gc/shenandoah/shenandoahDegeneratedGC.cpp | 8 ++++---- .../gc/shenandoah/shenandoahVerifier.cpp | 20 ------------------- .../gc/shenandoah/shenandoahVerifier.hpp | 6 +----- 4 files changed, 5 insertions(+), 35 deletions(-) diff --git a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentGC.cpp b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentGC.cpp index 0e18b591037..ed40fecfc1d 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentGC.cpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentGC.cpp @@ -613,12 +613,6 @@ void ShenandoahConcurrentGC::op_final_mark() { // From here on, we need to update references. heap->set_has_forwarded_objects(true); - // Verify before arming for concurrent processing. - // Otherwise, verification can trigger stack processing. - if (ShenandoahVerify) { - heap->verifier()->verify_during_evacuation(); - } - // Arm nmethods/stack for concurrent processing ShenandoahCodeRoots::arm_nmethods_for_evac(); ShenandoahStackWatermark::change_epoch_id(); diff --git a/src/hotspot/share/gc/shenandoah/shenandoahDegeneratedGC.cpp b/src/hotspot/share/gc/shenandoah/shenandoahDegeneratedGC.cpp index 6b597d9b2d7..81d07a414cd 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoahDegeneratedGC.cpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahDegeneratedGC.cpp @@ -276,12 +276,12 @@ void ShenandoahDegenGC::op_prepare_evacuation() { } if (!heap->collection_set()->is_empty()) { + if (ShenandoahVerify) { + heap->verifier()->verify_before_evacuation(); + } + heap->set_evacuation_in_progress(true); heap->set_has_forwarded_objects(true); - - if(ShenandoahVerify) { - heap->verifier()->verify_during_evacuation(); - } } else { if (ShenandoahVerify) { heap->verifier()->verify_after_concmark(); diff --git a/src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp b/src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp index e5db7a9b392..51878772889 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp @@ -661,14 +661,6 @@ void ShenandoahVerifier::verify_at_safepoint(const char *label, enabled = true; expected = ShenandoahHeap::HAS_FORWARDED; break; - case _verify_gcstate_evacuation: - enabled = true; - expected = ShenandoahHeap::HAS_FORWARDED | ShenandoahHeap::EVACUATION; - if (!_heap->is_stw_gc_in_progress()) { - // Only concurrent GC sets this. - expected |= ShenandoahHeap::WEAK_ROOTS; - } - break; case _verify_gcstate_stable: enabled = true; expected = ShenandoahHeap::STABLE; @@ -851,18 +843,6 @@ void ShenandoahVerifier::verify_before_evacuation() { ); } -void ShenandoahVerifier::verify_during_evacuation() { - verify_at_safepoint( - "During Evacuation", - _verify_forwarded_allow, // some forwarded references are allowed - _verify_marked_disable, // walk only roots - _verify_cset_disable, // some cset references are not forwarded yet - _verify_liveness_disable, // liveness data might be already stale after pre-evacs - _verify_regions_disable, // trash regions not yet recycled - _verify_gcstate_evacuation // evacuation is in progress - ); -} - void ShenandoahVerifier::verify_before_updaterefs() { verify_at_safepoint( "Before Updating References", diff --git a/src/hotspot/share/gc/shenandoah/shenandoahVerifier.hpp b/src/hotspot/share/gc/shenandoah/shenandoahVerifier.hpp index dd4eb901a33..1617678d928 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoahVerifier.hpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahVerifier.hpp @@ -133,10 +133,7 @@ public: _verify_gcstate_stable_weakroots, // Nothing is in progress, some objects are forwarded - _verify_gcstate_forwarded, - - // Evacuation is in progress, some objects are forwarded - _verify_gcstate_evacuation + _verify_gcstate_forwarded } VerifyGCState; struct VerifyOptions { @@ -175,7 +172,6 @@ public: void verify_before_concmark(); void verify_after_concmark(); void verify_before_evacuation(); - void verify_during_evacuation(); void verify_before_updaterefs(); void verify_after_updaterefs(); void verify_before_fullgc();