changeset 16415:24af0805e135

hasValueProxies on StructuredGraph
author Lukas Stadler <lukas.stadler@oracle.com>
date Mon, 07 Jul 2014 12:15:44 +0200
parents 3d424f8a2bea
children 4fe215bc2da5
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java graal/com.oracle.graal.phases/src/com/oracle/graal/phases/util/GraphOrder.java
diffstat 3 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java	Fri Jul 04 21:29:40 2014 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java	Mon Jul 07 12:15:44 2014 +0200
@@ -78,6 +78,7 @@
     private final int entryBCI;
     private GuardsStage guardsStage = GuardsStage.FLOATING_GUARDS;
     private boolean isAfterFloatingReadPhase = false;
+    private boolean hasValueProxies = true;
 
     /**
      * Creates a new Graph containing a single {@link BeginNode} as the {@link #start() start} node.
@@ -429,4 +430,13 @@
         assert state : "cannot 'unapply' floating read phase on graph";
         isAfterFloatingReadPhase = state;
     }
+
+    public boolean hasValueProxies() {
+        return hasValueProxies;
+    }
+
+    public void setHasValueProxies(boolean state) {
+        assert !state : "cannot 'unapply' value proxy removal on graph";
+        hasValueProxies = state;
+    }
 }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java	Fri Jul 04 21:29:40 2014 +0200
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java	Mon Jul 07 12:15:44 2014 +0200
@@ -44,5 +44,6 @@
                 }
             }
         }
+        graph.setHasValueProxies(false);
     }
 }
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/util/GraphOrder.java	Fri Jul 04 21:29:40 2014 +0200
+++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/util/GraphOrder.java	Mon Jul 07 12:15:44 2014 +0200
@@ -188,7 +188,7 @@
                                 }
                             }
                         } else if (node instanceof LoopExitNode) {
-                            if (!graph.isAfterFloatingReadPhase()) {
+                            if (graph.hasValueProxies()) {
                                 // loop contents are only accessible via proxies at the exit
                                 currentState.clearAll();
                                 currentState.markAll(loopEntryStates.get(((LoopExitNode) node).loopBegin()));