Mercurial > hg > truffle
changeset 19721:4df907480030
Simplify begin node immediately after removing if node.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Mon, 09 Mar 2015 15:38:33 +0100 |
parents | 79a472b4f024 |
children | adccf364178b |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java |
diffstat | 3 files changed, 14 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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;
--- 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; } }
--- 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(); + } }); }