Mercurial > hg > graal-compiler
changeset 23173:ccca06a06894
Make EntryProxyNode independent from ProxyNode hierarchy.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Mon, 14 Dec 2015 12:46:19 +0100 |
parents | 827a777e8dc4 |
children | 009b2ed708fd |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EntryProxyNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueProxyNode.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java |
diffstat | 5 files changed, 16 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EntryProxyNode.java Mon Dec 14 09:20:26 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EntryProxyNode.java Mon Dec 14 12:46:19 2015 +0100 @@ -23,7 +23,9 @@ package com.oracle.graal.nodes; import com.oracle.graal.graph.NodeClass; +import com.oracle.graal.nodeinfo.InputType; import com.oracle.graal.nodeinfo.NodeInfo; +import com.oracle.graal.nodes.calc.FloatingNode; import com.oracle.graal.nodes.spi.ValueProxy; /** @@ -31,17 +33,18 @@ * types we see during OSR may be too precise (if a branch was not parsed for example). */ @NodeInfo(nameTemplate = "EntryProxy({i#value})") -public final class EntryProxyNode extends ProxyNode implements ValueProxy { +public final class EntryProxyNode extends FloatingNode implements ValueProxy { public static final NodeClass<EntryProxyNode> TYPE = NodeClass.create(EntryProxyNode.class); + @Input(InputType.Association) EntryMarkerNode proxyPoint; @Input ValueNode value; - public EntryProxyNode(ValueNode value, AbstractBeginNode proxyPoint) { - super(TYPE, value.stamp().unrestricted(), proxyPoint); + public EntryProxyNode(ValueNode value, EntryMarkerNode proxyPoint) { + super(TYPE, value.stamp().unrestricted()); this.value = value; + this.proxyPoint = proxyPoint; } - @Override public ValueNode value() { return value; }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java Mon Dec 14 09:20:26 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java Mon Dec 14 12:46:19 2015 +0100 @@ -40,7 +40,7 @@ public static final NodeClass<GuardProxyNode> TYPE = NodeClass.create(GuardProxyNode.class); @OptionalInput(InputType.Guard) GuardingNode value; - public GuardProxyNode(GuardingNode value, AbstractBeginNode proxyPoint) { + public GuardProxyNode(GuardingNode value, LoopExitNode proxyPoint) { super(TYPE, StampFactory.forVoid(), proxyPoint); this.value = value; }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java Mon Dec 14 09:20:26 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java Mon Dec 14 12:46:19 2015 +0100 @@ -39,9 +39,9 @@ public abstract class ProxyNode extends FloatingNode implements IterableNodeType, ValueNumberable { public static final NodeClass<ProxyNode> TYPE = NodeClass.create(ProxyNode.class); - @Input(InputType.Association) AbstractBeginNode proxyPoint; + @Input(InputType.Association) LoopExitNode proxyPoint; - protected ProxyNode(NodeClass<? extends ProxyNode> c, Stamp stamp, AbstractBeginNode proxyPoint) { + protected ProxyNode(NodeClass<? extends ProxyNode> c, Stamp stamp, LoopExitNode proxyPoint) { super(c, stamp); assert proxyPoint != null; this.proxyPoint = proxyPoint; @@ -49,7 +49,7 @@ public abstract ValueNode value(); - public AbstractBeginNode proxyPoint() { + public LoopExitNode proxyPoint() { return proxyPoint; }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueProxyNode.java Mon Dec 14 09:20:26 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueProxyNode.java Mon Dec 14 12:46:19 2015 +0100 @@ -40,10 +40,10 @@ private final boolean loopPhiProxy; - public ValueProxyNode(ValueNode value, AbstractBeginNode proxyPoint) { + public ValueProxyNode(ValueNode value, LoopExitNode proxyPoint) { super(TYPE, value.stamp(), proxyPoint); this.value = value; - loopPhiProxy = (proxyPoint instanceof LoopExitNode && value instanceof PhiNode && ((PhiNode) value).merge() == ((LoopExitNode) proxyPoint).loopBegin()); + loopPhiProxy = (value instanceof PhiNode && ((PhiNode) value).merge() == proxyPoint.loopBegin()); } @Override @@ -61,10 +61,10 @@ if (value.isConstant()) { return value; } - if (loopPhiProxy && proxyPoint instanceof LoopExitNode) { + if (loopPhiProxy) { if (!(value instanceof PhiNode)) { return value; - } else if (((PhiNode) value).merge() != ((LoopExitNode) proxyPoint).loopBegin()) { + } else if (((PhiNode) value).merge() != proxyPoint.loopBegin()) { return value; } }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java Mon Dec 14 09:20:26 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java Mon Dec 14 12:46:19 2015 +0100 @@ -22,7 +22,6 @@ */ package com.oracle.graal.phases.common; -import com.oracle.graal.nodes.EntryProxyNode; import com.oracle.graal.nodes.FrameState; import com.oracle.graal.nodes.LoopExitNode; import com.oracle.graal.nodes.ProxyNode; @@ -35,9 +34,7 @@ @Override protected void run(StructuredGraph graph) { for (ProxyNode vpn : graph.getNodes(ProxyNode.TYPE)) { - if (!(vpn instanceof EntryProxyNode)) { - graph.replaceFloating(vpn, vpn.value()); - } + graph.replaceFloating(vpn, vpn.value()); } for (LoopExitNode exit : graph.getNodes(LoopExitNode.TYPE)) { FrameState stateAfter = exit.stateAfter();