Summary
-------
Obsolete the -XX:+LIRFillDelaySlot flag.
Problem
-------
After the removal of Solaris and SPARC in JDK-8241787 the LIRFillDelaySlot flag no longer has any relevant effect and should be removed. Since the flag was only really used for SPARC the flag will go directly to obsolete, skipping the deprecation step.
Solution
--------
The LIRFillDelaySlot flag will be obsoleted, meaning it will still be recognized but a warning will be generated at startup if it is specified on the command line.
Specification
-------------
Mark the flag as obsoleted:
diff -r 99b3e9be062a src/hotspot/share/runtime/arguments.cpp
--- a/src/hotspot/share/runtime/arguments.cpp Wed May 27 14:31:23 2020 -0700
+++ b/src/hotspot/share/runtime/arguments.cpp Wed May 27 15:31:59 2020 -0700
@@ -564,6 +564,7 @@
{ "UseBarriersForVolatile", JDK_Version::undefined(), JDK_Version::jdk(15), JDK_Version::jdk(16) },
#endif
{ "UseLWPSynchronization", JDK_Version::undefined(), JDK_Version::jdk(15), JDK_Version::jdk(16) },
+ { "LIRFillDelaySlots", JDK_Version::undefined(), JDK_Version::jdk(15), JDK_Version::jdk(16) },
#ifdef TEST_VERIFY_SPECIAL_JVM_FLAGS
// These entries will generate build errors. Their purpose is to test the macros.
And remove it from the C1 global flags:
diff -r 99b3e9be062a src/hotspot/share/c1/c1_globals.hpp
--- a/src/hotspot/share/c1/c1_globals.hpp Wed May 27 14:31:23 2020 -0700
+++ b/src/hotspot/share/c1/c1_globals.hpp Wed May 27 15:31:59 2020 -0700
@@ -211,9 +211,6 @@
develop(bool, LIRTraceExecution, false, \
"add LIR code which logs the execution of blocks") \
\
- product_pd(bool, LIRFillDelaySlots, \
- "fill delays on on SPARC with LIR") \
- \
develop_pd(bool, CSEArrayLength, \
"Create separate nodes for length in array accesses") \
\
Remove all the platform specific flag initialization code, for example for x86 (the same pattern repeats for the other CPU architectures):
diff -r 99b3e9be062a src/hotspot/cpu/x86/c1_globals_x86.hpp
--- a/src/hotspot/cpu/x86/c1_globals_x86.hpp Wed May 27 14:31:23 2020 -0700
+++ b/src/hotspot/cpu/x86/c1_globals_x86.hpp Wed May 27 15:31:59 2020 -0700
@@ -60,7 +60,6 @@
#endif // !TIERED
define_pd_global(bool, UseTypeProfile, false);
-define_pd_global(bool, LIRFillDelaySlots, false);
define_pd_global(bool, OptimizeSinglePrecision, true );
define_pd_global(bool, CSEArrayLength, false);
define_pd_global(bool, TwoOperandLIRForm, true );
And finally, remove the only actual use of the flag:
diff -r 99b3e9be062a src/hotspot/share/c1/c1_LIR.hpp
--- a/src/hotspot/share/c1/c1_LIR.hpp Wed May 27 14:31:23 2020 -0700
+++ b/src/hotspot/share/c1/c1_LIR.hpp Wed May 27 15:31:59 2020 -0700
@@ -1805,7 +1805,7 @@
LIR_OpDelay(LIR_Op* op, CodeEmitInfo* info):
LIR_Op(lir_delay_slot, LIR_OprFact::illegalOpr, info),
_op(op) {
- assert(op->code() == lir_nop || LIRFillDelaySlots, "should be filling with nops");
+ assert(op->code() == lir_nop, "should be filling with nops");
}
virtual void emit_code(LIR_Assembler* masm);
virtual LIR_OpDelay* as_OpDelay() { return this; }