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