changeset 16292:81e4af185dd6

add predecessors to worklist during MergeNode splitting
author Lukas Stadler <lukas.stadler@oracle.com>
date Mon, 30 Jun 2014 16:14:00 +0200
parents da8f16efaa4c
children 8da760bd1575
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java
diffstat 1 files changed, 6 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java	Mon Jun 30 15:45:41 2014 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java	Mon Jun 30 16:14:00 2014 +0200
@@ -163,6 +163,9 @@
             int numEnds = this.forwardEndCount();
             for (int i = 0; i < numEnds - 1; i++) {
                 AbstractEndNode end = forwardEndAt(numEnds - 1 - i);
+                if (tool != null) {
+                    tool.addToWorkList(end);
+                }
                 AbstractEndNode newEnd;
                 if (merge instanceof LoopBeginNode) {
                     newEnd = graph().add(new LoopEndNode((LoopBeginNode) merge));
@@ -207,6 +210,9 @@
             List<AbstractEndNode> endNodes = forwardEnds().snapshot();
             for (AbstractEndNode end : endNodes) {
                 ReturnNode newReturn = graph().add(new ReturnNode(returnValuePhi == null ? returnNode.result() : returnValuePhi.valueAt(end)));
+                if (tool != null) {
+                    tool.addToWorkList(end.predecessor());
+                }
                 end.replaceAtPredecessor(newReturn);
             }
             GraphUtil.killCFG(this);