diff options
Diffstat (limited to 'deps/v8/src/transitions.cc')
-rw-r--r-- | deps/v8/src/transitions.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/deps/v8/src/transitions.cc b/deps/v8/src/transitions.cc index 3dbc1602fa..bdf16d7eef 100644 --- a/deps/v8/src/transitions.cc +++ b/deps/v8/src/transitions.cc @@ -690,5 +690,23 @@ void TransitionArray::Sort() { DCHECK(IsSortedNoDuplicates()); } +bool TransitionsAccessor::HasIntegrityLevelTransitionTo( + Map to, Symbol* out_symbol, PropertyAttributes* out_integrity_level) { + ReadOnlyRoots roots(isolate_); + if (SearchSpecial(roots.frozen_symbol()) == to) { + if (out_integrity_level) *out_integrity_level = FROZEN; + if (out_symbol) *out_symbol = roots.frozen_symbol(); + } else if (SearchSpecial(roots.sealed_symbol()) == to) { + if (out_integrity_level) *out_integrity_level = SEALED; + if (out_symbol) *out_symbol = roots.sealed_symbol(); + } else if (SearchSpecial(roots.nonextensible_symbol()) == to) { + if (out_integrity_level) *out_integrity_level = NONE; + if (out_symbol) *out_symbol = roots.nonextensible_symbol(); + } else { + return false; + } + return true; +} + } // namespace internal } // namespace v8 |