Skip to content
Permalink
Browse files

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: #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>
  • Loading branch information
codebytere authored and targos committed Oct 22, 2019
1 parent 8a31136 commit b215b1665a0ea80a837c9ed2cdeea74fe622f78d
Showing with 13 additions and 3 deletions.
  1. +13 −3 src/api/environment.cc
@@ -349,6 +349,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);
@@ -358,8 +361,6 @@ Local<Context> NewContext(Isolate* isolate,
return Local<Context>();
}

InitializeContextRuntime(context);

return context;
}

@@ -393,7 +394,7 @@ void InitializeContextRuntime(Local<Context> context) {
}
}

bool InitializeContext(Local<Context> context) {
bool InitializeContextForSnapshot(Local<Context> context) {
Isolate* isolate = context->GetIsolate();
HandleScope handle_scope(isolate);

@@ -447,6 +448,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();

0 comments on commit b215b16

Please sign in to comment.
You can’t perform that action at this time.