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);