diff options
author | Myles Borins <mylesborins@google.com> | 2019-11-20 12:32:59 -0500 |
---|---|---|
committer | Myles Borins <mylesborins@google.com> | 2019-11-21 13:36:13 -0500 |
commit | cf1f1de1e621b311c7c50fc231159b8b918169f0 (patch) | |
tree | a6d0145de47d2877d8a1c79065314f636100c177 /deps/v8/src/objects | |
parent | 03b5c46bc41f8ffd8d30c7902247134e091dc8e9 (diff) | |
download | android-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.cc | 10 | ||||
-rw-r--r-- | deps/v8/src/objects/fixed-array.h | 6 | ||||
-rw-r--r-- | deps/v8/src/objects/objects.cc | 14 |
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 |