summaryrefslogtreecommitdiff
path: root/src/env.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/env.cc')
-rw-r--r--src/env.cc50
1 files changed, 27 insertions, 23 deletions
diff --git a/src/env.cc b/src/env.cc
index 97cfc72a9d..78ed42f89a 100644
--- a/src/env.cc
+++ b/src/env.cc
@@ -289,29 +289,10 @@ Environment::~Environment() {
}
}
-void Environment::Start(const std::vector<std::string>& args,
- const std::vector<std::string>& exec_args,
- bool start_profiler_idle_notifier) {
+void Environment::Start(bool start_profiler_idle_notifier) {
HandleScope handle_scope(isolate());
Context::Scope context_scope(context());
- if (*TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED(
- TRACING_CATEGORY_NODE1(environment)) != 0) {
- auto traced_value = tracing::TracedValue::Create();
- traced_value->BeginArray("args");
- for (const std::string& arg : args)
- traced_value->AppendString(arg);
- traced_value->EndArray();
- traced_value->BeginArray("exec_args");
- for (const std::string& arg : exec_args)
- traced_value->AppendString(arg);
- traced_value->EndArray();
- TRACE_EVENT_NESTABLE_ASYNC_BEGIN1(
- TRACING_CATEGORY_NODE1(environment),
- "Environment", this,
- "args", std::move(traced_value));
- }
-
CHECK_EQ(0, uv_timer_init(event_loop(), timer_handle()));
uv_unref(reinterpret_cast<uv_handle_t*>(timer_handle()));
@@ -346,14 +327,37 @@ void Environment::Start(const std::vector<std::string>& args,
StartProfilerIdleNotifier();
}
- Local<Object> process_object = CreateProcessObject(this, args, exec_args);
- set_process_object(process_object);
-
static uv_once_t init_once = UV_ONCE_INIT;
uv_once(&init_once, InitThreadLocalOnce);
uv_key_set(&thread_local_env, this);
}
+MaybeLocal<Object> Environment::CreateProcessObject(
+ const std::vector<std::string>& args,
+ const std::vector<std::string>& exec_args) {
+ if (*TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED(
+ TRACING_CATEGORY_NODE1(environment)) != 0) {
+ auto traced_value = tracing::TracedValue::Create();
+ traced_value->BeginArray("args");
+ for (const std::string& arg : args) traced_value->AppendString(arg);
+ traced_value->EndArray();
+ traced_value->BeginArray("exec_args");
+ for (const std::string& arg : exec_args) traced_value->AppendString(arg);
+ traced_value->EndArray();
+ TRACE_EVENT_NESTABLE_ASYNC_BEGIN1(TRACING_CATEGORY_NODE1(environment),
+ "Environment",
+ this,
+ "args",
+ std::move(traced_value));
+ }
+
+ Local<Object> process_object =
+ node::CreateProcessObject(this, args, exec_args)
+ .FromMaybe(Local<Object>());
+ set_process_object(process_object);
+ return process_object;
+}
+
void Environment::RegisterHandleCleanups() {
HandleCleanupCb close_and_finish = [](Environment* env, uv_handle_t* handle,
void* arg) {