From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Samuel Attard Date: Wed, 17 Jul 2019 14:45:59 -0700 Subject: chore: split CreateEnvironment into CreateEnvironment and BootstrapEnvironment This allows us to run operations on a created but not yet bootstrapped environment such as setting up an InspectorAgent diff --git a/src/api/environment.cc b/src/api/environment.cc index ae26cb7e9ef55fc0b965e28de4686aec87f42522..50886f4a998f1e7f346a6b7fad91ce49c3a7cdff 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -263,7 +263,8 @@ Environment* CreateEnvironment(IsolateData* isolate_data, int argc, const char* const* argv, int exec_argc, - const char* const* exec_argv) { + const char* const* exec_argv, + bool bootstrap) { Isolate* isolate = context->GetIsolate(); HandleScope handle_scope(isolate); Context::Scope context_scope(context); @@ -281,9 +282,16 @@ Environment* CreateEnvironment(IsolateData* isolate_data, Environment::kOwnsProcessState | Environment::kOwnsInspector)); env->InitializeLibuv(per_process::v8_is_profiling); - if (env->RunBootstrapping().IsEmpty()) { + if (bootstrap && !BootstrapEnvironment(env)) { return nullptr; } + return env; +} + +bool BootstrapEnvironment(Environment* env) { + if (env->RunBootstrapping().IsEmpty()) { + return false; + } std::vector> parameters = { env->require_string(), @@ -296,9 +304,10 @@ Environment* CreateEnvironment(IsolateData* isolate_data, if (ExecuteBootstrapper( env, "internal/bootstrap/environment", ¶meters, &arguments) .IsEmpty()) { - return nullptr; + return false; } - return env; + + return true; } void FreeEnvironment(Environment* env) { diff --git a/src/node.h b/src/node.h index 80a27dc734a81a7ca8d888d1d55fc8d24a536280..9c6dcbf7014f7cf87f7f66886cbf255978c244fa 100644 --- a/src/node.h +++ b/src/node.h @@ -326,7 +326,9 @@ NODE_EXTERN Environment* CreateEnvironment(IsolateData* isolate_data, int argc, const char* const* argv, int exec_argc, - const char* const* exec_argv); + const char* const* exec_argv, + bool bootstrap = true); +NODE_EXTERN bool BootstrapEnvironment(Environment* env); NODE_EXTERN void LoadEnvironment(Environment* env); NODE_EXTERN void FreeEnvironment(Environment* env);