diff graal/GraalCompiler/src/com/sun/c1x/alloc/RegisterVerifier.java @ 2718:c1ce2a53d6c3

Attempt to remove dependency between backend and BlockBegin.
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Thu, 19 May 2011 16:05:42 +0200
parents 7ed72769d51a
children a2f62de90c76
line wrap: on
line diff
--- a/graal/GraalCompiler/src/com/sun/c1x/alloc/RegisterVerifier.java	Thu May 19 14:31:03 2011 +0200
+++ b/graal/GraalCompiler/src/com/sun/c1x/alloc/RegisterVerifier.java	Thu May 19 16:05:42 2011 +0200
@@ -38,7 +38,7 @@
 final class RegisterVerifier {
 
     LinearScan allocator;
-    List<BlockBegin> workList; // all blocks that must be processed
+    List<LIRBlock> workList; // all blocks that must be processed
     ArrayMap<Interval[]> savedStates; // saved information of previous check
 
     // simplified access to methods of LinearScan
@@ -56,15 +56,15 @@
     }
 
     // accessors
-    Interval[] stateForBlock(BlockBegin block) {
-        return savedStates.get(block.blockID);
+    Interval[] stateForBlock(LIRBlock block) {
+        return savedStates.get(block.blockID());
     }
 
-    void setStateForBlock(BlockBegin block, Interval[] savedState) {
-        savedStates.put(block.blockID, savedState);
+    void setStateForBlock(LIRBlock block, Interval[] savedState) {
+        savedStates.put(block.blockID(), savedState);
     }
 
-    void addToWorkList(BlockBegin block) {
+    void addToWorkList(LIRBlock block) {
         if (!workList.contains(block)) {
             workList.add(block);
         }
@@ -72,12 +72,12 @@
 
     RegisterVerifier(LinearScan allocator) {
         this.allocator = allocator;
-        workList = new ArrayList<BlockBegin>(16);
+        workList = new ArrayList<LIRBlock>(16);
         this.savedStates = new ArrayMap<Interval[]>();
 
     }
 
-    void verify(BlockBegin start) {
+    void verify(LIRBlock start) {
         // setup input registers (method arguments) for first block
         Interval[] inputState = new Interval[stateSize()];
         CiCallingConvention args = compilation().frameMap().incomingArguments();
@@ -95,17 +95,17 @@
 
         // main loop for verification
         do {
-            BlockBegin block = workList.get(0);
+            LIRBlock block = workList.get(0);
             workList.remove(0);
 
             processBlock(block);
         } while (!workList.isEmpty());
     }
 
-    void processBlock(BlockBegin block) {
+    void processBlock(LIRBlock block) {
         if (C1XOptions.TraceLinearScanLevel >= 2) {
             TTY.println();
-            TTY.println("processBlock B%d", block.blockID);
+            TTY.println("processBlock B%d", block.blockID());
         }
 
         // must copy state because it is modified
@@ -129,14 +129,14 @@
         processOperations(block.lir(), inputState);
 
         // iterate all successors
-        for (BlockBegin succ : block.end().blockSuccessors()) {
+        for (LIRBlock succ : block.blockSuccessors()) {
             processSuccessor(succ, inputState);
         }
     }
 
-    void processXhandler(BlockBegin xhandler, Interval[] inputState) {
+    void processXhandler(LIRBlock xhandler, Interval[] inputState) {
         if (C1XOptions.TraceLinearScanLevel >= 2) {
-            TTY.println("processXhandler B%d", xhandler.blockID);
+            TTY.println("processXhandler B%d", xhandler.blockID());
         }
 
         // must copy state because it is modified
@@ -148,7 +148,7 @@
         processSuccessor(xhandler, inputState);
     }
 
-    void processSuccessor(BlockBegin block, Interval[] inputState) {
+    void processSuccessor(LIRBlock block, Interval[] inputState) {
         Interval[] savedState = stateForBlock(block);
 
         if (savedState != null) {
@@ -168,7 +168,7 @@
                         savedState[i] = null;
 
                         if (C1XOptions.TraceLinearScanLevel >= 4) {
-                            TTY.println("processSuccessor B%d: invalidating slot %d", block.blockID, i);
+                            TTY.println("processSuccessor B%d: invalidating slot %d", block.blockID(), i);
                         }
                     }
                 }
@@ -177,12 +177,12 @@
             if (savedStateCorrect) {
                 // already processed block with correct inputState
                 if (C1XOptions.TraceLinearScanLevel >= 2) {
-                    TTY.println("processSuccessor B%d: previous visit already correct", block.blockID);
+                    TTY.println("processSuccessor B%d: previous visit already correct", block.blockID());
                 }
             } else {
                 // must re-visit this block
                 if (C1XOptions.TraceLinearScanLevel >= 2) {
-                    TTY.println("processSuccessor B%d: must re-visit because input state changed", block.blockID);
+                    TTY.println("processSuccessor B%d: must re-visit because input state changed", block.blockID());
                 }
                 addToWorkList(block);
             }
@@ -190,7 +190,7 @@
         } else {
             // block was not processed before, so set initial inputState
             if (C1XOptions.TraceLinearScanLevel >= 2) {
-                TTY.println("processSuccessor B%d: initial visit", block.blockID);
+                TTY.println("processSuccessor B%d: initial visit", block.blockID());
             }
 
             setStateForBlock(block, copy(inputState));