Mercurial > hg > graal-jvmci-8
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 |