Index: runtime/vm/intermediate_language_ia32.cc |
=================================================================== |
--- runtime/vm/intermediate_language_ia32.cc (revision 32017) |
+++ runtime/vm/intermediate_language_ia32.cc (working copy) |
@@ -78,23 +78,17 @@ |
Register result = locs()->in(0).reg(); |
ASSERT(result == EAX); |
#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); |
- __ movl(EDI, ESP); |
- __ subl(EDI, EBP); |
- __ cmpl(EDI, Immediate(fp_sp_dist)); |
- __ 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); |
+ __ movl(EDI, ESP); |
+ __ subl(EDI, EBP); |
+ __ cmpl(EDI, Immediate(fp_sp_dist)); |
+ __ j(EQUAL, &done, Assembler::kNearJump); |
+ __ int3(); |
+ __ Bind(&done); |
#endif |
__ LeaveFrame(); |
__ ret(); |