# HG changeset patch # User Thomas Wuerthinger # Date 1425911913 -3600 # Node ID 4df907480030a7ba114641cc96d31f10177b2832 # Parent 79a472b4f024c4e2a0498ecc402a932fcbfed6af Simplify begin node immediately after removing if node. diff -r 79a472b4f024 -r 4df907480030 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java Mon Mar 09 15:38:17 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java Mon Mar 09 15:38:33 2015 +0100 @@ -39,6 +39,17 @@ super(TYPE, stamp); } + public void trySimplify() { + FixedNode prev = (FixedNode) this.predecessor(); + if (prev instanceof ControlSplitNode) { + // This begin node is necessary. + } else { + // This begin node can be removed and all guards moved up to the preceding begin node. + prepareDelete(); + graph().removeFixed(this); + } + } + public static AbstractBeginNode begin(FixedNode with) { if (with instanceof AbstractBeginNode) { return (AbstractBeginNode) with; diff -r 79a472b4f024 -r 4df907480030 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java Mon Mar 09 15:38:17 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java Mon Mar 09 15:38:33 2015 +0100 @@ -72,7 +72,6 @@ @Override public TriState tryFold(Stamp xStampGeneric, Stamp yStampGeneric) { - System.out.println("try fold with " + xStampGeneric + " and " + yStampGeneric); return TriState.UNKNOWN; } } diff -r 79a472b4f024 -r 4df907480030 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java Mon Mar 09 15:38:17 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java Mon Mar 09 15:38:33 2015 +0100 @@ -221,6 +221,9 @@ survivingSuccessor.replaceAtPredecessor(null); node.replaceAtPredecessor(survivingSuccessor); GraphUtil.killCFG(node); + if (survivingSuccessor instanceof BeginNode) { + ((BeginNode) survivingSuccessor).trySimplify(); + } }); }