Mercurial > hg > graal-jvmci-8
changeset 19644:86909168a529
Verify that merge nodes have more than one merged forward end. Add utility for cleaning up merge nodes that do not.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Sat, 28 Feb 2015 14:54:29 +0100 |
parents | d2e3d8202ed3 |
children | 96cf6f7678d2 |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java |
diffstat | 1 files changed, 17 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java Sat Feb 28 14:50:40 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java Sat Feb 28 14:54:29 2015 +0100 @@ -36,4 +36,21 @@ public MergeNode() { super(TYPE); } + + public static void removeMergeIfDegenerated(MergeNode node) { + if (node.forwardEndCount() == 1 && node.hasNoUsages()) { + FixedNode currentNext = node.next(); + node.setNext(null); + EndNode forwardEnd = node.forwardEndAt(0); + forwardEnd.replaceAtPredecessor(currentNext); + node.markDeleted(); + forwardEnd.markDeleted(); + } + } + + @Override + public boolean verify() { + assertTrue(this.forwardEndCount() > 1, "Must merge more than one end."); + return true; + } }