summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/env.h2
-rw-r--r--src/node.cc40
-rw-r--r--src/node_native_module.cc3
3 files changed, 33 insertions, 12 deletions
diff --git a/src/env.h b/src/env.h
index 25f1cd0689..f76fb14990 100644
--- a/src/env.h
+++ b/src/env.h
@@ -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, &parameters, env);
}