summaryrefslogtreecommitdiff
path: root/chromium/v8/src/compiler/escape-analysis.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/v8/src/compiler/escape-analysis.cc')
-rw-r--r--chromium/v8/src/compiler/escape-analysis.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/chromium/v8/src/compiler/escape-analysis.cc b/chromium/v8/src/compiler/escape-analysis.cc
index 316db298da8..bad74181f30 100644
--- a/chromium/v8/src/compiler/escape-analysis.cc
+++ b/chromium/v8/src/compiler/escape-analysis.cc
@@ -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_; }
@@ -803,7 +805,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`