Mercurial > hg > truffle
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()));