diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/env.h | 2 | ||||
-rw-r--r-- | src/node.cc | 40 | ||||
-rw-r--r-- | src/node_native_module.cc | 3 |
3 files changed, 33 insertions, 12 deletions
@@ -256,6 +256,7 @@ constexpr size_t kFsStatsBufferLength = kFsStatsFieldsNumber * 2; V(port2_string, "port2") \ V(port_string, "port") \ V(preference_string, "preference") \ + V(primordials_string, "primordials") \ V(priority_string, "priority") \ V(process_string, "process") \ V(promise_string, "promise") \ @@ -366,6 +367,7 @@ constexpr size_t kFsStatsBufferLength = kFsStatsFieldsNumber * 2; V(performance_entry_template, v8::Function) \ V(pipe_constructor_template, v8::FunctionTemplate) \ V(process_object, v8::Object) \ + V(primordials, v8::Object) \ V(promise_reject_callback, v8::Function) \ V(promise_wrap_template, v8::ObjectTemplate) \ V(sab_lifetimepartner_constructor_template, v8::FunctionTemplate) \ diff --git a/src/node.cc b/src/node.cc index d3a3d299ac..8593daeefc 100644 --- a/src/node.cc +++ b/src/node.cc @@ -259,18 +259,37 @@ MaybeLocal<Value> RunBootstrapping(Environment* env) { global->Set(context, FIXED_ONE_BYTE_STRING(env->isolate(), "global"), global) .FromJust(); + // Store primordials + env->set_primordials(Object::New(isolate)); + std::vector<Local<String>> primordials_params = { + FIXED_ONE_BYTE_STRING(isolate, "breakAtBootstrap"), + env->primordials_string() + }; + std::vector<Local<Value>> primordials_args = { + Boolean::New(isolate, + env->options()->debug_options().break_node_first_line), + env->primordials() + }; + MaybeLocal<Value> primordials_ret = + ExecuteBootstrapper(env, + "internal/bootstrap/primordials", + &primordials_params, + &primordials_args); + if (primordials_ret.IsEmpty()) { + return MaybeLocal<Value>(); + } + // Create binding loaders std::vector<Local<String>> loaders_params = { env->process_string(), FIXED_ONE_BYTE_STRING(isolate, "getBinding"), FIXED_ONE_BYTE_STRING(isolate, "getLinkedBinding"), FIXED_ONE_BYTE_STRING(isolate, "getInternalBinding"), - // --inspect-brk-node - FIXED_ONE_BYTE_STRING(isolate, "debugBreak"), // --experimental-modules FIXED_ONE_BYTE_STRING(isolate, "experimentalModules"), // --expose-internals - FIXED_ONE_BYTE_STRING(isolate, "exposeInternals")}; + FIXED_ONE_BYTE_STRING(isolate, "exposeInternals"), + env->primordials_string()}; std::vector<Local<Value>> loaders_args = { process, env->NewFunctionTemplate(binding::GetBinding) @@ -282,12 +301,9 @@ MaybeLocal<Value> RunBootstrapping(Environment* env) { env->NewFunctionTemplate(binding::GetInternalBinding) ->GetFunction(context) .ToLocalChecked(), - Boolean::New(isolate, - env->options()->debug_options().break_node_first_line), - Boolean::New(isolate, - env->options()->experimental_modules), - Boolean::New(isolate, - env->options()->expose_internals)}; + Boolean::New(isolate, env->options()->experimental_modules), + Boolean::New(isolate, env->options()->expose_internals), + env->primordials()}; // Bootstrap internal loaders MaybeLocal<Value> loader_exports = ExecuteBootstrapper( @@ -311,11 +327,13 @@ MaybeLocal<Value> RunBootstrapping(Environment* env) { std::vector<Local<String>> node_params = { env->process_string(), FIXED_ONE_BYTE_STRING(isolate, "loaderExports"), - FIXED_ONE_BYTE_STRING(isolate, "isMainThread")}; + FIXED_ONE_BYTE_STRING(isolate, "isMainThread"), + env->primordials_string()}; std::vector<Local<Value>> node_args = { process, loader_exports_obj, - Boolean::New(isolate, env->is_main_thread())}; + Boolean::New(isolate, env->is_main_thread()), + env->primordials()}; MaybeLocal<Value> result = ExecuteBootstrapper( env, "internal/bootstrap/node", &node_params, &node_args); diff --git a/src/node_native_module.cc b/src/node_native_module.cc index 675495e34b..662aad31d5 100644 --- a/src/node_native_module.cc +++ b/src/node_native_module.cc @@ -181,7 +181,8 @@ MaybeLocal<Function> NativeModuleLoader::CompileAsModule(Environment* env, env->require_string(), env->module_string(), env->process_string(), - env->internal_binding_string()}; + env->internal_binding_string(), + env->primordials_string()}; return per_process::native_module_loader.LookupAndCompile( env->context(), id, ¶meters, env); } |