diff graal/GraalCompiler/src/com/sun/c1x/alloc/RegisterVerifier.java @ 2707:7ed72769d51a

exception handling related changes: * changed blockPredecessors to list of Instructions, instead of Blocks * removed explicit predecessor management in BlockBegin, now using predecessors from Graph structure * replaced generated LIR exception entries with exception dispatch chains in IR * added Unwind and ExceptionDispatch instructions * removed ExceptionEntry flag in BlockBegin and all code depending on it * removed exceptionHandler list from Instruction, replaced by exception Edge on Invoke and Throw * replaced list of ExceptionHandlers with single exception edge in debug info misc: * changed GraphvizPrinter layout (smaller ports on large nodes) * removed defunct run config
author Lukas Stadler <lukas.stadler@jku.at>
date Wed, 18 May 2011 18:09:20 +0200
parents 4a36a0bd6d18
children c1ce2a53d6c3
line wrap: on
line diff
--- a/graal/GraalCompiler/src/com/sun/c1x/alloc/RegisterVerifier.java	Fri May 13 17:09:20 2011 -0700
+++ b/graal/GraalCompiler/src/com/sun/c1x/alloc/RegisterVerifier.java	Wed May 18 18:09:20 2011 +0200
@@ -134,18 +134,18 @@
         }
     }
 
-    void processXhandler(ExceptionHandler xhandler, Interval[] inputState) {
+    void processXhandler(BlockBegin xhandler, Interval[] inputState) {
         if (C1XOptions.TraceLinearScanLevel >= 2) {
-            TTY.println("processXhandler B%d", xhandler.entryBlock().blockID);
+            TTY.println("processXhandler B%d", xhandler.blockID);
         }
 
         // must copy state because it is modified
         inputState = copy(inputState);
 
-        if (xhandler.entryCode() != null) {
-            processOperations(xhandler.entryCode(), inputState);
+        if (xhandler.lir() != null) {
+            processOperations(xhandler.lir(), inputState);
         }
-        processSuccessor(xhandler.entryBlock(), inputState);
+        processSuccessor(xhandler, inputState);
     }
 
     void processSuccessor(BlockBegin block, Interval[] inputState) {
@@ -260,10 +260,8 @@
             }
 
             // process xhandler before output and temp operands
-            List<ExceptionHandler> xhandlers = op.exceptionEdges();
-            n = xhandlers.size();
-            for (int k = 0; k < n; k++) {
-                processXhandler(xhandlers.get(k), inputState);
+            if (op.exceptionEdge() != null) {
+                processXhandler(op.exceptionEdge(), inputState);
             }
 
             // set temp operands (some operations use temp operands also as output operands, so can't set them null)