Mercurial > hg > truffle
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; + } }