summaryrefslogtreecommitdiff
path: root/src/sharedarraybuffer_metadata.h
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-10-22 22:03:53 +0200
committerMichaƫl Zasso <targos@protonmail.com>2019-11-08 15:53:36 +0100
commit2bdeb88c27b4d8de3a8f6b7a438cf0bcb88fa927 (patch)
treec86c4faa4410216460c25053ab22061ee3f9897f /src/sharedarraybuffer_metadata.h
parent2707efd27b5ce5f9b9a6873438769394ef1c6431 (diff)
downloadandroid-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.h72
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_