Skip to content

Commit 6b455eb

Browse files
LeszekSwirskiV8 LUCI CQ
authored andcommitted
[maglev] Fix non-materialized receiver & closure
Stack walks expect the receiver and closure to be materialized. Bug: 368311899 Change-Id: I839d9d68ec39a534083bf86261bc854795945fea Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5881775 Commit-Queue: Leszek Swirski <[email protected]> Reviewed-by: Patrick Thier <[email protected]> Commit-Queue: Patrick Thier <[email protected]> Auto-Submit: Leszek Swirski <[email protected]> Cr-Commit-Position: refs/heads/main@{#96228}
1 parent 50645cf commit 6b455eb

1 file changed

Lines changed: 8 additions & 1 deletion

File tree

src/maglev/maglev-graph-builder.cc

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1392,7 +1392,14 @@ DeoptFrame MaglevGraphBuilder::GetDeoptFrameForLazyDeoptHelper(
13921392
current_source_position_, GetParentDeoptFrame());
13931393
ret.frame_state()->ForEachValue(
13941394
*compilation_unit_, [this](ValueNode* node, interpreter::Register reg) {
1395-
AddDeoptUse(node);
1395+
// Receiver and closure values have to be materialized, even if
1396+
// they don't otherwise escape.
1397+
if (reg == interpreter::Register::receiver() ||
1398+
reg == interpreter::Register::function_closure()) {
1399+
node->add_use();
1400+
} else {
1401+
AddDeoptUse(node);
1402+
}
13961403
});
13971404
AddDeoptUse(ret.closure());
13981405
return ret;

0 commit comments

Comments
 (0)