summaryrefslogtreecommitdiff
path: root/deps/v8/src/objects
diff options
context:
space:
mode:
authorMyles Borins <mylesborins@google.com>2019-11-20 12:32:59 -0500
committerMyles Borins <mylesborins@google.com>2019-11-21 13:36:13 -0500
commitcf1f1de1e621b311c7c50fc231159b8b918169f0 (patch)
treea6d0145de47d2877d8a1c79065314f636100c177 /deps/v8/src/objects
parent03b5c46bc41f8ffd8d30c7902247134e091dc8e9 (diff)
downloadandroid-node-v8-cf1f1de1e621b311c7c50fc231159b8b918169f0.tar.gz
android-node-v8-cf1f1de1e621b311c7c50fc231159b8b918169f0.tar.bz2
android-node-v8-cf1f1de1e621b311c7c50fc231159b8b918169f0.zip
deps: patch V8 to 7.9.317.23
Refs: https://github.com/v8/v8/compare/7.9.317.20...7.9.317.23 PR-URL: https://github.com/nodejs/node/pull/30560 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Diffstat (limited to 'deps/v8/src/objects')
-rw-r--r--deps/v8/src/objects/backing-store.cc10
-rw-r--r--deps/v8/src/objects/fixed-array.h6
-rw-r--r--deps/v8/src/objects/objects.cc14
3 files changed, 28 insertions, 2 deletions
diff --git a/deps/v8/src/objects/backing-store.cc b/deps/v8/src/objects/backing-store.cc
index 7f6d2251a7..cc6741765e 100644
--- a/deps/v8/src/objects/backing-store.cc
+++ b/deps/v8/src/objects/backing-store.cc
@@ -605,8 +605,14 @@ std::shared_ptr<BackingStore> GlobalBackingStoreRegistry::Lookup(
return std::shared_ptr<BackingStore>();
}
auto backing_store = result->second.lock();
- DCHECK_EQ(buffer_start, backing_store->buffer_start());
- DCHECK_EQ(length, backing_store->byte_length());
+ CHECK_EQ(buffer_start, backing_store->buffer_start());
+ if (backing_store->is_wasm_memory()) {
+ // Grow calls to shared WebAssembly threads can be triggered from different
+ // workers, length equality cannot be guaranteed here.
+ CHECK_LE(length, backing_store->byte_length());
+ } else {
+ CHECK_EQ(length, backing_store->byte_length());
+ }
return backing_store;
}
diff --git a/deps/v8/src/objects/fixed-array.h b/deps/v8/src/objects/fixed-array.h
index 1963eef728..b9d644b492 100644
--- a/deps/v8/src/objects/fixed-array.h
+++ b/deps/v8/src/objects/fixed-array.h
@@ -338,6 +338,12 @@ class WeakArrayList : public HeapObject {
Isolate* isolate, Handle<WeakArrayList> array,
const MaybeObjectHandle& value);
+ // A version that adds to elements. This ensures that the elements are
+ // inserted atomically w.r.t GC.
+ V8_EXPORT_PRIVATE static Handle<WeakArrayList> AddToEnd(
+ Isolate* isolate, Handle<WeakArrayList> array,
+ const MaybeObjectHandle& value1, const MaybeObjectHandle& value2);
+
inline MaybeObject Get(int index) const;
inline MaybeObject Get(Isolate* isolate, int index) const;
diff --git a/deps/v8/src/objects/objects.cc b/deps/v8/src/objects/objects.cc
index ec4a8594f6..227cff8da4 100644
--- a/deps/v8/src/objects/objects.cc
+++ b/deps/v8/src/objects/objects.cc
@@ -3951,6 +3951,20 @@ Handle<WeakArrayList> WeakArrayList::AddToEnd(Isolate* isolate,
return array;
}
+Handle<WeakArrayList> WeakArrayList::AddToEnd(Isolate* isolate,
+ Handle<WeakArrayList> array,
+ const MaybeObjectHandle& value1,
+ const MaybeObjectHandle& value2) {
+ int length = array->length();
+ array = EnsureSpace(isolate, array, length + 2);
+ // Reload length; GC might have removed elements from the array.
+ length = array->length();
+ array->Set(length, *value1);
+ array->Set(length + 1, *value2);
+ array->set_length(length + 2);
+ return array;
+}
+
bool WeakArrayList::IsFull() { return length() == capacity(); }
// static