| 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();
|
|
|