Mercurial > hg > graal-compiler
comparison graal/GraalCompiler/src/com/sun/c1x/gen/LIRGenerator.java @ 2728:7e470e1cd3b6
Removed special casing for exception phis in LIRGenerator. Removed dependency between LIRBlock.blockID and BlockBegin.blockID.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Thu, 19 May 2011 17:13:30 +0200 |
parents | 1ddcbcd33325 |
children | a2f62de90c76 |
comparison
equal
deleted
inserted
replaced
2727:1ddcbcd33325 | 2728:7e470e1cd3b6 |
---|---|
388 } | 388 } |
389 } | 389 } |
390 | 390 |
391 @Override | 391 @Override |
392 public void visitExceptionObject(ExceptionObject x) { | 392 public void visitExceptionObject(ExceptionObject x) { |
393 | |
394 // no moves are created for phi functions at the begin of exception | |
395 // handlers, so assign operands manually here | |
396 currentBlock.stateBefore().forEachLivePhi(currentBlock.blockID(), new PhiProcedure() { | |
397 public boolean doPhi(Phi phi) { | |
398 operandForPhi(phi); | |
399 return true; | |
400 } | |
401 }); | |
402 | |
403 XirSnippet snippet = xir.genExceptionObject(site(x)); | 393 XirSnippet snippet = xir.genExceptionObject(site(x)); |
404 emitXir(snippet, x, stateFor(x), null, true); | 394 emitXir(snippet, x, stateFor(x), null, true); |
405 } | 395 } |
406 | 396 |
407 @Override | 397 @Override |
1440 assert state != null; | 1430 assert state != null; |
1441 LIRBlock exceptionEdge = null; | 1431 LIRBlock exceptionEdge = null; |
1442 if (x instanceof ExceptionEdgeInstruction) { | 1432 if (x instanceof ExceptionEdgeInstruction) { |
1443 BlockBegin begin = ((ExceptionEdgeInstruction) x).exceptionEdge(); | 1433 BlockBegin begin = ((ExceptionEdgeInstruction) x).exceptionEdge(); |
1444 if (begin != null) { | 1434 if (begin != null) { |
1445 exceptionEdge = begin.lirBlock(); | 1435 exceptionEdge = getLIRBlock(begin); |
1446 } | 1436 } |
1447 } | 1437 } |
1448 return new LIRDebugInfo(state, exceptionEdge); | 1438 return new LIRDebugInfo(state, exceptionEdge); |
1449 } | 1439 } |
1450 | 1440 |