diff options
author | Michaƫl Zasso <targos@protonmail.com> | 2018-05-31 11:11:57 +0200 |
---|---|---|
committer | Myles Borins <mylesborins@google.com> | 2018-06-01 09:58:27 +0200 |
commit | 352a525eb984b8fa2d6f0f6fd68395e6a080bba4 (patch) | |
tree | a105ae93f8fd8f533cce19a429f1b6e95d6e11ca /deps/v8/src/transitions-inl.h | |
parent | faf449ca0490f5371dc6cbbc94a87eb697b00fcc (diff) | |
download | node-new-352a525eb984b8fa2d6f0f6fd68395e6a080bba4.tar.gz |
deps: update V8 to 6.7.288.43
PR-URL: https://github.com/nodejs/node/pull/19989
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Matheus Marchini <matheus@sthima.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
Diffstat (limited to 'deps/v8/src/transitions-inl.h')
-rw-r--r-- | deps/v8/src/transitions-inl.h | 57 |
1 files changed, 31 insertions, 26 deletions
diff --git a/deps/v8/src/transitions-inl.h b/deps/v8/src/transitions-inl.h index ac564ad9c2..59aac025ee 100644 --- a/deps/v8/src/transitions-inl.h +++ b/deps/v8/src/transitions-inl.h @@ -15,23 +15,18 @@ namespace v8 { namespace internal { -template <TransitionsAccessor::Encoding enc> WeakCell* TransitionsAccessor::GetTargetCell() { DCHECK(!needs_reload_); - if (target_cell_ != nullptr) return target_cell_; - if (enc == kWeakCell) { - target_cell_ = WeakCell::cast(raw_transitions_); - } else if (enc == kHandler) { - target_cell_ = StoreHandler::GetTransitionCell(raw_transitions_); - } else { - UNREACHABLE(); + if (target_cell_ == nullptr) { + target_cell_ = + StoreHandler::GetTransitionCell(raw_transitions_->ToStrongHeapObject()); } return target_cell_; } TransitionArray* TransitionsAccessor::transitions() { DCHECK_EQ(kFullTransitionArray, encoding()); - return TransitionArray::cast(raw_transitions_); + return TransitionArray::cast(raw_transitions_->ToStrongHeapObject()); } CAST_ACCESSOR(TransitionArray) @@ -71,23 +66,25 @@ Name* TransitionArray::GetKey(int transition_number) { } Name* TransitionsAccessor::GetKey(int transition_number) { - WeakCell* cell = nullptr; + Map* map = nullptr; switch (encoding()) { case kPrototypeInfo: case kUninitialized: UNREACHABLE(); return nullptr; - case kWeakCell: - cell = GetTargetCell<kWeakCell>(); + case kWeakRef: + map = Map::cast(raw_transitions_->ToWeakHeapObject()); break; - case kHandler: - cell = GetTargetCell<kHandler>(); + case kHandler: { + WeakCell* cell = GetTargetCell(); + DCHECK(!cell->cleared()); + map = Map::cast(cell->value()); break; + } case kFullTransitionArray: return transitions()->GetKey(transition_number); } - DCHECK(!cell->cleared()); - return GetSimpleTransitionKey(Map::cast(cell->value())); + return GetSimpleTransitionKey(map); } void TransitionArray::SetKey(int transition_number, Name* key) { @@ -127,23 +124,22 @@ Map* TransitionArray::GetTarget(int transition_number) { } Map* TransitionsAccessor::GetTarget(int transition_number) { - WeakCell* cell = nullptr; switch (encoding()) { case kPrototypeInfo: case kUninitialized: UNREACHABLE(); return nullptr; - case kWeakCell: - cell = GetTargetCell<kWeakCell>(); - break; - case kHandler: - cell = GetTargetCell<kHandler>(); - break; + case kWeakRef: + return Map::cast(raw_transitions_->ToWeakHeapObject()); + case kHandler: { + WeakCell* cell = GetTargetCell(); + DCHECK(!cell->cleared()); + return Map::cast(cell->value()); + } case kFullTransitionArray: return transitions()->GetTarget(transition_number); } - DCHECK(!cell->cleared()); - return Map::cast(cell->value()); + UNREACHABLE(); } void TransitionArray::SetTarget(int transition_number, Object* value) { @@ -152,6 +148,15 @@ void TransitionArray::SetTarget(int transition_number, Object* value) { set(ToTargetIndex(transition_number), value); } +bool TransitionArray::GetTargetIfExists(int transition_number, Isolate* isolate, + Map** target) { + Object* raw = GetRawTarget(transition_number); + if (raw->IsUndefined(isolate)) { + return false; + } + *target = TransitionsAccessor::GetTargetFromRaw(raw); + return true; +} int TransitionArray::SearchName(Name* name, int* out_insertion_index) { DCHECK(name->IsUniqueName()); @@ -202,7 +207,7 @@ void TransitionArray::Set(int transition_number, Name* key, Object* target) { int TransitionArray::Capacity() { if (length() <= kFirstIndex) return 0; - return (length() - kFirstIndex) / kTransitionSize; + return (length() - kFirstIndex) / kEntrySize; } void TransitionArray::SetNumberOfTransitions(int number_of_transitions) { |