| Index: runtime/vm/intermediate_language_x64.cc
|
| ===================================================================
|
| --- runtime/vm/intermediate_language_x64.cc (revision 32017)
|
| +++ runtime/vm/intermediate_language_x64.cc (working copy)
|
| @@ -78,23 +78,17 @@
|
| Register result = locs()->in(0).reg();
|
| ASSERT(result == RAX);
|
| #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()) {
|
| - __ Comment("Stack Check");
|
| - Label done;
|
| - const intptr_t fp_sp_dist =
|
| - (kFirstLocalSlotFromFp + 1 - compiler->StackSize()) * kWordSize;
|
| - ASSERT(fp_sp_dist <= 0);
|
| - __ movq(RDI, RSP);
|
| - __ subq(RDI, RBP);
|
| - __ CompareImmediate(RDI, Immediate(fp_sp_dist), PP);
|
| - __ j(EQUAL, &done, Assembler::kNearJump);
|
| - __ int3();
|
| - __ Bind(&done);
|
| - }
|
| + __ Comment("Stack Check");
|
| + Label done;
|
| + const intptr_t fp_sp_dist =
|
| + (kFirstLocalSlotFromFp + 1 - compiler->StackSize()) * kWordSize;
|
| + ASSERT(fp_sp_dist <= 0);
|
| + __ movq(RDI, RSP);
|
| + __ subq(RDI, RBP);
|
| + __ CompareImmediate(RDI, Immediate(fp_sp_dist), PP);
|
| + __ j(EQUAL, &done, Assembler::kNearJump);
|
| + __ int3();
|
| + __ Bind(&done);
|
| #endif
|
| __ LeaveDartFrame();
|
| __ ret();
|
|
|