changeset 21035:246ff20c0a5d

Let GuardProxyNode canonicalize away if the proxied guard becomes null
author Gilles Duboscq <gilles.m.duboscq@oracle.com>
date Wed, 15 Apr 2015 18:29:38 +0200
parents f26efa511680
children 953666b61a23
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java
diffstat 1 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java	Wed Apr 15 18:25:54 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java	Wed Apr 15 18:29:38 2015 +0200
@@ -24,12 +24,13 @@
 
 import com.oracle.graal.compiler.common.type.*;
 import com.oracle.graal.graph.*;
+import com.oracle.graal.graph.spi.*;
 import com.oracle.graal.nodeinfo.*;
 import com.oracle.graal.nodes.extended.*;
 import com.oracle.graal.nodes.spi.*;
 
 @NodeInfo(allowedUsageTypes = {InputType.Guard}, nameTemplate = "Proxy({i#value})")
-public final class GuardProxyNode extends ProxyNode implements GuardingNode, Proxy, LIRLowerable {
+public final class GuardProxyNode extends ProxyNode implements GuardingNode, Proxy, LIRLowerable, Canonicalizable {
 
     public static final NodeClass<GuardProxyNode> TYPE = NodeClass.create(GuardProxyNode.class);
     @OptionalInput(InputType.Guard) GuardingNode value;
@@ -56,4 +57,11 @@
     public Node getOriginalNode() {
         return (value == null ? null : value.asNode());
     }
+
+    public Node canonical(CanonicalizerTool tool) {
+        if (value == null) {
+            return null;
+        }
+        return this;
+    }
 }