# HG changeset patch # User Lukas Stadler # Date 1390988743 -3600 # Node ID 2eb56f87b01edd8c28ba8c9f5345c7c7d7833423 # Parent e99fccb039265e1827f06633ee8c7a5f6725f05d add GraphUtil.removeFixedWithUnusedInputs diff -r e99fccb03926 -r 2eb56f87b01e 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 Tue Jan 28 21:37:29 2014 -0500 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java Wed Jan 29 10:45:43 2014 +0100 @@ -78,10 +78,7 @@ ProxyNode proxy = (ProxyNode) usage; proxy.replaceAndDelete(proxy.value()); } - FixedNode next = osr.next(); - osr.setNext(null); - ((FixedWithNextNode) osr.predecessor()).setNext(next); - GraphUtil.killWithUnusedFloatingInputs(osr); + GraphUtil.removeFixedWithUnusedInputs(osr); Debug.dump(graph, "OnStackReplacement loop peeling result"); } while (true); diff -r e99fccb03926 -r 2eb56f87b01e graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Tue Jan 28 21:37:29 2014 -0500 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Wed Jan 29 10:45:43 2014 +0100 @@ -137,6 +137,13 @@ } } + public static void removeFixedWithUnusedInputs(FixedWithNextNode fixed) { + FixedNode next = fixed.next(); + fixed.setNext(null); + fixed.replaceAtPredecessor(next); + killWithUnusedFloatingInputs(fixed); + } + public static void checkRedundantPhi(PhiNode phiNode) { if (phiNode.isDeleted() || phiNode.valueCount() == 1) { return; diff -r e99fccb03926 -r 2eb56f87b01e graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LockEliminationPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LockEliminationPhase.java Tue Jan 28 21:37:29 2014 -0500 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LockEliminationPhase.java Wed Jan 29 10:45:43 2014 +0100 @@ -36,19 +36,8 @@ if (next instanceof MonitorEnterNode) { MonitorEnterNode monitorEnterNode = (MonitorEnterNode) next; if (monitorEnterNode.object() == node.object()) { - FixedNode monitorEnterSuccessor = monitorEnterNode.next(); - monitorEnterNode.setNext(null); - ((FixedWithNextNode) node.predecessor()).setNext(monitorEnterSuccessor); - FrameState stateAfterFirst = node.stateAfter(); - FrameState stateAfterSecond = monitorEnterNode.stateAfter(); - node.safeDelete(); - monitorEnterNode.safeDelete(); - if (stateAfterFirst.usages().isEmpty()) { - GraphUtil.killWithUnusedFloatingInputs(stateAfterFirst); - } - if (stateAfterSecond.usages().isEmpty()) { - GraphUtil.killWithUnusedFloatingInputs(stateAfterSecond); - } + GraphUtil.removeFixedWithUnusedInputs(monitorEnterNode); + GraphUtil.removeFixedWithUnusedInputs(node); } } } diff -r e99fccb03926 -r 2eb56f87b01e graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Tue Jan 28 21:37:29 2014 -0500 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Wed Jan 29 10:45:43 2014 +0100 @@ -569,11 +569,7 @@ LoopTransformations.fullUnroll(loop, phaseContext, new CanonicalizerPhase(true)); new CanonicalizerPhase(true).applyIncremental(snippetCopy, phaseContext, mark); } - FixedNode explodeLoopNext = explodeLoop.next(); - explodeLoop.clearSuccessors(); - explodeLoop.replaceAtPredecessor(explodeLoopNext); - explodeLoop.replaceAtUsages(null); - GraphUtil.killCFG(explodeLoop); + GraphUtil.removeFixedWithUnusedInputs(explodeLoop); exploded = true; } } while (exploded);