summaryrefslogtreecommitdiff
path: root/deps/v8/src/tracing/tracing-category-observer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/tracing/tracing-category-observer.cc')
-rw-r--r--deps/v8/src/tracing/tracing-category-observer.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/deps/v8/src/tracing/tracing-category-observer.cc b/deps/v8/src/tracing/tracing-category-observer.cc
index 3debacb548..feee3807c6 100644
--- a/deps/v8/src/tracing/tracing-category-observer.cc
+++ b/deps/v8/src/tracing/tracing-category-observer.cc
@@ -16,17 +16,32 @@ TracingCategoryObserver* TracingCategoryObserver::instance_ = nullptr;
void TracingCategoryObserver::SetUp() {
TracingCategoryObserver::instance_ = new TracingCategoryObserver();
+#if defined(V8_USE_PERFETTO)
+ TrackEvent::AddSessionObserver(instance_);
+ // Fire the observer if tracing is already in progress.
+ if (TrackEvent::IsEnabled()) instance_->OnStart({});
+#else
i::V8::GetCurrentPlatform()->GetTracingController()->AddTraceStateObserver(
TracingCategoryObserver::instance_);
+#endif
}
void TracingCategoryObserver::TearDown() {
+#if defined(V8_USE_PERFETTO)
+ TrackEvent::RemoveSessionObserver(TracingCategoryObserver::instance_);
+#else
i::V8::GetCurrentPlatform()->GetTracingController()->RemoveTraceStateObserver(
TracingCategoryObserver::instance_);
+#endif
delete TracingCategoryObserver::instance_;
}
+#if defined(V8_USE_PERFETTO)
+void TracingCategoryObserver::OnStart(
+ const perfetto::DataSourceBase::StartArgs&) {
+#else
void TracingCategoryObserver::OnTraceEnabled() {
+#endif
bool enabled = false;
TRACE_EVENT_CATEGORY_GROUP_ENABLED(
TRACE_DISABLED_BY_DEFAULT("v8.runtime_stats"), &enabled);
@@ -66,7 +81,12 @@ void TracingCategoryObserver::OnTraceEnabled() {
}
}
+#if defined(V8_USE_PERFETTO)
+void TracingCategoryObserver::OnStop(
+ const perfetto::DataSourceBase::StopArgs&) {
+#else
void TracingCategoryObserver::OnTraceDisabled() {
+#endif
i::TracingFlags::runtime_stats.fetch_and(
~(ENABLED_BY_TRACING | ENABLED_BY_SAMPLING), std::memory_order_relaxed);