Index: runtime/vm/intermediate_language_arm.cc |
=================================================================== |
--- runtime/vm/intermediate_language_arm.cc (revision 32017) |
+++ runtime/vm/intermediate_language_arm.cc (working copy) |
@@ -80,22 +80,16 @@ |
Register result = locs()->in(0).reg(); |
ASSERT(result == R0); |
#if defined(DEBUG) |
- // TODO(srdjan): Fix for functions with finally clause. |
- // A finally clause may leave a previously pushed return value if it |
- // has its own return instruction. Method that have finally are currently |
- // not optimized. |
- if (!compiler->HasFinally()) { |
- Label stack_ok; |
- __ Comment("Stack Check"); |
- const intptr_t fp_sp_dist = |
- (kFirstLocalSlotFromFp + 1 - compiler->StackSize()) * kWordSize; |
- ASSERT(fp_sp_dist <= 0); |
- __ sub(R2, SP, ShifterOperand(FP)); |
- __ CompareImmediate(R2, fp_sp_dist); |
- __ b(&stack_ok, EQ); |
- __ bkpt(0); |
- __ Bind(&stack_ok); |
- } |
+ Label stack_ok; |
+ __ Comment("Stack Check"); |
+ const intptr_t fp_sp_dist = |
+ (kFirstLocalSlotFromFp + 1 - compiler->StackSize()) * kWordSize; |
+ ASSERT(fp_sp_dist <= 0); |
+ __ sub(R2, SP, ShifterOperand(FP)); |
+ __ CompareImmediate(R2, fp_sp_dist); |
+ __ b(&stack_ok, EQ); |
+ __ bkpt(0); |
+ __ Bind(&stack_ok); |
#endif |
__ LeaveDartFrame(); |
__ Ret(); |