RFR (XS) 8243395: Shenandoah: demote guarantee in ShenandoahPhaseTimings::record_workers_end

Aleksey Shipilev shade at redhat.com
Wed Apr 22 13:01:27 UTC 2020


RFE:
  https://bugs.openjdk.java.net/browse/JDK-8243395

It has the guarantee() block that verifies the per-thread worker times are only added to relevant
phases. There is no reason to have it as guarantee and expose it in release bits, and it is exposed
on critical path during GC pauses. assert should be enough.

Fix:

diff -r d380fc43bcbb -r c2d54a087de0 src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.cpp
--- a/src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.cpp        Wed Apr 22 13:48:28 2020 +0200
+++ b/src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.cpp        Wed Apr 22 13:50:26 2020 +0200
@@ -73,16 +73,17 @@
     return;
   }

-  guarantee(phase == init_evac ||
-            phase == scan_roots ||
-            phase == update_roots ||
-            phase == final_update_refs_roots ||
-            phase == full_gc_roots ||
-            phase == degen_gc_update_roots ||
-            phase == full_gc_purge_par ||
-            phase == purge_par ||
-            phase == _num_phases,
-            "only in these phases we can add per-thread phase times");
+  assert(phase == init_evac ||
+         phase == scan_roots ||
+         phase == update_roots ||
+         phase == final_update_refs_roots ||
+         phase == full_gc_roots ||
+         phase == degen_gc_update_roots ||
+         phase == full_gc_purge_par ||
+         phase == purge_par ||
+         phase == _num_phases,
+         "Phase should accept accept per-thread phase times: %s", phase_name(phase));
+
   if (phase != _num_phases) {
     double s = 0;
     for (uint i = 1; i < GCParPhasesSentinel; i++) {

Testing: hotspot_gc_shenandoah

-- 
Thanks,
-Aleksey



More information about the shenandoah-dev mailing list