summaryrefslogtreecommitdiff
path: root/deps/v8/src/ic/stub-cache.cc
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2019-08-16 11:32:46 +0200
committerMichaël Zasso <targos@protonmail.com>2019-08-19 09:25:23 +0200
commite31f0a7d25668d3c1531294d2ef44a9f3bde4ef4 (patch)
tree6c6bed9804be9df6162b2483f0a56f371f66464d /deps/v8/src/ic/stub-cache.cc
parentec16fdae540adaf710b1a86c620170b2880088f0 (diff)
downloadandroid-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.cc46
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);
}
}