changeset 20013:8ea3dde07ff7

Transfer proxies when splitting IfNode
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Mon, 23 Mar 2015 12:20:49 -0700
parents 9a3c19db3015
children dab7f071220a
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java
diffstat 1 files changed, 10 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Mon Mar 23 10:29:15 2015 -0700
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Mon Mar 23 12:20:49 2015 -0700
@@ -781,6 +781,8 @@
                 }
             }
         }
+        transferProxies(trueSuccessor(), trueMerge);
+        transferProxies(falseSuccessor(), falseMerge);
 
         cleanupMerge(tool, merge);
         cleanupMerge(tool, trueMerge);
@@ -789,6 +791,14 @@
         return true;
     }
 
+    private static void transferProxies(AbstractBeginNode successor, MergeNode falseMerge) {
+        if (falseMerge != null) {
+            for (ProxyNode proxy : successor.proxies().snapshot()) {
+                proxy.replaceFirstInput(successor, falseMerge);
+            }
+        }
+    }
+
     private void cleanupMerge(SimplifierTool tool, MergeNode merge) {
         if (merge != null && merge.isAlive()) {
             if (merge.forwardEndCount() == 0) {