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/flags.h"
8 : #include "src/tracing/trace-event.h"
9 : #include "src/v8.h"
10 :
11 : namespace v8 {
12 : namespace tracing {
13 :
14 : TracingCategoryObserver* TracingCategoryObserver::instance_ = nullptr;
15 :
16 53977 : void TracingCategoryObserver::SetUp() {
17 107954 : TracingCategoryObserver::instance_ = new TracingCategoryObserver();
18 53977 : v8::internal::V8::GetCurrentPlatform()
19 53977 : ->GetTracingController()
20 53977 : ->AddTraceStateObserver(TracingCategoryObserver::instance_);
21 53977 : TRACE_EVENT_WARMUP_CATEGORY(TRACE_DISABLED_BY_DEFAULT("v8.runtime_stats"));
22 53977 : TRACE_EVENT_WARMUP_CATEGORY(
23 : TRACE_DISABLED_BY_DEFAULT("v8.runtime_stats_sampling"));
24 53977 : TRACE_EVENT_WARMUP_CATEGORY(TRACE_DISABLED_BY_DEFAULT("v8.gc_stats"));
25 53977 : TRACE_EVENT_WARMUP_CATEGORY(TRACE_DISABLED_BY_DEFAULT("v8.ic_stats"));
26 53977 : }
27 :
28 53151 : void TracingCategoryObserver::TearDown() {
29 53151 : v8::internal::V8::GetCurrentPlatform()
30 53151 : ->GetTracingController()
31 53151 : ->RemoveTraceStateObserver(TracingCategoryObserver::instance_);
32 53151 : delete TracingCategoryObserver::instance_;
33 53151 : }
34 :
35 0 : void TracingCategoryObserver::OnTraceEnabled() {
36 : bool enabled = false;
37 0 : TRACE_EVENT_CATEGORY_GROUP_ENABLED(
38 : TRACE_DISABLED_BY_DEFAULT("v8.runtime_stats"), &enabled);
39 0 : if (enabled) {
40 0 : v8::internal::FLAG_runtime_stats |= ENABLED_BY_TRACING;
41 : }
42 0 : TRACE_EVENT_CATEGORY_GROUP_ENABLED(
43 : TRACE_DISABLED_BY_DEFAULT("v8.runtime_stats_sampling"), &enabled);
44 0 : if (enabled) {
45 0 : v8::internal::FLAG_runtime_stats |= ENABLED_BY_SAMPLING;
46 : }
47 0 : TRACE_EVENT_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("v8.gc_stats"),
48 : &enabled);
49 0 : if (enabled) {
50 0 : v8::internal::FLAG_gc_stats |= ENABLED_BY_TRACING;
51 : }
52 0 : TRACE_EVENT_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("v8.ic_stats"),
53 : &enabled);
54 0 : if (enabled) {
55 0 : v8::internal::FLAG_ic_stats |= ENABLED_BY_TRACING;
56 : }
57 0 : }
58 :
59 0 : void TracingCategoryObserver::OnTraceDisabled() {
60 : v8::internal::FLAG_runtime_stats &=
61 0 : ~(ENABLED_BY_TRACING | ENABLED_BY_SAMPLING);
62 0 : v8::internal::FLAG_gc_stats &= ~ENABLED_BY_TRACING;
63 0 : v8::internal::FLAG_ic_stats &= ~ENABLED_BY_TRACING;
64 0 : }
65 :
66 : } // namespace tracing
67 : } // namespace v8
|