LCOV - code coverage report
Current view: top level - src/tracing - tracing-category-observer.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 22 31 71.0 %
Date: 2019-02-19 Functions: 3 4 75.0 %

          Line data    Source code
       1             : // Copyright 2016 the V8 project authors. All rights reserved.
       2             : // Use of this source code is governed by a BSD-style license that can be
       3             : // found in the LICENSE file.
       4             : 
       5             : #include "src/tracing/tracing-category-observer.h"
       6             : 
       7             : #include "src/base/atomic-utils.h"
       8             : #include "src/flags.h"
       9             : #include "src/tracing/trace-event.h"
      10             : #include "src/v8.h"
      11             : 
      12             : namespace v8 {
      13             : namespace tracing {
      14             : 
      15             : TracingCategoryObserver* TracingCategoryObserver::instance_ = nullptr;
      16             : 
      17       59583 : void TracingCategoryObserver::SetUp() {
      18      119166 :   TracingCategoryObserver::instance_ = new TracingCategoryObserver();
      19       59583 :   v8::internal::V8::GetCurrentPlatform()
      20       59583 :       ->GetTracingController()
      21       59583 :       ->AddTraceStateObserver(TracingCategoryObserver::instance_);
      22       59583 : }
      23             : 
      24       58472 : void TracingCategoryObserver::TearDown() {
      25       58472 :   v8::internal::V8::GetCurrentPlatform()
      26       58472 :       ->GetTracingController()
      27       58472 :       ->RemoveTraceStateObserver(TracingCategoryObserver::instance_);
      28       58472 :   delete TracingCategoryObserver::instance_;
      29       58472 : }
      30             : 
      31           1 : void TracingCategoryObserver::OnTraceEnabled() {
      32             :   bool enabled = false;
      33           2 :   TRACE_EVENT_CATEGORY_GROUP_ENABLED(
      34             :       TRACE_DISABLED_BY_DEFAULT("v8.runtime_stats"), &enabled);
      35           1 :   if (enabled) {
      36             :     base::AsAtomic32::Relaxed_Store(
      37             :         &v8::internal::FLAG_runtime_stats,
      38           0 :         (v8::internal::FLAG_runtime_stats | ENABLED_BY_TRACING));
      39             :   }
      40           2 :   TRACE_EVENT_CATEGORY_GROUP_ENABLED(
      41             :       TRACE_DISABLED_BY_DEFAULT("v8.runtime_stats_sampling"), &enabled);
      42           1 :   if (enabled) {
      43             :     base::AsAtomic32::Relaxed_Store(
      44             :         &v8::internal::FLAG_runtime_stats,
      45           0 :         v8::internal::FLAG_runtime_stats | ENABLED_BY_SAMPLING);
      46             :   }
      47           2 :   TRACE_EVENT_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("v8.gc_stats"),
      48             :                                      &enabled);
      49           1 :   if (enabled) {
      50           0 :     v8::internal::FLAG_gc_stats |= ENABLED_BY_TRACING;
      51             :   }
      52           2 :   TRACE_EVENT_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("v8.ic_stats"),
      53             :                                      &enabled);
      54           1 :   if (enabled) {
      55           0 :     v8::internal::FLAG_ic_stats |= ENABLED_BY_TRACING;
      56             :   }
      57           1 : }
      58             : 
      59           0 : void TracingCategoryObserver::OnTraceDisabled() {
      60             :   base::AsAtomic32::Relaxed_Store(
      61             :       &v8::internal::FLAG_runtime_stats,
      62             :       v8::internal::FLAG_runtime_stats &
      63           0 :           ~(ENABLED_BY_TRACING | ENABLED_BY_SAMPLING));
      64           0 :   v8::internal::FLAG_gc_stats &= ~ENABLED_BY_TRACING;
      65           0 :   v8::internal::FLAG_ic_stats &= ~ENABLED_BY_TRACING;
      66           0 : }
      67             : 
      68             : }  // namespace tracing
      69             : }  // namespace v8

Generated by: LCOV version 1.10