diff --git a/src/node.cc b/src/node.cc index 90eee0fb9fe..a678c177f3d 100644 --- a/src/node.cc +++ b/src/node.cc @@ -200,7 +200,6 @@ static uv_async_t dispatch_debug_messages_async; static Mutex node_isolate_mutex; static v8::Isolate* node_isolate; -static tracing::Agent* tracing_agent; static node::DebugOptions debug_options; @@ -228,16 +227,33 @@ static struct { } #endif // HAVE_INSPECTOR + void StartTracingAgent() { + CHECK(tracing_agent_ == nullptr); + tracing_agent_ = new tracing::Agent(); + tracing_agent_->Start(platform_, trace_enabled_categories); + } + + void StopTracingAgent() { + tracing_agent_->Stop(); + } + v8::Platform* platform_; + tracing::Agent* tracing_agent_; #else // !NODE_USE_V8_PLATFORM void Initialize(int thread_pool_size) {} void PumpMessageLoop(Isolate* isolate) {} void Dispose() {} bool StartInspector(Environment *env, const char* script_path, - int port, bool wait) { + const node::DebugOptions& options) { env->ThrowError("Node compiled with NODE_USE_V8_PLATFORM=0"); return false; // make compiler happy } + + void StartTracingAgent() { + fprintf(stderr, "Node compiled with NODE_USE_V8_PLATFORM=0, " + "so event tracing is not available.\n"); + } + void StopTracingAgent() {} #endif // !NODE_USE_V8_PLATFORM } v8_platform; @@ -3386,7 +3402,7 @@ void SetupProcessObject(Environment* env, void SignalExit(int signo) { uv_tty_reset_mode(); if (trace_enabled) { - tracing_agent->Stop(); + v8_platform.StopTracingAgent(); } #ifdef __FreeBSD__ // FreeBSD has a nasty bug, see RegisterSignalHandler for details @@ -4533,15 +4549,14 @@ int Start(int argc, char** argv) { if (trace_enabled) { fprintf(stderr, "Warning: Trace event is an experimental feature " "and could change at any time.\n"); - tracing_agent = new tracing::Agent(); - tracing_agent->Start(v8_platform.platform_, trace_enabled_categories); + v8_platform.StartTracingAgent(); } V8::Initialize(); v8_initialized = true; const int exit_code = Start(uv_default_loop(), argc, argv, exec_argc, exec_argv); if (trace_enabled) { - tracing_agent->Stop(); + v8_platform.StopTracingAgent(); } v8_initialized = false; V8::Dispose();