Mercurial > hg > graal-jvmci-8
changeset 5458:7accd1838b1b
quick fix for postdominator calculation
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Thu, 31 May 2012 18:23:16 +0200 |
parents | 87dfecd51e71 |
children | ecb598b9d535 |
files | graal/com.oracle.graal.lir/src/com/oracle/graal/lir/cfg/ControlFlowGraph.java |
diffstat | 1 files changed, 26 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/cfg/ControlFlowGraph.java Wed May 30 18:38:11 2012 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/cfg/ControlFlowGraph.java Thu May 31 18:23:16 2012 +0200 @@ -68,6 +68,31 @@ return reversePostOrder[0]; } + public Iterable<Block> postOrder() { + return new Iterable<Block>() { + @Override + public Iterator<Block> iterator() { + return new Iterator<Block>() { + private int nextIndex = reversePostOrder.length - 1; + @Override + public boolean hasNext() { + return nextIndex >= 0; + } + + @Override + public Block next() { + return reversePostOrder[nextIndex--]; + } + + @Override + public void remove() { + throw new UnsupportedOperationException(); + } + }; + } + }; + } + public NodeMap<Block> getNodeToBlock() { return nodeToBlock; } @@ -304,7 +329,7 @@ } private void computePostdominators() { - for (Block block : reversePostOrder) { + for (Block block : postOrder()) { if (block.isLoopEnd()) { // We do not want the loop header registered as the postdominator of the loop end. continue;