changeset 18283:b2eb7302706c

added HotSpotObjectConstant.getNodeClass()
author Doug Simon <doug.simon@oracle.com>
date Thu, 06 Nov 2014 13:26:33 +0100
parents ecf3de366ecc
children 29ba2a7cdfcb
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeClassSubstitutions.java
diffstat 3 files changed, 19 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java	Thu Nov 06 13:24:16 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java	Thu Nov 06 13:26:33 2014 +0100
@@ -23,6 +23,7 @@
 package com.oracle.graal.hotspot.meta;
 
 import com.oracle.graal.api.meta.*;
+import com.oracle.graal.graph.*;
 
 /**
  * Represents a constant non-{@code null} object reference, within the compiler and across the
@@ -49,4 +50,12 @@
      */
     @PureFunction
     int getIdentityHashCode();
+
+    /**
+     * Gets the result of {@link NodeClass#get(Class)} for the {@link Class} object represented by
+     * this constant.
+     *
+     * @return {@code null} if this constant does not represent a {@link Class} object
+     */
+    JavaConstant getNodeClass();
 }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java	Thu Nov 06 13:24:16 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java	Thu Nov 06 13:26:33 2014 +0100
@@ -23,6 +23,7 @@
 package com.oracle.graal.hotspot.meta;
 
 import com.oracle.graal.api.meta.*;
+import com.oracle.graal.graph.*;
 
 /**
  * Represents a constant non-{@code null} object reference, within the compiler and across the
@@ -109,6 +110,13 @@
         return System.identityHashCode(object);
     }
 
+    public JavaConstant getNodeClass() {
+        if (object instanceof Class) {
+            return HotSpotObjectConstantImpl.forObject(NodeClass.get((Class<?>) object));
+        }
+        return null;
+    }
+
     @Override
     public boolean isNull() {
         return false;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeClassSubstitutions.java	Thu Nov 06 13:24:16 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeClassSubstitutions.java	Thu Nov 06 13:26:33 2014 +0100
@@ -60,7 +60,8 @@
             if (param.isNull() || ImmutableCode.getValue()) {
                 return null;
             }
-            return HotSpotObjectConstantImpl.forObject(NodeClass.get((Class<?>) HotSpotObjectConstantImpl.asObject(param)));
+            HotSpotObjectConstant c = (HotSpotObjectConstant) param;
+            return c.getNodeClass();
         }
     }