summaryrefslogtreecommitdiff
path: root/deps/v8/src/compiler/escape-analysis.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/compiler/escape-analysis.cc')
-rw-r--r--deps/v8/src/compiler/escape-analysis.cc11
1 files changed, 7 insertions, 4 deletions
diff --git a/deps/v8/src/compiler/escape-analysis.cc b/deps/v8/src/compiler/escape-analysis.cc
index 94e5c86f97..ab22f6d748 100644
--- a/deps/v8/src/compiler/escape-analysis.cc
+++ b/deps/v8/src/compiler/escape-analysis.cc
@@ -14,9 +14,9 @@
#include "src/objects/map-inl.h"
#ifdef DEBUG
-#define TRACE(...) \
- do { \
- if (FLAG_trace_turbo_escape) PrintF(__VA_ARGS__); \
+#define TRACE(...) \
+ do { \
+ if (v8_flags.trace_turbo_escape) PrintF(__VA_ARGS__); \
} while (false)
#else
#define TRACE(...)
@@ -616,8 +616,11 @@ void ReduceNode(const Operator* op, EscapeAnalysisTracker::Scope* current,
Node* value = current->ValueInput(1);
const VirtualObject* vobject = current->GetVirtualObject(object);
Variable var;
+ // BoundedSize fields cannot currently be materialized by the deoptimizer,
+ // so we must not dematerialze them.
if (vobject && !vobject->HasEscaped() &&
- vobject->FieldAt(OffsetOfFieldAccess(op)).To(&var)) {
+ vobject->FieldAt(OffsetOfFieldAccess(op)).To(&var) &&
+ !FieldAccessOf(op).is_bounded_size_access) {
current->Set(var, value);
current->MarkForDeletion();
} else {