# HG changeset patch # User Lukas Stadler # Date 1404993841 -7200 # Node ID b650d0a98146cc86a22cde2eaeeffab8b4d36ca2 # Parent d8d4120c62aec97806c08a54f8d0a691b4cac07d new GraphUtil.unlinkFixedNode utility method diff -r d8d4120c62ae -r b650d0a98146 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java Thu Jul 10 13:42:41 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java Thu Jul 10 14:04:01 2014 +0200 @@ -224,9 +224,7 @@ if (nodeClass.inputsEqual(trueNext, falseNext) && nodeClass.valueEqual(trueNext, falseNext)) { falseNext.replaceAtUsages(trueNext); graph().removeFixed(falseNext); - FixedNode next = trueNext.next(); - trueNext.setNext(null); - trueNext.replaceAtPredecessor(next); + GraphUtil.unlinkFixedNode(trueNext); graph().addBeforeFixed(this, trueNext); for (Node usage : trueNext.usages().snapshot()) { if (usage.isAlive()) { diff -r d8d4120c62ae -r b650d0a98146 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java Thu Jul 10 13:42:41 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java Thu Jul 10 14:04:01 2014 +0200 @@ -259,9 +259,7 @@ ((BeginNode) node).prepareDelete(); } assert node.usages().isEmpty() : node + " " + node.usages(); - FixedNode next = node.next(); - node.setNext(null); - node.replaceAtPredecessor(next); + GraphUtil.unlinkFixedNode(node); node.safeDelete(); } @@ -288,9 +286,7 @@ public void replaceFixedWithFloating(FixedWithNextNode node, FloatingNode replacement) { assert node != null && replacement != null && node.isAlive() && replacement.isAlive() : "cannot replace " + node + " with " + replacement; - FixedNode next = node.next(); - node.setNext(null); - node.replaceAtPredecessor(next); + GraphUtil.unlinkFixedNode(node); node.replaceAtUsages(replacement); node.safeDelete(); } diff -r d8d4120c62ae -r b650d0a98146 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 Thu Jul 10 13:42:41 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Thu Jul 10 14:04:01 2014 +0200 @@ -157,10 +157,15 @@ killWithUnusedFloatingInputs(stateAfter); } } + unlinkFixedNode(fixed); + killWithUnusedFloatingInputs(fixed); + } + + public static void unlinkFixedNode(FixedWithNextNode fixed) { + assert fixed.next() != null && fixed.predecessor() != null && fixed.isAlive(); FixedNode next = fixed.next(); fixed.setNext(null); fixed.replaceAtPredecessor(next); - killWithUnusedFloatingInputs(fixed); } public static void checkRedundantPhi(PhiNode phiNode) { diff -r d8d4120c62ae -r b650d0a98146 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java Thu Jul 10 13:42:41 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java Thu Jul 10 14:04:01 2014 +0200 @@ -347,9 +347,7 @@ for (Node checkCastUsage : checkCastNode.usages().snapshot()) { checkCheckCastUsage(graph, newInstance, checkCastNode, checkCastUsage); } - FixedNode next = checkCastNode.next(); - checkCastNode.setNext(null); - checkCastNode.replaceAtPredecessor(next); + GraphUtil.unlinkFixedNode(checkCastNode); GraphUtil.killCFG(checkCastNode); } } diff -r d8d4120c62ae -r b650d0a98146 graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/GraphEffectList.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/GraphEffectList.java Thu Jul 10 13:42:41 2014 +0200 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/GraphEffectList.java Thu Jul 10 14:04:01 2014 +0200 @@ -29,6 +29,7 @@ import com.oracle.graal.nodes.calc.*; import com.oracle.graal.nodes.debug.*; import com.oracle.graal.nodes.java.*; +import com.oracle.graal.nodes.util.*; import com.oracle.graal.nodes.virtual.*; import com.oracle.graal.phases.common.*; @@ -206,9 +207,7 @@ @Override public void apply(StructuredGraph graph, ArrayList obsoleteNodes) { assert node.isAlive(); - FixedNode next = node.next(); - node.setNext(null); - node.replaceAtPredecessor(next); + GraphUtil.unlinkFixedNode(node); assert obsoleteNodes.add(node); } }); @@ -241,9 +240,7 @@ } node.replaceAtUsages(replacement); if (node instanceof FixedWithNextNode) { - FixedNode next = ((FixedWithNextNode) node).next(); - ((FixedWithNextNode) node).setNext(null); - node.replaceAtPredecessor(next); + GraphUtil.unlinkFixedNode((FixedWithNextNode) node); assert obsoleteNodes.add(node); } }