diff options
author | Anna Henningsen <anna@addaleax.net> | 2018-05-13 19:39:32 +0200 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2018-06-06 19:43:46 +0200 |
commit | b0404047c1e4f7652aaf6ecf911d5850d5acf570 (patch) | |
tree | f8e09cfda61b24d4c548e6d9ab560bfaa5d3a03a /src/node_messaging.h | |
parent | 749a13b76c351d515ed489844ece575b8918d2ed (diff) | |
download | android-node-v8-b0404047c1e4f7652aaf6ecf911d5850d5acf570.tar.gz android-node-v8-b0404047c1e4f7652aaf6ecf911d5850d5acf570.tar.bz2 android-node-v8-b0404047c1e4f7652aaf6ecf911d5850d5acf570.zip |
worker: add `SharedArrayBuffer` sharing
Logic is added to the `MessagePort` mechanism that
attaches hidden objects to those instances when they are transferred
that track their lifetime and maintain a reference count, to make
sure that memory is freed at the appropriate times.
Thanks to Stephen Belanger for reviewing this change in its original PR.
Refs: https://github.com/ayojs/ayo/pull/106
PR-URL: https://github.com/nodejs/node/pull/20876
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Shingo Inoue <leko.noor@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
Reviewed-By: John-David Dalton <john.david.dalton@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Diffstat (limited to 'src/node_messaging.h')
-rw-r--r-- | src/node_messaging.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/node_messaging.h b/src/node_messaging.h index 074267bb67..ff8fcc7243 100644 --- a/src/node_messaging.h +++ b/src/node_messaging.h @@ -5,8 +5,8 @@ #include "env.h" #include "node_mutex.h" +#include "sharedarraybuffer_metadata.h" #include <list> -#include <memory> namespace node { namespace worker { @@ -37,6 +37,9 @@ class Message { v8::Local<v8::Value> input, v8::Local<v8::Value> transfer_list); + // Internal method of Message that is called when a new SharedArrayBuffer + // object is encountered in the incoming value's structure. + void AddSharedArrayBuffer(SharedArrayBufferMetadataReference ref); // Internal method of Message that is called once serialization finishes // and that transfers ownership of `data` to this message. void AddMessagePort(std::unique_ptr<MessagePortData>&& data); @@ -44,6 +47,7 @@ class Message { private: MallocedBuffer<char> main_message_buf_; std::vector<MallocedBuffer<char>> array_buffer_contents_; + std::vector<SharedArrayBufferMetadataReference> shared_array_buffers_; std::vector<std::unique_ptr<MessagePortData>> message_ports_; friend class MessagePort; |