diff options
author | Anna Henningsen <anna@addaleax.net> | 2019-10-22 22:03:53 +0200 |
---|---|---|
committer | Michaƫl Zasso <targos@protonmail.com> | 2019-11-08 15:53:36 +0100 |
commit | 2bdeb88c27b4d8de3a8f6b7a438cf0bcb88fa927 (patch) | |
tree | c86c4faa4410216460c25053ab22061ee3f9897f /src/sharedarraybuffer_metadata.h | |
parent | 2707efd27b5ce5f9b9a6873438769394ef1c6431 (diff) | |
download | android-node-v8-2bdeb88c27b4d8de3a8f6b7a438cf0bcb88fa927.tar.gz android-node-v8-2bdeb88c27b4d8de3a8f6b7a438cf0bcb88fa927.tar.bz2 android-node-v8-2bdeb88c27b4d8de3a8f6b7a438cf0bcb88fa927.zip |
src: remove custom tracking for SharedArrayBuffers
Remove custom tracking for `SharedArrayBuffer`s and their allocators
and instead let V8 do the tracking of both. This is required starting
in V8 7.9, because lifetime management for `ArrayBuffer::Allocator`s
differs from what was performed previously (i.e. it is no longer
easily possible for one Isolate to release an `ArrayBuffer` and another
to accept it into its own allocator), and the alternative would
have been adapting the `SharedArrayBuffer` tracking logic to also
apply to regular `ArrayBuffer` instances.
Refs: https://github.com/nodejs/node/pull/30044
PR-URL: https://github.com/nodejs/node/pull/30020
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'src/sharedarraybuffer_metadata.h')
-rw-r--r-- | src/sharedarraybuffer_metadata.h | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/src/sharedarraybuffer_metadata.h b/src/sharedarraybuffer_metadata.h deleted file mode 100644 index 4d89f08ee1..0000000000 --- a/src/sharedarraybuffer_metadata.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef SRC_SHAREDARRAYBUFFER_METADATA_H_ -#define SRC_SHAREDARRAYBUFFER_METADATA_H_ - -#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS - -#include "node.h" -#include <memory> - -namespace node { -namespace worker { - -class SharedArrayBufferMetadata; - -// This is an object associated with a SharedArrayBuffer, which keeps track -// of a cross-thread reference count. Once a SharedArrayBuffer is transferred -// for the first time (or is attempted to be transferred), one of these objects -// is created, and the SharedArrayBuffer is moved from internalized mode into -// externalized mode (i.e. the JS engine no longer frees the memory on its own). -// -// This will always be referred to using a std::shared_ptr, since it keeps -// a reference count and is guaranteed to be thread-safe. -typedef std::shared_ptr<SharedArrayBufferMetadata> - SharedArrayBufferMetadataReference; - -class SharedArrayBufferMetadata - : public std::enable_shared_from_this<SharedArrayBufferMetadata> { - public: - static SharedArrayBufferMetadataReference ForSharedArrayBuffer( - Environment* env, - v8::Local<v8::Context> context, - v8::Local<v8::SharedArrayBuffer> source); - ~SharedArrayBufferMetadata(); - - // Create a SharedArrayBuffer object for a specific Environment and Context. - // The created SharedArrayBuffer will be in externalized mode and has - // a hidden object attached to it, during whose lifetime the reference - // count is increased by 1. - v8::MaybeLocal<v8::SharedArrayBuffer> GetSharedArrayBuffer( - Environment* env, v8::Local<v8::Context> context); - std::shared_ptr<v8::ArrayBuffer::Allocator> allocator() const { - return allocator_; - } - - SharedArrayBufferMetadata(SharedArrayBufferMetadata&& other) = delete; - SharedArrayBufferMetadata& operator=( - SharedArrayBufferMetadata&& other) = delete; - SharedArrayBufferMetadata& operator=( - const SharedArrayBufferMetadata&) = delete; - SharedArrayBufferMetadata(const SharedArrayBufferMetadata&) = delete; - - private: - SharedArrayBufferMetadata( - const v8::SharedArrayBuffer::Contents&, - std::shared_ptr<v8::ArrayBuffer::Allocator>); - - // Attach a lifetime tracker object with a reference count to `target`. - v8::Maybe<bool> AssignToSharedArrayBuffer( - Environment* env, - v8::Local<v8::Context> context, - v8::Local<v8::SharedArrayBuffer> target); - - v8::SharedArrayBuffer::Contents contents_; - std::shared_ptr<v8::ArrayBuffer::Allocator> allocator_; -}; - -} // namespace worker -} // namespace node - -#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS - - -#endif // SRC_SHAREDARRAYBUFFER_METADATA_H_ |