diff graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/cfg/ControlFlowGraph.java @ 4522:cf13124efdd9

Restructure phi functions in LIR; Re-enabled C1Visualizer output
author Christian Wimmer <Christian.Wimmer@Oracle.com>
date Wed, 08 Feb 2012 15:35:21 -0800
parents 57cb8ec5f6bb
children dcc8f5c6f394
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/cfg/ControlFlowGraph.java	Wed Feb 08 17:40:55 2012 +0100
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/cfg/ControlFlowGraph.java	Wed Feb 08 15:35:21 2012 -0800
@@ -24,6 +24,7 @@
 
 import java.util.*;
 
+import com.oracle.max.graal.compiler.util.*;
 import com.oracle.max.graal.graph.*;
 import com.oracle.max.graal.nodes.*;
 
@@ -79,6 +80,9 @@
         return loops;
     }
 
+    protected static final int BLOCK_ID_INITIAL = -1;
+    protected static final int BLOCK_ID_VISITED = -2;
+
     private void identifyBlocks() {
         // Find all block headers
         int numBlocks = 0;
@@ -129,22 +133,24 @@
 
         do {
             Block block = stack.get(stack.size() - 1);
-            if (block.id == -1) {
+            if (block.id == BLOCK_ID_INITIAL) {
                 // First time we see this block: push all successors.
                 for (Node suxNode : block.getEndNode().cfgSuccessors()) {
                     Block suxBlock = blockFor(suxNode);
-                    if (suxBlock.id < 0) {
+                    assert suxBlock.id != BLOCK_ID_VISITED;
+                    if (suxBlock.id == BLOCK_ID_INITIAL) {
                         stack.add(suxBlock);
                     }
                 }
-                block.id = -2;
-            } else {
+                block.id = BLOCK_ID_VISITED;
+            } else if (block.id == BLOCK_ID_VISITED) {
                 // Second time we see this block: All successors haved been processed, so insert block into reverse postorder list.
-                assert block.id == -2;
                 stack.remove(stack.size() - 1);
+                reversePostOrder[reversePostOrderId] = block;
                 block.id = reversePostOrderId;
-                reversePostOrder[reversePostOrderId] = block;
                 reversePostOrderId--;
+            } else {
+                throw Util.shouldNotReachHere();
             }
         } while (!stack.isEmpty());
         assert reversePostOrderId == -1;