| 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));
|
| + }
|
| }
|
|
|
|
|
|
|