comparison graal/GraalCompiler/src/com/sun/c1x/lir/LIRAssembler.java @ 2660:9f557e940180

Removed exception optimization that immediately unwinds if it is guaranteed that there is no local exception handler. Reason to remove the optimization: In case of a local exception handler that has been really executed, we need a type check on the exception object and a conditional jump from the throw anyway.
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Wed, 11 May 2011 16:40:22 +0200
parents 91d3952f7eb7
children 0ea5f12e873a
comparison
equal deleted inserted replaced
2659:40248577d587 2660:9f557e940180
365 case LogicXor: 365 case LogicXor:
366 emitLogicOp(op.code, op.operand1(), op.operand2(), op.result()); 366 emitLogicOp(op.code, op.operand1(), op.operand2(), op.result());
367 break; 367 break;
368 368
369 case Throw: 369 case Throw:
370 case Unwind: 370 emitThrow(op.operand1(), op.operand2(), op.info);
371 emitThrow(op.operand1(), op.operand2(), op.info, op.code == LIROpcode.Unwind);
372 break; 371 break;
373 372
374 default: 373 default:
375 throw Util.shouldNotReachHere(); 374 throw Util.shouldNotReachHere();
376 } 375 }
463 462
464 protected abstract void emitReadPrefetch(CiValue inOpr); 463 protected abstract void emitReadPrefetch(CiValue inOpr);
465 464
466 protected abstract void emitVolatileMove(CiValue inOpr, CiValue result, CiKind kind, LIRDebugInfo info); 465 protected abstract void emitVolatileMove(CiValue inOpr, CiValue result, CiKind kind, LIRDebugInfo info);
467 466
468 protected abstract void emitThrow(CiValue inOpr1, CiValue inOpr2, LIRDebugInfo info, boolean unwind); 467 protected abstract void emitThrow(CiValue inOpr1, CiValue inOpr2, LIRDebugInfo info);
469 468
470 protected abstract void emitLogicOp(LIROpcode code, CiValue inOpr1, CiValue inOpr2, CiValue dst); 469 protected abstract void emitLogicOp(LIROpcode code, CiValue inOpr1, CiValue inOpr2, CiValue dst);
471 470
472 protected abstract void emitIntrinsicOp(LIROpcode code, CiValue inOpr1, CiValue inOpr2, CiValue dst, LIROp2 op); 471 protected abstract void emitIntrinsicOp(LIROpcode code, CiValue inOpr1, CiValue inOpr2, CiValue dst, LIROp2 op);
473 472