diff options
author | Michaël Zasso <targos@protonmail.com> | 2019-08-16 11:32:46 +0200 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2019-08-19 09:25:23 +0200 |
commit | e31f0a7d25668d3c1531294d2ef44a9f3bde4ef4 (patch) | |
tree | 6c6bed9804be9df6162b2483f0a56f371f66464d /deps/v8/src/ic/stub-cache.cc | |
parent | ec16fdae540adaf710b1a86c620170b2880088f0 (diff) | |
download | android-node-v8-e31f0a7d25668d3c1531294d2ef44a9f3bde4ef4.tar.gz android-node-v8-e31f0a7d25668d3c1531294d2ef44a9f3bde4ef4.tar.bz2 android-node-v8-e31f0a7d25668d3c1531294d2ef44a9f3bde4ef4.zip |
deps: update V8 to 7.7.299.4
PR-URL: https://github.com/nodejs/node/pull/28918
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Diffstat (limited to 'deps/v8/src/ic/stub-cache.cc')
-rw-r--r-- | deps/v8/src/ic/stub-cache.cc | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/deps/v8/src/ic/stub-cache.cc b/deps/v8/src/ic/stub-cache.cc index bdac1ce334..04381bf693 100644 --- a/deps/v8/src/ic/stub-cache.cc +++ b/deps/v8/src/ic/stub-cache.cc @@ -9,6 +9,7 @@ #include "src/heap/heap-inl.h" // For InYoungGeneration(). #include "src/ic/ic-inl.h" #include "src/logging/counters.h" +#include "src/objects/tagged-value-inl.h" namespace v8 { namespace internal { @@ -85,25 +86,28 @@ void StubCache::Set(Name name, Map map, MaybeObject handler) { // Compute the primary entry. int primary_offset = PrimaryOffset(name, map); Entry* primary = entry(primary_, primary_offset); - MaybeObject old_handler(primary->value); - + MaybeObject old_handler( + TaggedValue::ToMaybeObject(isolate(), primary->value)); // If the primary entry has useful data in it, we retire it to the // secondary cache before overwriting it. if (old_handler != MaybeObject::FromObject( - isolate_->builtins()->builtin(Builtins::kIllegal)) && - primary->map != kNullAddress) { - Map old_map = Map::cast(Object(primary->map)); - int seed = PrimaryOffset(Name::cast(Object(primary->key)), old_map); - int secondary_offset = - SecondaryOffset(Name::cast(Object(primary->key)), seed); + isolate()->builtins()->builtin(Builtins::kIllegal)) && + !primary->map.IsSmi()) { + Map old_map = + Map::cast(StrongTaggedValue::ToObject(isolate(), primary->map)); + int seed = PrimaryOffset( + Name::cast(StrongTaggedValue::ToObject(isolate(), primary->key)), + old_map); + int secondary_offset = SecondaryOffset( + Name::cast(StrongTaggedValue::ToObject(isolate(), primary->key)), seed); Entry* secondary = entry(secondary_, secondary_offset); *secondary = *primary; } // Update primary cache. - primary->key = name.ptr(); - primary->value = handler.ptr(); - primary->map = map.ptr(); + primary->key = StrongTaggedValue(name); + primary->value = TaggedValue(handler); + primary->map = StrongTaggedValue(map); isolate()->counters()->megamorphic_stub_cache_updates()->Increment(); } @@ -111,13 +115,13 @@ MaybeObject StubCache::Get(Name name, Map map) { DCHECK(CommonStubCacheChecks(this, name, map, MaybeObject())); int primary_offset = PrimaryOffset(name, map); Entry* primary = entry(primary_, primary_offset); - if (primary->key == name.ptr() && primary->map == map.ptr()) { - return MaybeObject(primary->value); + if (primary->key == name && primary->map == map) { + return TaggedValue::ToMaybeObject(isolate(), primary->value); } int secondary_offset = SecondaryOffset(name, primary_offset); Entry* secondary = entry(secondary_, secondary_offset); - if (secondary->key == name.ptr() && secondary->map == map.ptr()) { - return MaybeObject(secondary->value); + if (secondary->key == name && secondary->map == map) { + return TaggedValue::ToMaybeObject(isolate(), secondary->value); } return MaybeObject(); } @@ -127,14 +131,14 @@ void StubCache::Clear() { isolate_->builtins()->builtin(Builtins::kIllegal)); Name empty_string = ReadOnlyRoots(isolate()).empty_string(); for (int i = 0; i < kPrimaryTableSize; i++) { - primary_[i].key = empty_string.ptr(); - primary_[i].map = kNullAddress; - primary_[i].value = empty.ptr(); + primary_[i].key = StrongTaggedValue(empty_string); + primary_[i].map = StrongTaggedValue(Smi::zero()); + primary_[i].value = TaggedValue(empty); } for (int j = 0; j < kSecondaryTableSize; j++) { - secondary_[j].key = empty_string.ptr(); - secondary_[j].map = kNullAddress; - secondary_[j].value = empty.ptr(); + secondary_[j].key = StrongTaggedValue(empty_string); + secondary_[j].map = StrongTaggedValue(Smi::zero()); + secondary_[j].value = TaggedValue(empty); } } |