Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(827)

Side by Side Diff: include/libplatform/v8-tracing.h

Issue 2372983003: Turn libplatform into a component (Closed)
Patch Set: rebase Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « include/libplatform/libplatform-export.h ('k') | src/base/compiler-specific.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_LIBPLATFORM_V8_TRACING_H_ 5 #ifndef V8_LIBPLATFORM_V8_TRACING_H_
6 #define V8_LIBPLATFORM_V8_TRACING_H_ 6 #define V8_LIBPLATFORM_V8_TRACING_H_
7 7
8 #include <fstream> 8 #include <fstream>
9 #include <memory> 9 #include <memory>
10 #include <unordered_set> 10 #include <unordered_set>
11 #include <vector> 11 #include <vector>
12 12
13 #include "libplatform/libplatform-export.h"
13 #include "v8-platform.h" // NOLINT(build/include) 14 #include "v8-platform.h" // NOLINT(build/include)
14 15
15 namespace v8 { 16 namespace v8 {
16 17
17 namespace base { 18 namespace base {
18 class Mutex; 19 class Mutex;
19 } // namespace base 20 } // namespace base
20 21
21 namespace platform { 22 namespace platform {
22 namespace tracing { 23 namespace tracing {
23 24
24 const int kTraceMaxNumArgs = 2; 25 const int kTraceMaxNumArgs = 2;
25 26
26 class TraceObject { 27 class V8_PLATFORM_EXPORT TraceObject {
27 public: 28 public:
28 union ArgValue { 29 union ArgValue {
29 bool as_bool; 30 bool as_bool;
30 uint64_t as_uint; 31 uint64_t as_uint;
31 int64_t as_int; 32 int64_t as_int;
32 double as_double; 33 double as_double;
33 const void* as_pointer; 34 const void* as_pointer;
34 const char* as_string; 35 const char* as_string;
35 }; 36 };
36 37
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 int64_t ts_; 97 int64_t ts_;
97 int64_t tts_; 98 int64_t tts_;
98 uint64_t duration_; 99 uint64_t duration_;
99 uint64_t cpu_duration_; 100 uint64_t cpu_duration_;
100 101
101 // Disallow copy and assign 102 // Disallow copy and assign
102 TraceObject(const TraceObject&) = delete; 103 TraceObject(const TraceObject&) = delete;
103 void operator=(const TraceObject&) = delete; 104 void operator=(const TraceObject&) = delete;
104 }; 105 };
105 106
106 class TraceWriter { 107 class V8_PLATFORM_EXPORT TraceWriter {
107 public: 108 public:
108 TraceWriter() {} 109 TraceWriter() {}
109 virtual ~TraceWriter() {} 110 virtual ~TraceWriter() {}
110 virtual void AppendTraceEvent(TraceObject* trace_event) = 0; 111 virtual void AppendTraceEvent(TraceObject* trace_event) = 0;
111 virtual void Flush() = 0; 112 virtual void Flush() = 0;
112 113
113 static TraceWriter* CreateJSONTraceWriter(std::ostream& stream); 114 static TraceWriter* CreateJSONTraceWriter(std::ostream& stream);
114 115
115 private: 116 private:
116 // Disallow copy and assign 117 // Disallow copy and assign
117 TraceWriter(const TraceWriter&) = delete; 118 TraceWriter(const TraceWriter&) = delete;
118 void operator=(const TraceWriter&) = delete; 119 void operator=(const TraceWriter&) = delete;
119 }; 120 };
120 121
121 class TraceBufferChunk { 122 class V8_PLATFORM_EXPORT TraceBufferChunk {
122 public: 123 public:
123 explicit TraceBufferChunk(uint32_t seq); 124 explicit TraceBufferChunk(uint32_t seq);
124 125
125 void Reset(uint32_t new_seq); 126 void Reset(uint32_t new_seq);
126 bool IsFull() const { return next_free_ == kChunkSize; } 127 bool IsFull() const { return next_free_ == kChunkSize; }
127 TraceObject* AddTraceEvent(size_t* event_index); 128 TraceObject* AddTraceEvent(size_t* event_index);
128 TraceObject* GetEventAt(size_t index) { return &chunk_[index]; } 129 TraceObject* GetEventAt(size_t index) { return &chunk_[index]; }
129 130
130 uint32_t seq() const { return seq_; } 131 uint32_t seq() const { return seq_; }
131 size_t size() const { return next_free_; } 132 size_t size() const { return next_free_; }
132 133
133 static const size_t kChunkSize = 64; 134 static const size_t kChunkSize = 64;
134 135
135 private: 136 private:
136 size_t next_free_ = 0; 137 size_t next_free_ = 0;
137 TraceObject chunk_[kChunkSize]; 138 TraceObject chunk_[kChunkSize];
138 uint32_t seq_; 139 uint32_t seq_;
139 140
140 // Disallow copy and assign 141 // Disallow copy and assign
141 TraceBufferChunk(const TraceBufferChunk&) = delete; 142 TraceBufferChunk(const TraceBufferChunk&) = delete;
142 void operator=(const TraceBufferChunk&) = delete; 143 void operator=(const TraceBufferChunk&) = delete;
143 }; 144 };
144 145
145 class TraceBuffer { 146 class V8_PLATFORM_EXPORT TraceBuffer {
146 public: 147 public:
147 TraceBuffer() {} 148 TraceBuffer() {}
148 virtual ~TraceBuffer() {} 149 virtual ~TraceBuffer() {}
149 150
150 virtual TraceObject* AddTraceEvent(uint64_t* handle) = 0; 151 virtual TraceObject* AddTraceEvent(uint64_t* handle) = 0;
151 virtual TraceObject* GetEventByHandle(uint64_t handle) = 0; 152 virtual TraceObject* GetEventByHandle(uint64_t handle) = 0;
152 virtual bool Flush() = 0; 153 virtual bool Flush() = 0;
153 154
154 static const size_t kRingBufferChunks = 1024; 155 static const size_t kRingBufferChunks = 1024;
155 156
(...skipping 15 matching lines...) Expand all
171 // and we use it as a ring buffer during recording. 172 // and we use it as a ring buffer during recording.
172 RECORD_CONTINUOUSLY, 173 RECORD_CONTINUOUSLY,
173 174
174 // Record until the trace buffer is full, but with a huge buffer size. 175 // Record until the trace buffer is full, but with a huge buffer size.
175 RECORD_AS_MUCH_AS_POSSIBLE, 176 RECORD_AS_MUCH_AS_POSSIBLE,
176 177
177 // Echo to console. Events are discarded. 178 // Echo to console. Events are discarded.
178 ECHO_TO_CONSOLE, 179 ECHO_TO_CONSOLE,
179 }; 180 };
180 181
181 class TraceConfig { 182 class V8_PLATFORM_EXPORT TraceConfig {
182 public: 183 public:
183 typedef std::vector<std::string> StringList; 184 typedef std::vector<std::string> StringList;
184 185
185 static TraceConfig* CreateDefaultTraceConfig(); 186 static TraceConfig* CreateDefaultTraceConfig();
186 187
187 TraceConfig() 188 TraceConfig()
188 : enable_sampling_(false), 189 : enable_sampling_(false),
189 enable_systrace_(false), 190 enable_systrace_(false),
190 enable_argument_filter_(false) {} 191 enable_argument_filter_(false) {}
191 TraceRecordMode GetTraceRecordMode() const { return record_mode_; } 192 TraceRecordMode GetTraceRecordMode() const { return record_mode_; }
(...skipping 17 matching lines...) Expand all
209 bool enable_systrace_ : 1; 210 bool enable_systrace_ : 1;
210 bool enable_argument_filter_ : 1; 211 bool enable_argument_filter_ : 1;
211 StringList included_categories_; 212 StringList included_categories_;
212 StringList excluded_categories_; 213 StringList excluded_categories_;
213 214
214 // Disallow copy and assign 215 // Disallow copy and assign
215 TraceConfig(const TraceConfig&) = delete; 216 TraceConfig(const TraceConfig&) = delete;
216 void operator=(const TraceConfig&) = delete; 217 void operator=(const TraceConfig&) = delete;
217 }; 218 };
218 219
219 class TracingController { 220 class V8_PLATFORM_EXPORT TracingController {
220 public: 221 public:
221 enum Mode { DISABLED = 0, RECORDING_MODE }; 222 enum Mode { DISABLED = 0, RECORDING_MODE };
222 223
223 // The pointer returned from GetCategoryGroupEnabledInternal() points to a 224 // The pointer returned from GetCategoryGroupEnabledInternal() points to a
224 // value with zero or more of the following bits. Used in this class only. 225 // value with zero or more of the following bits. Used in this class only.
225 // The TRACE_EVENT macros should only use the value as a bool. 226 // The TRACE_EVENT macros should only use the value as a bool.
226 // These values must be in sync with macro values in TraceEvent.h in Blink. 227 // These values must be in sync with macro values in TraceEvent.h in Blink.
227 enum CategoryGroupEnabledFlags { 228 enum CategoryGroupEnabledFlags {
228 // Category group enabled for the recording mode. 229 // Category group enabled for the recording mode.
229 ENABLED_FOR_RECORDING = 1 << 0, 230 ENABLED_FOR_RECORDING = 1 << 0,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 // Disallow copy and assign 269 // Disallow copy and assign
269 TracingController(const TracingController&) = delete; 270 TracingController(const TracingController&) = delete;
270 void operator=(const TracingController&) = delete; 271 void operator=(const TracingController&) = delete;
271 }; 272 };
272 273
273 } // namespace tracing 274 } // namespace tracing
274 } // namespace platform 275 } // namespace platform
275 } // namespace v8 276 } // namespace v8
276 277
277 #endif // V8_LIBPLATFORM_V8_TRACING_H_ 278 #endif // V8_LIBPLATFORM_V8_TRACING_H_
OLDNEW
« no previous file with comments | « include/libplatform/libplatform-export.h ('k') | src/base/compiler-specific.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698