changeset 16213:de90d96f562c

make InstanceOfDynamicNode a BinaryOpLogicNode
author Lukas Stadler <lukas.stadler@oracle.com>
date Wed, 25 Jun 2014 11:25:54 +0200
parents 51c7c676d41a
children dcaf26339f7c
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java
diffstat 1 files changed, 15 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java	Wed Jun 25 11:21:44 2014 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java	Wed Jun 25 11:25:54 2014 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,6 @@
 package com.oracle.graal.nodes.java;
 
 import com.oracle.graal.api.meta.*;
-import com.oracle.graal.graph.*;
 import com.oracle.graal.graph.spi.*;
 import com.oracle.graal.nodes.*;
 import com.oracle.graal.nodes.spi.*;
@@ -34,7 +33,7 @@
  * known at compile time. This is used, for instance, to intrinsify {@link Class#isInstance(Object)}
  * .
  */
-public final class InstanceOfDynamicNode extends LogicNode implements Canonicalizable, Lowerable {
+public final class InstanceOfDynamicNode extends LogicNode implements Canonicalizable.Binary<ValueNode>, Lowerable {
 
     @Input private ValueNode object;
     @Input private ValueNode mirror;
@@ -56,16 +55,14 @@
         tool.getLowerer().lower(this, tool);
     }
 
-    @Override
-    public Node canonical(CanonicalizerTool tool) {
-        assert object() != null : this;
-        if (mirror().isConstant()) {
-            ResolvedJavaType t = tool.getConstantReflection().asJavaType(mirror().asConstant());
+    public ValueNode canonical(CanonicalizerTool tool, ValueNode forObject, ValueNode forMirror) {
+        if (forMirror.isConstant()) {
+            ResolvedJavaType t = tool.getConstantReflection().asJavaType(forMirror.asConstant());
             if (t != null) {
                 if (t.isPrimitive()) {
-                    return LogicConstantNode.contradiction(graph());
+                    return LogicConstantNode.contradiction();
                 } else {
-                    return graph().unique(new InstanceOfNode(t, object(), null));
+                    return new InstanceOfNode(t, forObject, null);
                 }
             }
         }
@@ -79,4 +76,12 @@
     public ValueNode mirror() {
         return mirror;
     }
+
+    public ValueNode getX() {
+        return object;
+    }
+
+    public ValueNode getY() {
+        return mirror;
+    }
 }