Commit 6dc8eb67 authored by mtrofin's avatar mtrofin Committed by Commit bot

[turbofan] context and function deopt inputs are on the stack.

Deoptimization expects the context and function marker on the stack.
To let the register allocator control spilling of the live ranges
corresponding to these 2 operands, we need their use to be represented
accurately.

BUG= v8:4533
LOG=N

Review URL: https://codereview.chromium.org/1506903002

Cr-Commit-Position: refs/heads/master@{#32666}
parent 873fcd14
......@@ -307,7 +307,8 @@ void AddFrameStateInputs(Node* state, OperandGenerator* g,
types.reserve(descriptor->GetSize());
size_t value_index = 0;
inputs->push_back(OperandForDeopt(g, function, kind));
inputs->push_back(
OperandForDeopt(g, function, FrameStateInputKind::kStackSlot));
descriptor->SetType(value_index++, kMachAnyTagged);
for (StateValuesAccess::TypedNode input_node :
StateValuesAccess(parameters)) {
......@@ -315,7 +316,8 @@ void AddFrameStateInputs(Node* state, OperandGenerator* g,
descriptor->SetType(value_index++, input_node.type);
}
if (descriptor->HasContext()) {
inputs->push_back(OperandForDeopt(g, context, kind));
inputs->push_back(
OperandForDeopt(g, context, FrameStateInputKind::kStackSlot));
descriptor->SetType(value_index++, kMachAnyTagged);
}
for (StateValuesAccess::TypedNode input_node : StateValuesAccess(locals)) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment