From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Samuel Attard Date: Thu, 4 Jul 2019 15:57:09 -0700 Subject: src: expose MaybeInitializeContext to allow existing contexts Splits the node.js specific tweak intialization of NewContext into a new helper MaybeInitializeContext so that embedders with existing contexts can still use them in a node Environment now that primordials are initialized and required so early. diff --git a/src/api/environment.cc b/src/api/environment.cc index 35e8666ef771c56a1bcd441c99d4483a0d3e90bf..443f49320b2e6720f932fcfcefdbe6e539594964 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -357,6 +357,13 @@ Local NewContext(Isolate* isolate, Local object_template) { auto context = Context::New(isolate, nullptr, object_template); if (context.IsEmpty()) return context; + + return MaybeInitializeContext(context, object_template); +} + +Local MaybeInitializeContext(Local context, + Local object_template) { + Isolate* isolate = context->GetIsolate(); HandleScope handle_scope(isolate); context->SetEmbedderData(ContextEmbedderIndex::kAllowWasmCodeGeneration, diff --git a/src/node.h b/src/node.h index a2b47d1cf984ec36994b477b371cdf262191ab9c..c51fb1a6a6e497a091e2ba0b147e3d7b6a4d685c 100644 --- a/src/node.h +++ b/src/node.h @@ -303,6 +303,14 @@ NODE_EXTERN v8::Local NewContext( v8::Local object_template = v8::Local()); +// Runs Node.js-specific tweaks on an already constructed context +// This is not dead code, it is exposed for embedders so that they +// can construct their own context and still use it in a node Environment. +NODE_EXTERN v8::Local MaybeInitializeContext( + v8::Local context, + v8::Local object_template = + v8::Local()); + // If `platform` is passed, it will be used to register new Worker instances. // It can be `nullptr`, in which case creating new Workers inside of // Environments that use this `IsolateData` will not work.