< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/spi/JavaConstantFieldProvider.java
Print this page
*** 22,31 ****
--- 22,33 ----
*/
package org.graalvm.compiler.core.common.spi;
+ import java.util.Arrays;
+
import org.graalvm.compiler.debug.GraalError;
import org.graalvm.compiler.options.Option;
import org.graalvm.compiler.options.OptionKey;
import jdk.vm.ci.meta.JavaConstant;
*** 44,56 ****
public static final OptionKey<Boolean> TrustFinalDefaultFields = new OptionKey<>(true);
}
protected JavaConstantFieldProvider(MetaAccessProvider metaAccess) {
try {
! this.stringValueField = metaAccess.lookupJavaField(String.class.getDeclaredField("value"));
! this.stringHashField = metaAccess.lookupJavaField(String.class.getDeclaredField("hash"));
! } catch (NoSuchFieldException | SecurityException e) {
throw new GraalError(e);
}
}
@Override
--- 46,75 ----
public static final OptionKey<Boolean> TrustFinalDefaultFields = new OptionKey<>(true);
}
protected JavaConstantFieldProvider(MetaAccessProvider metaAccess) {
try {
! ResolvedJavaType stringType = metaAccess.lookupJavaType(String.class);
! ResolvedJavaField[] stringFields = stringType.getInstanceFields(false);
! ResolvedJavaField valueField = null;
! ResolvedJavaField hashField = null;
! for (ResolvedJavaField field : stringFields) {
! if (field.getName().equals("value")) {
! valueField = field;
! } else if (field.getName().equals("hash")) {
! hashField = field;
! }
! }
! if (valueField == null) {
! throw new GraalError("missing field value " + Arrays.toString(stringFields));
! }
! if (hashField == null) {
! throw new GraalError("missing field hash " + Arrays.toString(stringFields));
! }
! stringValueField = valueField;
! stringHashField = hashField;
! } catch (SecurityException e) {
throw new GraalError(e);
}
}
@Override
< prev index next >