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