summaryrefslogtreecommitdiff
path: root/src/node.h
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2016-05-31 16:42:52 +0200
committerBen Noordhuis <info@bnoordhuis.nl>2016-06-01 09:29:47 +0200
commitc3cd453cbae84ff6d639a2b8d7776a15b3e3431b (patch)
tree0696783460b134e57807fbe13399124679413065 /src/node.h
parent0301ce9f55d84c9a828b9e8571ab8ca0bd85b51f (diff)
downloadandroid-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.h20
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);