< 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 >