# HG changeset patch # User Tom Rodriguez # Date 1426703918 25200 # Node ID efa840053649f766a9c12c2f2fe681185f9598ac # Parent f73a6e260e0c898e94526fa70f04020bed3eda36 Properly handle Guard usages during on stack replacement diff -r f73a6e260e0c -r efa840053649 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java Wed Mar 18 10:07:47 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java Wed Mar 18 11:38:38 2015 -0700 @@ -76,6 +76,7 @@ } LoopTransformations.peel(osrLoop); + osr.replaceAtUsages(InputType.Guard, AbstractBeginNode.prevBegin((FixedNode) osr.predecessor())); for (Node usage : osr.usages().snapshot()) { ProxyNode proxy = (ProxyNode) usage; proxy.replaceAndDelete(proxy.value()); @@ -107,6 +108,8 @@ assert value == null || value instanceof OSRLocalNode; } } + osr.replaceAtUsages(InputType.Guard, osrStart); + assert osr.usages().isEmpty(); GraphUtil.killCFG(start);