diff options
Diffstat (limited to 'src/node_v8_platform-inl.h')
-rw-r--r-- | src/node_v8_platform-inl.h | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/node_v8_platform-inl.h b/src/node_v8_platform-inl.h index ed91ee3a02..2c89ee9e52 100644 --- a/src/node_v8_platform-inl.h +++ b/src/node_v8_platform-inl.h @@ -85,7 +85,11 @@ struct V8Platform { tracing_agent_->GetTracingController(); trace_state_observer_.reset(new NodeTraceStateObserver(controller)); controller->AddTraceStateObserver(trace_state_observer_.get()); - StartTracingAgent(); + tracing_file_writer_ = tracing_agent_->DefaultHandle(); + // Only start the tracing agent if we enabled any tracing categories. + if (!per_process::cli_options->trace_event_categories.empty()) { + StartTracingAgent(); + } // Tracing must be initialized before platform threads are created. platform_ = new NodePlatform(thread_pool_size, controller); v8::V8::InitializePlatform(platform_); @@ -111,9 +115,9 @@ struct V8Platform { } inline void StartTracingAgent() { - if (per_process::cli_options->trace_event_categories.empty()) { - tracing_file_writer_ = tracing_agent_->DefaultHandle(); - } else { + // Attach a new NodeTraceWriter only if this function hasn't been called + // before. + if (tracing_file_writer_.IsDefaultHandle()) { std::vector<std::string> categories = SplitString(per_process::cli_options->trace_event_categories, ','); @@ -163,6 +167,10 @@ namespace per_process { extern struct V8Platform v8_platform; } +inline void StartTracingAgent() { + return per_process::v8_platform.StartTracingAgent(); +} + inline tracing::AgentWriterHandle* GetTracingAgentWriter() { return per_process::v8_platform.GetTracingAgentWriter(); } |