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;