diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2016-05-31 16:42:52 +0200 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2016-06-01 09:29:47 +0200 |
commit | c3cd453cbae84ff6d639a2b8d7776a15b3e3431b (patch) | |
tree | 0696783460b134e57807fbe13399124679413065 /src/node.h | |
parent | 0301ce9f55d84c9a828b9e8571ab8ca0bd85b51f (diff) | |
download | android-node-v8-c3cd453cbae84ff6d639a2b8d7776a15b3e3431b.tar.gz android-node-v8-c3cd453cbae84ff6d639a2b8d7776a15b3e3431b.tar.bz2 android-node-v8-c3cd453cbae84ff6d639a2b8d7776a15b3e3431b.zip |
src: make IsolateData creation explicit
Make it easier to reason about the lifetime and the ownership of the
IsolateData instance by making its creation explicit and by removing
reference counting logic.
The creator of the Environment is now responsible for passing in the
IsolateData instance and for keeping it alive as long as the Environment
is alive.
PR-URL: https://github.com/nodejs/node/pull/7082
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Diffstat (limited to 'src/node.h')
-rw-r--r-- | src/node.h | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/src/node.h b/src/node.h index 42c5ac59d7..c1c149cdc3 100644 --- a/src/node.h +++ b/src/node.h @@ -190,28 +190,22 @@ NODE_EXTERN void Init(int* argc, int* exec_argc, const char*** exec_argv); +class IsolateData; class Environment; -NODE_EXTERN Environment* CreateEnvironment(v8::Isolate* isolate, - struct uv_loop_s* loop, - v8::Local<v8::Context> context, - int argc, - const char* const* argv, - int exec_argc, - const char* const* exec_argv); -NODE_EXTERN void LoadEnvironment(Environment* env); -NODE_EXTERN void FreeEnvironment(Environment* env); +NODE_EXTERN IsolateData* CreateIsolateData(v8::Isolate* isolate, + struct uv_loop_s* loop); +NODE_EXTERN void FreeIsolateData(IsolateData* isolate_data); -// NOTE: Calling this is the same as calling -// CreateEnvironment() + LoadEnvironment() from above. -// `uv_default_loop()` will be passed as `loop`. -NODE_EXTERN Environment* CreateEnvironment(v8::Isolate* isolate, +NODE_EXTERN Environment* CreateEnvironment(IsolateData* isolate_data, v8::Local<v8::Context> context, int argc, const char* const* argv, int exec_argc, const char* const* exec_argv); +NODE_EXTERN void LoadEnvironment(Environment* env); +NODE_EXTERN void FreeEnvironment(Environment* env); NODE_EXTERN void EmitBeforeExit(Environment* env); NODE_EXTERN int EmitExit(Environment* env); |