Mercurial > hg > graal-jvmci-8
changeset 16157:bd1202138e21
add SimplifierTool.addToWorkList for Iterable<Node>
author | Lukas Stadler <lukas.stadler@oracle.com> |
---|---|
date | Mon, 23 Jun 2014 14:11:54 +0200 |
parents | 0993768dfc8e |
children | d8aa3ea65d39 |
files | graal/com.oracle.graal.graph/src/com/oracle/graal/graph/spi/SimplifierTool.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java |
diffstat | 5 files changed, 10 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/spi/SimplifierTool.java Mon Jun 23 14:11:54 2014 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/spi/SimplifierTool.java Mon Jun 23 14:11:54 2014 +0200 @@ -35,4 +35,6 @@ * Adds a node to the worklist independent of whether it has already been on the worklist. */ void addToWorkList(Node node); + + void addToWorkList(Iterable<? extends Node> nodes); }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java Mon Jun 23 14:11:54 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java Mon Jun 23 14:11:54 2014 +0200 @@ -298,7 +298,7 @@ } } if (tool != null) { - otherPhi.usages().forEach(tool::addToWorkList); + tool.addToWorkList(otherPhi.usages()); } otherPhi.replaceAtUsages(phi); GraphUtil.killWithUnusedFloatingInputs(otherPhi);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java Mon Jun 23 14:11:54 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java Mon Jun 23 14:11:54 2014 +0200 @@ -164,7 +164,7 @@ if (singleValue != null) { for (Node node : usages().snapshot()) { if (node instanceof ProxyNode && ((ProxyNode) node).proxyPoint() instanceof LoopExitNode && ((LoopExitNode) ((ProxyNode) node).proxyPoint()).loopBegin() == merge) { - node.usages().forEach(tool::addToWorkList); + tool.addToWorkList(node.usages()); graph().replaceFloating((FloatingNode) node, singleValue); } }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Mon Jun 23 14:11:54 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Mon Jun 23 14:11:54 2014 +0200 @@ -94,13 +94,13 @@ } else if (merge instanceof LoopBeginNode && ((LoopBeginNode) merge).loopEnds().isEmpty()) { // not a loop anymore if (tool != null) { - merge.phis().forEach(phi -> phi.usages().forEach(tool::addToWorkList)); + merge.phis().forEach(phi -> tool.addToWorkList(phi.usages())); } graph.reduceDegenerateLoopBegin((LoopBeginNode) merge); } else if (merge.phiPredecessorCount() == 1) { // not a merge anymore if (tool != null) { - merge.phis().forEach(phi -> phi.usages().forEach(tool::addToWorkList)); + merge.phis().forEach(phi -> tool.addToWorkList(phi.usages())); } graph.reduceTrivialMerge(merge); }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Mon Jun 23 14:11:54 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Mon Jun 23 14:11:54 2014 +0200 @@ -381,6 +381,10 @@ workList.add(node); } + public void addToWorkList(Iterable<? extends Node> nodes) { + workList.addAll(nodes); + } + @Override public void removeIfUnused(Node node) { GraphUtil.tryKillUnused(node);