Mercurial > hg > graal-jvmci-8
changeset 10765:ae3d070ab223
make ValueNode.stamp() final, fix WordTypeRewriterPhase
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Mon, 15 Jul 2013 16:36:54 +0200 |
parents | d2f8addaf504 |
children | 3a044e575466 |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java |
diffstat | 4 files changed, 10 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java Mon Jul 15 15:58:48 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java Mon Jul 15 16:36:54 2013 +0200 @@ -27,7 +27,6 @@ import com.oracle.graal.nodes.PhiNode.PhiType; import com.oracle.graal.nodes.calc.*; import com.oracle.graal.nodes.spi.*; -import com.oracle.graal.nodes.type.*; /** * A value proxy that is inserted in the frame state of a loop exit for any value that is created @@ -60,11 +59,6 @@ return updateStamp(value.stamp()); } - @Override - public Stamp stamp() { - return value().stamp(); - } - public AbstractBeginNode proxyPoint() { return proxyPoint; }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java Mon Jul 15 15:58:48 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java Mon Jul 15 16:36:54 2013 +0200 @@ -27,7 +27,6 @@ import com.oracle.graal.graph.*; import com.oracle.graal.nodes.calc.*; import com.oracle.graal.nodes.spi.*; -import com.oracle.graal.nodes.type.*; /** * A node that attaches a type profile to a proxied input node. @@ -67,12 +66,7 @@ @Override public boolean inferStamp() { - return object.inferStamp(); - } - - @Override - public Stamp stamp() { - return object.stamp(); + return updateStamp(object.stamp()); } @Override
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java Mon Jul 15 15:58:48 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java Mon Jul 15 16:36:54 2013 +0200 @@ -44,7 +44,7 @@ this.stamp = stamp; } - public Stamp stamp() { + public final Stamp stamp() { return stamp; } @@ -80,7 +80,7 @@ return false; } - public Kind kind() { + public final Kind kind() { return stamp().kind(); }
--- a/graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java Mon Jul 15 15:58:48 2013 +0200 +++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java Mon Jul 15 16:36:54 2013 +0200 @@ -69,15 +69,20 @@ @Override protected void run(StructuredGraph graph) { for (Node n : GraphOrder.forwardGraph(graph)) { - if (n instanceof ValueNode) { + if (n instanceof ValueNode && !(n instanceof PhiNode && ((PhiNode) n).isLoopPhi())) { ValueNode valueNode = (ValueNode) n; if (isWord(valueNode)) { changeToWord(valueNode); } } } + for (PhiNode phi : graph.getNodes(PhiNode.class)) { + if (phi.isLoopPhi() && isWord(phi)) { + changeToWord(phi); + } + } - // Remove casts between different word types (which are by now no longer have kind Object) + // Remove casts between different word types (which by now no longer have kind Object) for (CheckCastNode checkCastNode : graph.getNodes().filter(CheckCastNode.class).snapshot()) { if (!checkCastNode.isDeleted() && checkCastNode.kind() == wordKind) { checkCastNode.replaceAtUsages(checkCastNode.object());