On Thu, 29 Aug 2024 18:50:42 GMT, Coleen Phillimore <cole...@openjdk.org> wrote:

>> Move JVM implementation access flags that are not specified by the classfile 
>> format into Klass so we can shrink AccessFlags to u2 in a future change.
>> 
>> Tested with tier1-7.
>> 
>> NOTE: there are arm, ppc and s390 changes to this that are just a guess.  
>> Also, graal changes.
>
> Coleen Phillimore has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Add in graal flags and a comment.

src/hotspot/share/jvmci/vmStructs_jvmci.cpp line 274:

> 272:   nonstatic_field(Klass,                       _bitmap,                  
>                      uintx)                                 \
> 273:   nonstatic_field(Klass,                       _hash_slot,               
>                      uint8_t)                               \
> 274:   nonstatic_field(Klass,                       _misc_flags._flags,       
>                      u1)                                    \

Can we export `_misc_flags` instead, similar to `_access_flags`?

diff --git a/src/hotspot/share/jvmci/vmStructs_jvmci.cpp 
b/src/hotspot/share/jvmci/vmStructs_jvmci.cpp
index 9d65268f0fe..6170647186c 100644
--- a/src/hotspot/share/jvmci/vmStructs_jvmci.cpp
+++ b/src/hotspot/share/jvmci/vmStructs_jvmci.cpp
@@ -268,10 +268,10 @@
   nonstatic_field(Klass,                       _java_mirror,                   
               OopHandle)                             \
   nonstatic_field(Klass,                       _modifier_flags,                
               jint)                                  \
   nonstatic_field(Klass,                       _access_flags,                  
               AccessFlags)                           \
+  nonstatic_field(Klass,                       _misc_flags,                    
               KlassFlags)                            \
   nonstatic_field(Klass,                       _class_loader_data,             
               ClassLoaderData*)                      \
   nonstatic_field(Klass,                       _bitmap,                        
               uintx)                                 \
   nonstatic_field(Klass,                       _hash_slot,                     
               uint8_t)                               \
-  nonstatic_field(Klass,                       _misc_flags._flags,             
               u1)                                    \
                                                                                
                                                      \
   nonstatic_field(LocalVariableTableElement,   start_bci,                      
               u2)                                    \
   nonstatic_field(LocalVariableTableElement,   length,                         
               u2)                                    \
diff --git 
a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java
 
b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java
index 3de4de7d42d..91c9e73b532 100644
--- 
a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java
+++ 
b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java
@@ -170,6 +170,11 @@ public int getAccessFlags() {
         return UNSAFE.getInt(getKlassPointer() + 
config.klassAccessFlagsOffset);
     }
 
+    public int getMiscFlags() {
+        HotSpotVMConfig config = config();
+        return UNSAFE.getInt(getKlassPointer() + config.klassMiscFlagsOffset);
+    }
+
     @Override
     public ResolvedJavaType getComponentType() {
         if (componentType == null) {
@@ -373,9 +378,7 @@ public AssumptionResult<Boolean> hasFinalizableSubclass() {
 
     @Override
     public boolean hasFinalizer() {
-        HotSpotVMConfig config = config();
-        int miscFlags = UNSAFE.getByte(getKlassPointer() + 
config.klassMiscFlagsOffset);
-        return (miscFlags & config().jvmAccHasFinalizer) != 0;
+        return (getMiscFlags() & config().jvmAccHasFinalizer) != 0;
     }
 
     @Override
@@ -1112,9 +1115,7 @@ public ResolvedJavaField resolveField(UnresolvedJavaField 
unresolvedJavaField, R
 
     @Override
     public boolean isCloneableWithAllocation() {
-        HotSpotVMConfig config = config();
-        int miscFlags = UNSAFE.getByte(getKlassPointer() + 
config.klassMiscFlagsOffset);
-        return (miscFlags & config().jvmAccIsCloneableFast) != 0;
+        return (getMiscFlags() & config().jvmAccIsCloneableFast) != 0;
     }
 
     @Override
diff --git 
a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotVMConfig.java 
b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotVMConfig.java
index 16d9cf3625e..6f1c325ee47 100644
--- 
a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotVMConfig.java
+++ 
b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotVMConfig.java
@@ -85,6 +85,7 @@ String getHostArchitectureName() {
     final int javaMirrorOffset = getFieldOffset("Klass::_java_mirror", 
Integer.class, "OopHandle");
 
     final int klassAccessFlagsOffset = getFieldOffset("Klass::_access_flags", 
Integer.class, "AccessFlags");
+    final int klassMiscFlagsOffset = getFieldOffset("Klass::_misc_flags", 
Integer.class, "KlassFlags");
     final int klassLayoutHelperOffset = 
getFieldOffset("Klass::_layout_helper", Integer.class, "jint");
 
     final int klassLayoutHelperNeutralValue = 
getConstant("Klass::_lh_neutral_value", Integer.class);
@@ -98,7 +99,6 @@ String getHostArchitectureName() {
     final int instanceKlassFieldInfoStreamOffset = 
getFieldOffset("InstanceKlass::_fieldinfo_stream", Integer.class, "Array<u1>*");
     final int instanceKlassAnnotationsOffset = 
getFieldOffset("InstanceKlass::_annotations", Integer.class, "Annotations*");
     final int instanceKlassMiscFlagsOffset = 
getFieldOffset("InstanceKlass::_misc_flags._flags", Integer.class, "u2");
-    final int klassMiscFlagsOffset = 
getFieldOffset("Klass::_misc_flags._flags", Integer.class, "u1");
     final int klassVtableStartOffset = 
getFieldValue("CompilerToVM::Data::Klass_vtable_start_offset", Integer.class, 
"int");
     final int klassVtableLengthOffset = 
getFieldValue("CompilerToVM::Data::Klass_vtable_length_offset", Integer.class, 
"int");

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/20719#discussion_r1738703831

Reply via email to