summaryrefslogtreecommitdiff
path: root/src/node_v8_platform-inl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/node_v8_platform-inl.h')
-rw-r--r--src/node_v8_platform-inl.h16
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();
}