Summary
Obsolete the broken -XX:-InsertMemBarAfterArraycopy C2 flag.
Problem
The flag is enabled by default. Disabling the flag causes crashes during C2 compilation or generation of invalid code.
Solution
The InsertMemBarAfterArraycopy 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 obsolete:
diff -r bdc20ee1a68d src/hotspot/share/runtime/arguments.cpp
--- a/src/hotspot/share/runtime/arguments.cpp Fri Sep 04 23:51:26 2020 -0400
+++ b/src/hotspot/share/runtime/arguments.cpp Tue Sep 08 08:15:08 2020 +0200
@@ -553,6 +553,7 @@
{ "UseNewFieldLayout", JDK_Version::jdk(15), JDK_Version::jdk(16), JDK_Version::jdk(17) },
{ "UseSemaphoreGCThreadsSynchronization", JDK_Version::undefined(), JDK_Version::jdk(16), JDK_Version::jdk(17) },
{ "ForceNUMA", JDK_Version::jdk(15), JDK_Version::jdk(16), JDK_Version::jdk(17) },
+ { "InsertMemBarAfterArraycopy", JDK_Version::undefined(), JDK_Version::jdk(16), JDK_Version::jdk(17) },
#ifdef TEST_VERIFY_SPECIAL_JVM_FLAGS
// These entries will generate build errors. Their purpose is to test the macros.
Remove it from C2 code:
diff -r bdc20ee1a68d src/hotspot/share/opto/c2_globals.hpp
--- a/src/hotspot/share/opto/c2_globals.hpp Fri Sep 04 23:51:26 2020 -0400
+++ b/src/hotspot/share/opto/c2_globals.hpp Tue Sep 08 08:15:08 2020 +0200
@@ -384,9 +384,6 @@
product(bool, UseOnlyInlinedBimorphic, true, \
"Don't use BimorphicInlining if can't inline a second method") \
\
- product(bool, InsertMemBarAfterArraycopy, true, \
- "Insert memory barrier after arraycopy call") \
- \
develop(bool, SubsumeLoads, true, \
"Attempt to compile while subsuming loads into machine " \
"instructions.") \
- csr of
-
JDK-8252889 Obsolete -XX:+InsertMemBarAfterArraycopy
-
- Resolved
-