Commit 17da9e70 authored by Tobias Tebbi's avatar Tobias Tebbi Committed by V8 LUCI CQ

[compiler] fix FrameState revisit bug in escape analysis

Bug: chromium:1340335, chromium:1315901
Change-Id: Ic348e8a66df098f64cf1893f83c145ac7bdb1ecb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3732939Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Auto-Submit: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#81434}
parent e819e241
......@@ -78,6 +78,8 @@ class ReduceScope {
explicit ReduceScope(Node* node, Reduction* reduction)
: current_node_(node), reduction_(reduction) {}
void SetValueChanged() { reduction()->set_value_changed(); }
protected:
Node* current_node() const { return current_node_; }
Reduction* reduction() { return reduction_; }
......@@ -833,7 +835,9 @@ void ReduceNode(const Operator* op, EscapeAnalysisTracker::Scope* current,
break;
}
case IrOpcode::kStateValues:
// These uses are always safe.
// We visit StateValue nodes through their correpsonding FrameState node,
// so we need to make sure we revisit the FrameState.
current->SetValueChanged();
break;
case IrOpcode::kFrameState: {
// We mark the receiver as escaping due to the non-standard `.getThis`
......
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