current commit
260724.12 · src: add perfetto trace agent
#include "tracing/agent.h"

#ifdef V8_USE_PERFETTO
#include "tracing/agent_perfetto.h"
#else
#include "tracing/agent_legacy.h"
#endif

#include "tracing/trace_event_helper.h"

namespace node {
namespace tracing {

namespace {
Agent* g_agent = nullptr;
}  // namespace

Agent* Agent::GetInstance() {
  return g_agent;
}

void Agent::Deleter::operator()(Agent* agent) {
  CHECK_EQ(agent, g_agent);
  g_agent = nullptr;
  TraceEventHelper::SetTracingController(nullptr);
  delete agent;
}

std::unique_ptr<Agent, Agent::Deleter> Agent::CreateDefault() {
  CHECK_NULL(g_agent);

#ifdef V8_USE_PERFETTO
  auto agent = new PerfettoTracingAgent();
#else
  auto agent = new LegacyTracingAgent();
#endif

  g_agent = agent;
  TraceEventHelper::SetTracingController(agent->GetTracingController());
  return std::unique_ptr<Agent, Agent::Deleter>(agent);
}

}  // namespace tracing
}  // namespace node