Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion common.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"jdks": {
"oraclejdk11": {"name": "jpg-jdk", "version": "11.0.11", "build_id": "9", "release": true, "platformspecific": true, "extrabundles": ["static-libs"] },

"oraclejdk17": {"name": "jpg-jdk", "version": "17.0.6", "build_id": "9", "release": true, "platformspecific": true, "extrabundles": ["static-libs"]},
"oraclejdk17": {"name": "jpg-jdk", "version": "17.0.7", "build_id": "8", "release": true, "platformspecific": true, "extrabundles": ["static-libs"]},
"labsjdk-ce-17": {"name": "labsjdk", "version": "ce-17.0.7+4-jvmci-23.0-b10", "platformspecific": true },
"labsjdk-ce-17Debug": {"name": "labsjdk", "version": "ce-17.0.7+4-jvmci-23.0-b10-debug", "platformspecific": true },
"labsjdk-ce-17-llvm": {"name": "labsjdk", "version": "ce-17.0.7+4-jvmci-23.0-b10-sulong", "platformspecific": true },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@
import com.oracle.graal.pointsto.heap.value.ValueSupplier;
import com.oracle.graal.pointsto.meta.AnalysisField;
import com.oracle.graal.pointsto.meta.AnalysisMetaAccess;
import com.oracle.graal.pointsto.meta.UninitializedStaticFieldValueReader;
import com.oracle.graal.pointsto.util.AnalysisError;

import jdk.vm.ci.meta.ConstantReflectionProvider;
import jdk.vm.ci.meta.JavaConstant;
import jdk.vm.ci.meta.ResolvedJavaField;

public class StandaloneImageHeapScanner extends ImageHeapScanner {
private ClassLoader classLoader;
Expand All @@ -65,7 +65,11 @@ protected Class<?> getClass(String className) {
protected ValueSupplier<JavaConstant> readHostedFieldValue(AnalysisField field, JavaConstant receiver) {
ValueSupplier<JavaConstant> ret = super.readHostedFieldValue(field, receiver);
if (ret.get() == null && field.isStatic()) {
JavaConstant constant = UninitializedStaticFieldValueReader.readUninitializedStaticValue(field.wrapped, value -> universe.getSnippetReflection().forObject(value));
ResolvedJavaField wrappedField = field.getWrapped();
JavaConstant constant = wrappedField.getConstantValue();
if (constant == null) {
constant = JavaConstant.defaultForKind(wrappedField.getJavaKind());
}
return ValueSupplier.eagerValue(constant);
} else {
return ret;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
import com.oracle.graal.pointsto.meta.AnalysisField;
import com.oracle.graal.pointsto.meta.AnalysisType;
import com.oracle.graal.pointsto.meta.AnalysisUniverse;
import com.oracle.graal.pointsto.meta.UninitializedStaticFieldValueReader;
import com.oracle.graal.pointsto.standalone.StandaloneHost;

import jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider;
Expand All @@ -50,10 +49,13 @@ public StandaloneConstantReflectionProvider(AnalysisUniverse universe, HotSpotJV

@Override
public final JavaConstant readFieldValue(ResolvedJavaField field, JavaConstant receiver) {
AnalysisField analysisField = (AnalysisField) field;
JavaConstant ret = universe.lookup(super.readFieldValue(analysisField.wrapped, universe.toHosted(receiver)));
ResolvedJavaField wrappedField = ((AnalysisField) field).getWrapped();
JavaConstant ret = universe.lookup(super.readFieldValue(wrappedField, universe.toHosted(receiver)));
if (ret == null) {
ret = UninitializedStaticFieldValueReader.readUninitializedStaticValue(analysisField.wrapped, value -> universe.getSnippetReflection().forObject(value));
ret = wrappedField.getConstantValue();
if (ret == null) {
ret = JavaConstant.defaultForKind(wrappedField.getJavaKind());
}
}
return ret;
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
package com.oracle.svm.hosted.ameta;

import com.oracle.graal.pointsto.meta.AnalysisField;
import com.oracle.graal.pointsto.meta.UninitializedStaticFieldValueReader;
import com.oracle.graal.pointsto.util.GraalAccess;
import com.oracle.svm.core.BuildPhaseProvider;
import com.oracle.svm.core.fieldvaluetransformer.FieldValueTransformerWithAvailability.ValueAvailability;
Expand Down Expand Up @@ -62,7 +61,17 @@ static JavaConstant readFieldValue(MetaAccessProvider metaAccess, ClassInitializ
* is initialized in the hosting HotSpot VM can still be initialized at run time.
*/
if (field.isStatic()) {
return UninitializedStaticFieldValueReader.readUninitializedStaticValue(field, value -> GraalAccess.getOriginalSnippetReflection().forObject(value));
/*
* Use the value from the constant pool attribute for the static field. That is the
* value before the class initializer is executed.
*/
JavaConstant constantValue = field.getConstantValue();
if (constantValue != null) {
return constantValue;
} else {
return JavaConstant.defaultForKind(field.getJavaKind());
}

} else {
/*
* Classes that are initialized at run time must not have instances in the image
Expand Down