Index: src/ia32/lithium-ia32.cc |
diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc |
index 590d943252dc2014ff266c36073f5f4d1f467849..e752bf976ec4fccaafe53a09a54c00dd915bc944 100644 |
--- a/src/ia32/lithium-ia32.cc |
+++ b/src/ia32/lithium-ia32.cc |
@@ -391,8 +391,7 @@ void LChunk::MarkEmptyBlocks() { |
LLabel* label = LLabel::cast(first_instr); |
if (last_instr->IsGoto()) { |
LGoto* goto_instr = LGoto::cast(last_instr); |
- if (!goto_instr->include_stack_check() && |
- label->IsRedundant() && |
+ if (label->IsRedundant() && |
!label->is_loop_header()) { |
bool can_eliminate = true; |
for (int i = first + 1; i < last && can_eliminate; ++i) { |
@@ -1038,11 +1037,7 @@ LEnvironment* LChunkBuilder::CreateEnvironment(HEnvironment* hydrogen_env) { |
LInstruction* LChunkBuilder::DoGoto(HGoto* instr) { |
- LGoto* result = new LGoto(instr->FirstSuccessor()->block_id(), |
- instr->include_stack_check()); |
- return (instr->include_stack_check()) |
- ? AssignPointerMap(result) |
- : result; |
+ return new LGoto(instr->FirstSuccessor()->block_id()); |
} |
@@ -2268,7 +2263,12 @@ LInstruction* LChunkBuilder::DoSimulate(HSimulate* instr) { |
LInstruction* LChunkBuilder::DoStackCheck(HStackCheck* instr) { |
- return MarkAsCall(new LStackCheck, instr); |
+ if (instr->is_function_entry()) { |
+ return MarkAsCall(new LStackCheck, instr); |
+ } else { |
+ ASSERT(instr->is_backwards_branch()); |
+ return AssignEnvironment(AssignPointerMap(new LStackCheck)); |
+ } |
} |