[turboshaft] Fix wrong reconstruction of FrameStates

Fixed: v8:13520
Bug: v8:12783
Change-Id: Ifea57ac5fda9a20be1fe6aa4c8e05ff13bfe9f5a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4051206
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Darius Mercadier <dmercadier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#84471}
This commit is contained in:
Darius M 2022-11-24 17:41:07 +01:00 committed by V8 LUCI CQ
parent be40ab1b6a
commit af6f1c4736

View File

@ -1089,6 +1089,15 @@ std::pair<Node*, MachineType> ScheduleBuilder::BuildDeoptInput(
MachineType type;
OpIndex input;
it->ConsumeInput(&type, &input);
const Operation& op = input_graph.Get(input);
if (op.outputs_rep()[0] == RegisterRepresentation::Word64() &&
type.representation() == MachineRepresentation::kWord32) {
// 64 to 32-bit conversion is implicit in turboshaft, but explicit in
// turbofan, so we insert this conversion.
Node* conversion =
AddNode(machine.TruncateInt64ToInt32(), {GetNode(input)});
return {conversion, type};
}
return {GetNode(input), type};
}
case Instr::kDematerializedObject: {