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

Side by Side Diff: src/log.h

Issue 388783004: Do not expose all timer events to the API callback. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « src/isolate.cc ('k') | src/log.cc » ('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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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_LOG_H_ 5 #ifndef V8_LOG_H_
6 #define V8_LOG_H_ 6 #define V8_LOG_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "src/allocation.h" 10 #include "src/allocation.h"
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 144
145 145
146 class JitLogger; 146 class JitLogger;
147 class PerfBasicLogger; 147 class PerfBasicLogger;
148 class LowLevelLogger; 148 class LowLevelLogger;
149 class PerfJitLogger; 149 class PerfJitLogger;
150 class Sampler; 150 class Sampler;
151 151
152 class Logger { 152 class Logger {
153 public: 153 public:
154 enum StartEnd { START = 0, END = 1 };
155
154 #define DECLARE_ENUM(enum_item, ignore) enum_item, 156 #define DECLARE_ENUM(enum_item, ignore) enum_item,
155 enum LogEventsAndTags { 157 enum LogEventsAndTags {
156 LOG_EVENTS_AND_TAGS_LIST(DECLARE_ENUM) 158 LOG_EVENTS_AND_TAGS_LIST(DECLARE_ENUM)
157 NUMBER_OF_LOG_EVENTS 159 NUMBER_OF_LOG_EVENTS
158 }; 160 };
159 #undef DECLARE_ENUM 161 #undef DECLARE_ENUM
160 162
161 // Acquires resources for logging if the right flags are set. 163 // Acquires resources for logging if the right flags are set.
162 bool SetUp(Isolate* isolate); 164 bool SetUp(Isolate* isolate);
163 165
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 const char* event); 285 const char* event);
284 void HeapSampleJSProducerEvent(const char* constructor, 286 void HeapSampleJSProducerEvent(const char* constructor,
285 Address* stack); 287 Address* stack);
286 void HeapSampleStats(const char* space, const char* kind, 288 void HeapSampleStats(const char* space, const char* kind,
287 intptr_t capacity, intptr_t used); 289 intptr_t capacity, intptr_t used);
288 290
289 void SharedLibraryEvent(const std::string& library_path, 291 void SharedLibraryEvent(const std::string& library_path,
290 uintptr_t start, 292 uintptr_t start,
291 uintptr_t end); 293 uintptr_t end);
292 294
293 // ==== Events logged by --log-timer-events. ====
294 enum StartEnd { START, END };
295
296 void CodeDeoptEvent(Code* code); 295 void CodeDeoptEvent(Code* code);
297 void CurrentTimeEvent(); 296 void CurrentTimeEvent();
298 297
299 void TimerEvent(StartEnd se, const char* name); 298 void TimerEvent(StartEnd se, const char* name);
300 299
301 static void EnterExternal(Isolate* isolate); 300 static void EnterExternal(Isolate* isolate);
302 static void LeaveExternal(Isolate* isolate); 301 static void LeaveExternal(Isolate* isolate);
303 302
304 static void EmptyLogInternalEvents(const char* name, int se) { } 303 static void EmptyTimerEventsLogger(const char* name, int se) {}
305 static void LogInternalEvents(const char* name, int se); 304 static void DefaultTimerEventsLogger(const char* name, int se);
306
307 class TimerEventScope {
308 public:
309 TimerEventScope(Isolate* isolate, const char* name)
310 : isolate_(isolate), name_(name) {
311 LogTimerEvent(START);
312 }
313
314 ~TimerEventScope() {
315 LogTimerEvent(END);
316 }
317
318 void LogTimerEvent(StartEnd se);
319
320 static const char* v8_recompile_synchronous;
321 static const char* v8_recompile_concurrent;
322 static const char* v8_compile_full_code;
323 static const char* v8_execute;
324 static const char* v8_external;
325 static const char* v8_ic_miss;
326
327 private:
328 Isolate* isolate_;
329 const char* name_;
330 };
331 305
332 // ==== Events logged by --log-regexp ==== 306 // ==== Events logged by --log-regexp ====
333 // Regexp compilation and execution events. 307 // Regexp compilation and execution events.
334 308
335 void RegExpCompileEvent(Handle<JSRegExp> regexp, bool in_cache); 309 void RegExpCompileEvent(Handle<JSRegExp> regexp, bool in_cache);
336 310
337 bool is_logging() { 311 bool is_logging() {
338 return is_logging_; 312 return is_logging_;
339 } 313 }
340 314
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 // Guards against multiple calls to TearDown() that can happen in some tests. 413 // Guards against multiple calls to TearDown() that can happen in some tests.
440 // 'true' between SetUp() and TearDown(). 414 // 'true' between SetUp() and TearDown().
441 bool is_initialized_; 415 bool is_initialized_;
442 416
443 base::ElapsedTimer timer_; 417 base::ElapsedTimer timer_;
444 418
445 friend class CpuProfiler; 419 friend class CpuProfiler;
446 }; 420 };
447 421
448 422
423 #define TIMER_EVENTS_LIST(V) \
424 V(RecompileSynchronous, true) \
425 V(RecompileConcurrent, true) \
426 V(CompileFullCode, true) \
427 V(Execute, true) \
428 V(External, true) \
429 V(IcMiss, false)
430
431 #define V(TimerName, expose) \
432 class TimerEvent##TimerName : public AllStatic { \
433 public: \
434 static const char* name(void* unused = NULL) { return "V8." #TimerName; } \
435 static bool expose_to_api() { return expose; } \
436 };
437 TIMER_EVENTS_LIST(V)
438 #undef V
439
440
441 template <class TimerEvent>
442 class TimerEventScope {
443 public:
444 explicit TimerEventScope(Isolate* isolate) : isolate_(isolate) {
445 LogTimerEvent(Logger::START);
446 }
447
448 ~TimerEventScope() { LogTimerEvent(Logger::END); }
449
450 void LogTimerEvent(Logger::StartEnd se);
451
452 private:
453 Isolate* isolate_;
454 };
455
456
449 class CodeEventListener { 457 class CodeEventListener {
450 public: 458 public:
451 virtual ~CodeEventListener() {} 459 virtual ~CodeEventListener() {}
452 460
453 virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, 461 virtual void CodeCreateEvent(Logger::LogEventsAndTags tag,
454 Code* code, 462 Code* code,
455 const char* comment) = 0; 463 const char* comment) = 0;
456 virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, 464 virtual void CodeCreateEvent(Logger::LogEventsAndTags tag,
457 Code* code, 465 Code* code,
458 Name* name) = 0; 466 Name* name) = 0;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 int length) = 0; 532 int length) = 0;
525 533
526 NameBuffer* name_buffer_; 534 NameBuffer* name_buffer_;
527 }; 535 };
528 536
529 537
530 } } // namespace v8::internal 538 } } // namespace v8::internal
531 539
532 540
533 #endif // V8_LOG_H_ 541 #endif // V8_LOG_H_
OLDNEW
« no previous file with comments | « src/isolate.cc ('k') | src/log.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698