changeset 22757:f4c4cc22a31c

tightened signature of ConstantReflectionProvider methods for reading fields
author Doug Simon <doug.simon@oracle.com>
date Sun, 20 Dec 2015 23:15:24 +0100
parents d52d25716994
children a130b51efb07
files jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotConstantReflectionProvider.java jvmci/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ConstantReflectionProvider.java jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TypeUniverse.java
diffstat 3 files changed, 17 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotConstantReflectionProvider.java	Fri Dec 18 00:11:35 2015 -0800
+++ b/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotConstantReflectionProvider.java	Sun Dec 20 23:15:24 2015 +0100
@@ -35,6 +35,7 @@
 import jdk.vm.ci.meta.JavaType;
 import jdk.vm.ci.meta.MemoryAccessProvider;
 import jdk.vm.ci.meta.MethodHandleAccessProvider;
+import jdk.vm.ci.meta.ResolvedJavaField;
 import jdk.vm.ci.meta.ResolvedJavaType;
 import jdk.vm.ci.options.Option;
 import jdk.vm.ci.options.OptionType;
@@ -239,7 +240,7 @@
 
     /**
      * Determines if a static field is constant for the purpose of
-     * {@link #readConstantFieldValue(JavaField, JavaConstant)}.
+     * {@link #readConstantFieldValue(ResolvedJavaField, JavaConstant)}.
      */
     protected boolean isStaticFieldConstant(HotSpotResolvedJavaField staticField) {
         if (staticField.isFinal() || staticField.isStable()) {
@@ -284,7 +285,7 @@
      * The {@code value} field in {@link OptionValue} is considered constant if the type of
      * {@code receiver} is (assignable to) {@link StableOptionValue}.
      */
-    public JavaConstant readConstantFieldValue(JavaField field, JavaConstant receiver) {
+    public JavaConstant readConstantFieldValue(ResolvedJavaField field, JavaConstant receiver) {
         HotSpotResolvedJavaField hotspotField = (HotSpotResolvedJavaField) field;
 
         if (hotspotField.isStatic()) {
@@ -333,7 +334,7 @@
         return null;
     }
 
-    public JavaConstant readFieldValue(JavaField field, JavaConstant receiver) {
+    public JavaConstant readFieldValue(ResolvedJavaField field, JavaConstant receiver) {
         HotSpotResolvedJavaField hotspotField = (HotSpotResolvedJavaField) field;
         if (!hotspotField.isStable()) {
             return readNonStableFieldValue(field, receiver);
@@ -357,7 +358,7 @@
         return null;
     }
 
-    public JavaConstant readStableFieldValue(JavaField field, JavaConstant receiver, boolean isDefaultStable) {
+    public JavaConstant readStableFieldValue(ResolvedJavaField field, JavaConstant receiver, boolean isDefaultStable) {
         JavaConstant fieldValue = readNonStableFieldValue(field, receiver);
         if (fieldValue.isNonNull()) {
             JavaType declaredType = field.getType();
--- a/jvmci/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ConstantReflectionProvider.java	Fri Dec 18 00:11:35 2015 -0800
+++ b/jvmci/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ConstantReflectionProvider.java	Sun Dec 20 23:15:24 2015 +0100
@@ -80,29 +80,31 @@
      * @return the constant value of this field or {@code null} if this field is not considered
      *         constant by the runtime
      */
-    JavaConstant readConstantFieldValue(JavaField field, JavaConstant receiver);
+    JavaConstant readConstantFieldValue(ResolvedJavaField field, JavaConstant receiver);
 
     /**
      * Gets the current value of this field for a given object, if available.
      *
      * There is no guarantee that the same value will be returned by this method for a field unless
-     * the field is considered to be {@linkplain #readConstantFieldValue(JavaField, JavaConstant)
-     * constant} by the runtime.
+     * the field is considered to be
+     * {@linkplain #readConstantFieldValue(ResolvedJavaField, JavaConstant) constant} by the
+     * runtime.
      *
      * @param receiver object from which this field's value is to be read. This value is ignored if
      *            this field is static.
      * @return the value of this field or {@code null} if the value is not available (e.g., because
      *         the field holder is not yet initialized).
      */
-    JavaConstant readFieldValue(JavaField field, JavaConstant receiver);
+    JavaConstant readFieldValue(ResolvedJavaField field, JavaConstant receiver);
 
     /**
      * Gets the current value of this field for a given object, if available. Like
-     * {@link #readFieldValue(JavaField, JavaConstant)} but treats array fields as stable.
+     * {@link #readFieldValue(ResolvedJavaField, JavaConstant)} but treats array fields as stable.
      *
      * There is no guarantee that the same value will be returned by this method for a field unless
-     * the field is considered to be {@linkplain #readConstantFieldValue(JavaField, JavaConstant)
-     * constant} by the runtime.
+     * the field is considered to be
+     * {@linkplain #readConstantFieldValue(ResolvedJavaField, JavaConstant) constant} by the
+     * runtime.
      *
      * @param receiver object from which this field's value is to be read. This value is ignored if
      *            this field is static.
@@ -110,7 +112,7 @@
      * @return the value of this field or {@code null} if the value is not available (e.g., because
      *         the field holder is not yet initialized).
      */
-    JavaConstant readStableFieldValue(JavaField field, JavaConstant receiver, boolean isDefaultStable);
+    JavaConstant readStableFieldValue(ResolvedJavaField field, JavaConstant receiver, boolean isDefaultStable);
 
     /**
      * Converts the given {@link JavaKind#isPrimitive() primitive} constant to a boxed
--- a/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TypeUniverse.java	Fri Dec 18 00:11:35 2015 -0800
+++ b/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TypeUniverse.java	Sun Dec 20 23:15:24 2015 +0100
@@ -49,8 +49,8 @@
 
 import jdk.vm.ci.meta.ConstantReflectionProvider;
 import jdk.vm.ci.meta.JavaConstant;
-import jdk.vm.ci.meta.JavaField;
 import jdk.vm.ci.meta.MetaAccessProvider;
+import jdk.vm.ci.meta.ResolvedJavaField;
 import jdk.vm.ci.meta.ResolvedJavaType;
 import jdk.vm.ci.meta.TrustedInterface;
 import jdk.vm.ci.runtime.JVMCI;
@@ -179,7 +179,7 @@
             List<ConstantValue> res = new ArrayList<>();
             for (Field field : fromClass.getDeclaredFields()) {
                 if (isStatic(field.getModifiers()) && isFinal(field.getModifiers())) {
-                    JavaField javaField = metaAccess.lookupJavaField(field);
+                    ResolvedJavaField javaField = metaAccess.lookupJavaField(field);
                     Object boxed = field.get(null);
                     if (boxed instanceof JavaConstant) {
                         res.add(new ConstantValue(javaField.format("%H.%n"), (JavaConstant) boxed, boxed));