@@ -140,13 +140,13 @@ public static ObjectLayout createObjectLayout() {
140
140
public static ObjectLayout createObjectLayout (JavaKind referenceKind , boolean disableOptionalIdentityHash ) {
141
141
SubstrateTargetDescription target = ConfigurationValues .getTarget ();
142
142
int referenceSize = target .arch .getPlatformKind (referenceKind ).getSizeInBytes ();
143
- int headerSize = referenceSize ;
144
143
int intSize = target .arch .getPlatformKind (JavaKind .Int ).getSizeInBytes ();
145
144
int objectAlignment = 8 ;
146
145
147
- int headerOffset = 0 ;
146
+ int hubOffset = 0 ;
147
+ int headerSize = hubOffset + referenceSize ;
148
+
148
149
int identityHashCodeOffset ;
149
- int firstFieldOffset ;
150
150
if (!disableOptionalIdentityHash && SubstrateOptions .SpawnIsolates .getValue () && headerSize + referenceSize <= objectAlignment ) {
151
151
/*
152
152
* References are relative to the heap base, so we should be able to use fewer bits in
@@ -158,15 +158,18 @@ public static ObjectLayout createObjectLayout(JavaKind referenceKind, boolean di
158
158
* individual object was assigned an identity hash code after allocation.
159
159
*/
160
160
identityHashCodeOffset = -1 ;
161
- firstFieldOffset = headerOffset + headerSize ;
162
161
} else { // need all object header bits except for lowest-order bits freed up by alignment
163
- identityHashCodeOffset = headerOffset + referenceSize ;
164
- firstFieldOffset = identityHashCodeOffset + intSize ;
162
+ identityHashCodeOffset = headerSize ;
163
+ headerSize += intSize ;
165
164
}
166
- int arrayLengthOffset = firstFieldOffset ;
165
+
166
+ headerSize += SubstrateOptions .AdditionalHeaderBytes .getValue ();
167
+
168
+ int firstFieldOffset = headerSize ;
169
+ int arrayLengthOffset = headerSize ;
167
170
int arrayBaseOffset = arrayLengthOffset + intSize ;
168
171
169
- return new ObjectLayout (target , referenceSize , objectAlignment , headerOffset , firstFieldOffset , arrayLengthOffset , arrayBaseOffset , identityHashCodeOffset );
172
+ return new ObjectLayout (target , referenceSize , objectAlignment , hubOffset , firstFieldOffset , arrayLengthOffset , arrayBaseOffset , identityHashCodeOffset );
170
173
}
171
174
172
175
public SVMHost createHostVM (OptionValues options , ClassLoader classLoader , ClassInitializationSupport classInitializationSupport ,
0 commit comments