Mercurial > hg > graal-compiler
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)