Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(138)

Unified Diff: src/crankshaft/ia32/lithium-ia32.cc

Issue 1814433002: Revert of [crankshaft] Fixing ES6 tail call elimination. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/crankshaft/ia32/lithium-ia32.h ('k') | src/crankshaft/lithium.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/crankshaft/ia32/lithium-ia32.cc
diff --git a/src/crankshaft/ia32/lithium-ia32.cc b/src/crankshaft/ia32/lithium-ia32.cc
index 2ff4cbe5a1ef90692bbaeb560e7469ef9382e3c1..c827ec5ae930b7ca7b12f11f6c5ea0e07673487f 100644
--- a/src/crankshaft/ia32/lithium-ia32.cc
+++ b/src/crankshaft/ia32/lithium-ia32.cc
@@ -590,7 +590,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;
}
@@ -905,28 +909,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_);
}
}
@@ -1107,9 +1098,6 @@
LCallWithDescriptor* result = new(zone()) LCallWithDescriptor(
descriptor, ops, zone());
- if (instr->syntactic_tail_call_mode() == TailCallMode::kAllow) {
- result->MarkAsTailCall();
- }
return MarkAsCall(DefineFixed(result, eax), instr, CANNOT_DEOPTIMIZE_EAGERLY);
}
@@ -1118,9 +1106,6 @@
LOperand* context = UseFixed(instr->context(), esi);
LOperand* function = UseFixed(instr->function(), edi);
LInvokeFunction* result = new(zone()) LInvokeFunction(context, function);
- if (instr->syntactic_tail_call_mode() == TailCallMode::kAllow) {
- result->MarkAsTailCall();
- }
return MarkAsCall(DefineFixed(result, eax), instr, CANNOT_DEOPTIMIZE_EAGERLY);
}
« no previous file with comments | « src/crankshaft/ia32/lithium-ia32.h ('k') | src/crankshaft/lithium.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698