diff graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java @ 15018:db4254246f9a

Remove Constant.forObject and Constant.asObject to improve compiler/VM separation
author Christian Wimmer <christian.wimmer@oracle.com>
date Mon, 07 Apr 2014 16:09:17 -0700
parents da2431cc1506
children 61363577a184
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java	Mon Apr 07 23:35:41 2014 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java	Mon Apr 07 16:09:17 2014 -0700
@@ -60,12 +60,13 @@
     public Node canonical(CanonicalizerTool tool) {
         assert object() != null : this;
         if (mirror().isConstant()) {
-            Class clazz = (Class) mirror().asConstant().asObject();
-            ResolvedJavaType t = tool.getMetaAccess().lookupJavaType(clazz);
-            if (t.isPrimitive()) {
-                return LogicConstantNode.contradiction(graph());
-            } else {
-                return graph().unique(new InstanceOfNode(t, object(), null));
+            ResolvedJavaType t = tool.getConstantReflection().asJavaType(mirror().asConstant());
+            if (t != null) {
+                if (t.isPrimitive()) {
+                    return LogicConstantNode.contradiction(graph());
+                } else {
+                    return graph().unique(new InstanceOfNode(t, object(), null));
+                }
             }
         }
         return this;