src: split up InitializeContext

This splits out code from InitializeContext into a
new function InitializeContextForSnapshot and
moves the callsite of InitializeContextRuntime from
NewContext to InitializeContext - embedders don't
necessarily call NewContext and so need to be able
to guarantee these functions are called regardless.

PR-URL: https://github.com/nodejs/node/pull/30067
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: David Carlier <devnexen@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
Shelley Vohr
2019-10-22 11:11:25 -07:00
parent 009952935f
commit b086e38d85

View File

@@ -361,6 +361,9 @@ MaybeLocal<Object> GetPerContextExports(Local<Context> context) {
return handle_scope.Escape(exports);
}
// Any initialization logic should be performed in
// InitializeContext, because embedders don't necessarily
// call NewContext and so they will experience breakages.
Local<Context> NewContext(Isolate* isolate,
Local<ObjectTemplate> object_template) {
auto context = Context::New(isolate, nullptr, object_template);
@@ -370,8 +373,6 @@ Local<Context> NewContext(Isolate* isolate,
return Local<Context>();
}
InitializeContextRuntime(context);
return context;
}
@@ -405,7 +406,7 @@ void InitializeContextRuntime(Local<Context> context) {
}
}
bool InitializeContext(Local<Context> context) {
bool InitializeContextForSnapshot(Local<Context> context) {
Isolate* isolate = context->GetIsolate();
HandleScope handle_scope(isolate);
@@ -459,6 +460,15 @@ bool InitializeContext(Local<Context> context) {
return true;
}
bool InitializeContext(Local<Context> context) {
if (!InitializeContextForSnapshot(context)) {
return false;
}
InitializeContextRuntime(context);
return true;
}
uv_loop_t* GetCurrentEventLoop(Isolate* isolate) {
HandleScope handle_scope(isolate);
Local<Context> context = isolate->GetCurrentContext();