Skip to content

Commit a8aada4

Browse files
committed
Store image code info in isolate data section
1 parent bb923a1 commit a8aada4

File tree

1 file changed

+4
-7
lines changed

1 file changed

+4
-7
lines changed

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/code/ImageCodeInfo.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,14 @@
3131
import org.graalvm.nativeimage.Platform;
3232
import org.graalvm.nativeimage.Platforms;
3333
import org.graalvm.nativeimage.c.function.CodePointer;
34-
import org.graalvm.nativeimage.c.struct.SizeOf;
3534
import org.graalvm.word.ComparableWord;
3635
import org.graalvm.word.UnsignedWord;
3736

3837
import com.oracle.svm.core.BuildPhaseProvider.AfterCompilation;
3938
import com.oracle.svm.core.MemoryWalker;
4039
import com.oracle.svm.core.Uninterruptible;
40+
import com.oracle.svm.core.c.CIsolateData;
41+
import com.oracle.svm.core.c.CIsolateDataFactory;
4142
import com.oracle.svm.core.c.NonmovableArray;
4243
import com.oracle.svm.core.c.NonmovableArrays;
4344
import com.oracle.svm.core.c.NonmovableObjectArray;
@@ -48,8 +49,7 @@
4849
public class ImageCodeInfo {
4950
public static final String CODE_INFO_NAME = "image code";
5051

51-
/** Memory in the image heap to contain our {@link CodeInfo} structure at runtime. */
52-
private final byte[] runtimeCodeInfoData;
52+
private final CIsolateData<CodeInfoImpl> runtimeCodeInfo = CIsolateDataFactory.createStruct("runtimeCodeInfo", CodeInfoImpl.class);
5353

5454
@Platforms(Platform.HOSTED_ONLY.class) //
5555
private final HostedImageCodeInfo hostedImageCodeInfo = new HostedImageCodeInfo();
@@ -78,14 +78,11 @@ public class ImageCodeInfo {
7878
NonmovableArrays.setObject(objfields, CodeInfoImpl.TETHER_OBJFIELD, new CodeInfoTether(true));
7979
// no InstalledCode for image code
8080
objectFields = NonmovableArrays.getHostedArray(objfields);
81-
82-
int runtimeInfoSize = SizeOf.get(CodeInfoImpl.class);
83-
runtimeCodeInfoData = new byte[runtimeInfoSize];
8481
}
8582

8683
@Uninterruptible(reason = "Executes during isolate creation.")
8784
CodeInfo prepareCodeInfo() {
88-
CodeInfoImpl info = NonmovableArrays.addressOf(NonmovableArrays.fromImageHeap(runtimeCodeInfoData), 0);
85+
CodeInfoImpl info = runtimeCodeInfo.get();
8986
assert info.getCodeStart().isNull() : "already initialized";
9087

9188
info.setObjectFields(NonmovableArrays.fromImageHeap(objectFields));

0 commit comments

Comments
 (0)