diff options
author | Anna Henningsen <anna@addaleax.net> | 2017-11-21 12:38:27 +0100 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2017-11-27 02:00:39 +0100 |
commit | 7306a337f6d32cedfbd002484e0b0e8a47f5ad09 (patch) | |
tree | 7f9a5fa7d37011051bc7f7ec31c29a4ebeb0b031 /src/env.h | |
parent | bb4462681cd2812d718897ca7ac8b8d48bca68f0 (diff) | |
download | android-node-v8-7306a337f6d32cedfbd002484e0b0e8a47f5ad09.tar.gz android-node-v8-7306a337f6d32cedfbd002484e0b0e8a47f5ad09.tar.bz2 android-node-v8-7306a337f6d32cedfbd002484e0b0e8a47f5ad09.zip |
src: add optional keep-alive object to SetImmediate
Adds the possibility to keep a strong persistent reference to
a JS object while a `SetImmediate()` call is in effect.
PR-URL: https://github.com/nodejs/node/pull/17183
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
Diffstat (limited to 'src/env.h')
-rw-r--r-- | src/env.h | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -686,7 +686,11 @@ class Environment { bool EmitNapiWarning(); typedef void (*native_immediate_callback)(Environment* env, void* data); - inline void SetImmediate(native_immediate_callback cb, void* data); + // cb will be called as cb(env, data) on the next event loop iteration. + // obj will be kept alive between now and after the callback has run. + inline void SetImmediate(native_immediate_callback cb, + void* data, + v8::Local<v8::Object> obj = v8::Local<v8::Object>()); // This needs to be available for the JS-land setImmediate(). void ActivateImmediateCheck(); @@ -751,6 +755,7 @@ class Environment { struct NativeImmediateCallback { native_immediate_callback cb_; void* data_; + std::unique_ptr<v8::Persistent<v8::Object>> keep_alive_; }; std::vector<NativeImmediateCallback> native_immediate_callbacks_; void RunAndClearNativeImmediates(); |