Skip to content

Commit 982e8b7

Browse files
committed
Persist missing base layer types.
1 parent de6d8d4 commit 982e8b7

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/heap/ImageLayerWriter.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@
9797
import jdk.graal.compiler.nodes.EncodedGraph;
9898
import jdk.graal.compiler.nodes.spi.IdentityHashCodeProvider;
9999
import jdk.graal.compiler.util.ObjectCopier;
100+
import jdk.vm.ci.meta.ConstantReflectionProvider;
100101
import jdk.vm.ci.meta.JavaConstant;
101102
import jdk.vm.ci.meta.JavaKind;
102103
import jdk.vm.ci.meta.MethodHandleAccessProvider.IntrinsicMethod;
@@ -151,6 +152,7 @@ public void ensureFieldPersisted(AnalysisField field) {
151152
public void ensureConstantPersisted(ImageHeapConstant constant) {
152153
assert !sealed;
153154
constantsToPersist.add(constant);
155+
afterConstantAdded(constant);
154156
}
155157

156158
protected record ConstantParent(int constantId, int index) {
@@ -433,6 +435,16 @@ protected void afterMethodAdded(AnalysisMethod method) {
433435
imageLayerWriterHelper.afterMethodAdded(method);
434436
}
435437

438+
private void afterConstantAdded(ImageHeapConstant constant) {
439+
ensureTypePersisted(constant.getType());
440+
/* If this is a Class constant persist the corresponding type. */
441+
ConstantReflectionProvider constantReflection = aUniverse.getBigbang().getConstantReflectionProvider();
442+
AnalysisType typeFromClassConstant = (AnalysisType) constantReflection.asJavaType(constant);
443+
if (typeFromClassConstant != null) {
444+
ensureTypePersisted(typeFromClassConstant);
445+
}
446+
}
447+
436448
private void scanConstantReferencedObjects(ImageHeapConstant constant, Collection<ImageHeapConstant> discoveredConstants) {
437449
if (Objects.requireNonNull(constant) instanceof ImageHeapInstance instance) {
438450
if (instance.isReaderInstalled()) {

0 commit comments

Comments
 (0)