Loop strip mining to decreases safepoint poll frequency

Roland Westrelin rwestrel at redhat.com
Wed Mar 1 15:53:59 UTC 2017


>  -UseCLS:         no safepoints, no mining
>  -UseCLS LSM=0:   no safepoints, no mining
>  -UseCLS LSM>=1:  illegal?
>  +UseCLS:         safepoints + mining
>  +UseCLS LSM=0:   illegal?
>  +UseCLS LSM=1:   safepoints, but no mining
>  +UseCLS LSM>=1:  safepoints + mining

Something like this, then?

diff --git a/src/share/vm/runtime/arguments.cpp b/src/share/vm/runtime/arguments.cpp
--- a/src/share/vm/runtime/arguments.cpp
+++ b/src/share/vm/runtime/arguments.cpp
@@ -2630,8 +2630,16 @@
     }
     FLAG_SET_CMDLINE(bool, PostLoopMultiversioning, false);
   }
-  if (UseCountedLoopSafepoints) {
+  if (UseCountedLoopSafepoints && LoopStripMiningIter == 0) {
+    if (!FLAG_IS_DEFAULT(UseCountedLoopSafepoints) && !FLAG_IS_DEFAULT(LoopStripMiningIter)) {
+      warning("When counted loop safepoints are enabled, LoopStripMiningIter must be at least 1 (a safepoint every 1 iteration): setting it to 1");
+    }
     LoopStripMiningIter = 1;
+  } else if (!UseCountedLoopSafepoints && LoopStripMiningIter > 0) {
+    if (!FLAG_IS_DEFAULT(UseCountedLoopSafepoints) && !FLAG_IS_DEFAULT(LoopStripMiningIter)) {
+      warning("Disabling counted safepoints implies no loop strip mining: setting LoopStripMiningIter to 0");
+    }
+    LoopStripMiningIter = 0;
   }
 #endif
   return status;

Roland.


More information about the shenandoah-dev mailing list