changeset 23290:87394b31a42e

Move lookup of Java class and hub from ResolvedJavaType to ConstantReflectionProvider
author Christian Wimmer <christian.wimmer@oracle.com>
date Mon, 25 Jan 2016 14:41:52 -0800
parents d63506bb5237
children c2687aa5e5ca
files jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotConstantReflectionProvider.java jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedPrimitiveType.java jvmci/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ConstantReflectionProvider.java jvmci/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ResolvedJavaType.java
diffstat 5 files changed, 26 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotConstantReflectionProvider.java	Thu Jan 21 13:53:26 2016 -0800
+++ b/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotConstantReflectionProvider.java	Mon Jan 25 14:41:52 2016 -0800
@@ -27,6 +27,7 @@
 
 import java.lang.reflect.Array;
 
+import jdk.vm.ci.common.JVMCIError;
 import jdk.vm.ci.meta.Constant;
 import jdk.vm.ci.meta.ConstantReflectionProvider;
 import jdk.vm.ci.meta.JavaConstant;
@@ -361,4 +362,18 @@
         }
         return dimensions;
     }
+
+    @Override
+    public JavaConstant asJavaClass(ResolvedJavaType type) {
+        return HotSpotObjectConstantImpl.forObject(((HotSpotResolvedJavaType) type).mirror());
+    }
+
+    @Override
+    public Constant asObjectHub(ResolvedJavaType type) {
+        if (type instanceof HotSpotResolvedObjectType) {
+            return ((HotSpotResolvedObjectType) type).klass();
+        } else {
+            throw JVMCIError.unimplemented();
+        }
+    }
 }
--- a/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java	Thu Jan 21 13:53:26 2016 -0800
+++ b/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java	Mon Jan 25 14:41:52 2016 -0800
@@ -304,16 +304,6 @@
     }
 
     @Override
-    public JavaConstant getJavaClass() {
-        return HotSpotObjectConstantImpl.forObject(mirror());
-    }
-
-    @Override
-    public Constant getObjectHub() {
-        return klass();
-    }
-
-    @Override
     public AssumptionResult<Boolean> hasFinalizableSubclass() {
         assert !isArray();
         if (!compilerToVM().hasFinalizableSubclass(this)) {
--- a/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedPrimitiveType.java	Thu Jan 21 13:53:26 2016 -0800
+++ b/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedPrimitiveType.java	Mon Jan 25 14:41:52 2016 -0800
@@ -110,16 +110,6 @@
     }
 
     @Override
-    public JavaConstant getObjectHub() {
-        throw JVMCIError.unimplemented();
-    }
-
-    @Override
-    public JavaConstant getJavaClass() {
-        throw JVMCIError.unimplemented();
-    }
-
-    @Override
     public AssumptionResult<Boolean> hasFinalizableSubclass() {
         return new AssumptionResult<>(false);
     }
--- a/jvmci/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ConstantReflectionProvider.java	Thu Jan 21 13:53:26 2016 -0800
+++ b/jvmci/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ConstantReflectionProvider.java	Mon Jan 25 14:41:52 2016 -0800
@@ -151,4 +151,15 @@
      * Gets raw memory access.
      */
     MemoryAccessProvider getMemoryAccessProvider();
+
+    /**
+     * Gets the runtime representation of the {@link Class} object of this type.
+     */
+    JavaConstant asJavaClass(ResolvedJavaType type);
+
+    /**
+     * Gets the runtime representation of the "hub" of this type--that is, the closest part of the
+     * type representation which is typically stored in the object header.
+     */
+    Constant asObjectHub(ResolvedJavaType type);
 }
--- a/jvmci/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ResolvedJavaType.java	Thu Jan 21 13:53:26 2016 -0800
+++ b/jvmci/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ResolvedJavaType.java	Mon Jan 25 14:41:52 2016 -0800
@@ -34,17 +34,6 @@
  */
 public interface ResolvedJavaType extends JavaType, ModifiersProvider {
     /**
-     * Gets the runtime representation of the Java class object of this type.
-     */
-    JavaConstant getJavaClass();
-
-    /**
-     * Gets the runtime representation of the "hub" of this type--that is, the closest part of the
-     * type representation which is typically stored in the object header.
-     */
-    Constant getObjectHub();
-
-    /**
      * Checks whether this type has a finalizer method.
      *
      * @return {@code true} if this class has a finalizer