diff 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
line wrap: on
line diff
--- a/graal/GraalCompiler/src/com/sun/c1x/lir/LIRAssembler.java	Wed May 11 16:25:15 2011 +0200
+++ b/graal/GraalCompiler/src/com/sun/c1x/lir/LIRAssembler.java	Wed May 11 16:40:22 2011 +0200
@@ -367,8 +367,7 @@
                 break;
 
             case Throw:
-            case Unwind:
-                emitThrow(op.operand1(), op.operand2(), op.info, op.code == LIROpcode.Unwind);
+                emitThrow(op.operand1(), op.operand2(), op.info);
                 break;
 
             default:
@@ -465,7 +464,7 @@
 
     protected abstract void emitVolatileMove(CiValue inOpr, CiValue result, CiKind kind, LIRDebugInfo info);
 
-    protected abstract void emitThrow(CiValue inOpr1, CiValue inOpr2, LIRDebugInfo info, boolean unwind);
+    protected abstract void emitThrow(CiValue inOpr1, CiValue inOpr2, LIRDebugInfo info);
 
     protected abstract void emitLogicOp(LIROpcode code, CiValue inOpr1, CiValue inOpr2, CiValue dst);