Index: src/crankshaft/x64/lithium-x64.cc |
diff --git a/src/crankshaft/x64/lithium-x64.cc b/src/crankshaft/x64/lithium-x64.cc |
index 22f87a720c2701be940521346599dccb01d909e3..f85c6a8bcfc8fffb49a359d6cb3cecc79f1122eb 100644 |
--- a/src/crankshaft/x64/lithium-x64.cc |
+++ b/src/crankshaft/x64/lithium-x64.cc |
@@ -581,7 +581,11 @@ |
LInstruction* LChunkBuilder::AssignEnvironment(LInstruction* instr) { |
HEnvironment* hydrogen_env = current_block_->last_environment(); |
- return LChunkBuilderBase::AssignEnvironment(instr, hydrogen_env); |
+ int argument_index_accumulator = 0; |
+ ZoneList<HValue*> objects_to_materialize(0, zone()); |
+ instr->set_environment(CreateEnvironment( |
+ hydrogen_env, &argument_index_accumulator, &objects_to_materialize)); |
+ return instr; |
} |
@@ -897,28 +901,15 @@ |
chunk_->AddInstruction(instr, current_block_); |
if (instr->IsCall()) { |
- HEnvironment* hydrogen_env = current_block_->last_environment(); |
HValue* hydrogen_value_for_lazy_bailout = hydrogen_val; |
- DCHECK_NOT_NULL(hydrogen_env); |
- if (instr->IsTailCall()) { |
- hydrogen_env = hydrogen_env->outer(); |
- if (hydrogen_env != nullptr && |
- hydrogen_env->frame_type() == ARGUMENTS_ADAPTOR) { |
- hydrogen_env = hydrogen_env->outer(); |
- } |
- } else { |
- if (hydrogen_val->HasObservableSideEffects()) { |
- HSimulate* sim = HSimulate::cast(hydrogen_val->next()); |
- sim->ReplayEnvironment(hydrogen_env); |
- hydrogen_value_for_lazy_bailout = sim; |
- } |
- } |
- if (hydrogen_env != nullptr) { |
- LInstruction* bailout = LChunkBuilderBase::AssignEnvironment( |
- new (zone()) LLazyBailout(), hydrogen_env); |
- bailout->set_hydrogen_value(hydrogen_value_for_lazy_bailout); |
- chunk_->AddInstruction(bailout, current_block_); |
- } |
+ if (hydrogen_val->HasObservableSideEffects()) { |
+ HSimulate* sim = HSimulate::cast(hydrogen_val->next()); |
+ sim->ReplayEnvironment(current_block_->last_environment()); |
+ hydrogen_value_for_lazy_bailout = sim; |
+ } |
+ LInstruction* bailout = AssignEnvironment(new(zone()) LLazyBailout()); |
+ bailout->set_hydrogen_value(hydrogen_value_for_lazy_bailout); |
+ chunk_->AddInstruction(bailout, current_block_); |
} |
} |
@@ -1096,9 +1087,6 @@ |
LCallWithDescriptor* result = new(zone()) LCallWithDescriptor( |
descriptor, ops, zone()); |
- if (instr->syntactic_tail_call_mode() == TailCallMode::kAllow) { |
- result->MarkAsTailCall(); |
- } |
return MarkAsCall(DefineFixed(result, rax), instr); |
} |
@@ -1107,9 +1095,6 @@ |
LOperand* context = UseFixed(instr->context(), rsi); |
LOperand* function = UseFixed(instr->function(), rdi); |
LInvokeFunction* result = new(zone()) LInvokeFunction(context, function); |
- if (instr->syntactic_tail_call_mode() == TailCallMode::kAllow) { |
- result->MarkAsTailCall(); |
- } |
return MarkAsCall(DefineFixed(result, rax), instr, CANNOT_DEOPTIMIZE_EAGERLY); |
} |