Summary
-------
The HotSpot command line option -XX:+UseEmptySlotsInSupers, that implemented the pre JDK 15 object layout format should be deprecated.
Problem
-------
This option adds extra cases and code to the HotSpot object layout code which is being modified for JEP 401.
Solution
--------
We should deprecate and remove this option, since it affects something that Java users should be not be able to observe.
Specification
-------------
diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp
index 9ff8b878692..2ea044a97df 100644
--- a/src/hotspot/share/runtime/arguments.cpp
+++ b/src/hotspot/share/runtime/arguments.cpp
@@ -502,6 +502,7 @@ static SpecialFlag const special_jvm_flags[] = {
{ "UseSharedSpaces", JDK_Version::jdk(18), JDK_Version::jdk(19), JDK_Version::undefined() },
{ "RegisterFinalizersAtInit", JDK_Version::jdk(22), JDK_Version::jdk(23), JDK_Version::jdk(24) },
{ "PreserveAllAnnotations", JDK_Version::jdk(23), JDK_Version::jdk(24), JDK_Version::jdk(25) },
+ { "UseEmptySlotsInSupers", JDK_Version::jdk(23), JDK_Version::jdk(24), JDK_Version::jdk(25) },
#if defined(X86)
{ "UseRTMLocking", JDK_Version::jdk(23), JDK_Version::jdk(24), JDK_Version::jdk(25) },
{ "UseRTMDeopt", JDK_Version::jdk(23), JDK_Version::jdk(24), JDK_Version::jdk(25) },
diff --git a/src/hotspot/share/runtime/globals.hpp b/src/hotspot/share/runtime/globals.hpp
index 575d9a3de36..6b9e5858fd5 100644
--- a/src/hotspot/share/runtime/globals.hpp
+++ b/src/hotspot/share/runtime/globals.hpp
@@ -1958,7 +1958,8 @@ const int ObjectAlignmentInBytes = 8;
"Use platform unstable time where supported for timestamps only") \
\
product(bool, UseEmptySlotsInSupers, true, \
- "Allow allocating fields in empty slots of super-classes") \
+ "(Deprecated) Allow allocating fields in empty slots of " \
+ "super-classes") \
\
product(bool, DeoptimizeNMethodBarriersALot, false, DIAGNOSTIC, \
"Make nmethod barriers deoptimise a lot.") \