OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 #ifdef ENABLE_LOGGING_AND_PROFILING | 80 #ifdef ENABLE_LOGGING_AND_PROFILING |
81 #define LOG(Call) \ | 81 #define LOG(Call) \ |
82 do { \ | 82 do { \ |
83 if (v8::internal::Logger::is_logging()) \ | 83 if (v8::internal::Logger::is_logging()) \ |
84 v8::internal::Logger::Call; \ | 84 v8::internal::Logger::Call; \ |
85 } while (false) | 85 } while (false) |
86 #else | 86 #else |
87 #define LOG(Call) ((void) 0) | 87 #define LOG(Call) ((void) 0) |
88 #endif | 88 #endif |
89 | 89 |
90 class VMState BASE_EMBEDDED { | |
91 #ifdef ENABLE_LOGGING_AND_PROFILING | |
92 public: | |
93 inline VMState(StateTag state); | |
94 inline ~VMState(); | |
95 | |
96 StateTag state() { return state_; } | |
97 Address external_callback() { return external_callback_; } | |
98 void set_external_callback(Address external_callback) { | |
99 external_callback_ = external_callback; | |
100 } | |
101 | |
102 private: | |
103 bool disabled_; | |
104 StateTag state_; | |
105 VMState* previous_; | |
106 Address external_callback_; | |
107 #else | |
108 public: | |
109 explicit VMState(StateTag state) {} | |
110 #endif | |
111 }; | |
112 | |
113 | |
114 #define LOG_EVENTS_AND_TAGS_LIST(V) \ | 90 #define LOG_EVENTS_AND_TAGS_LIST(V) \ |
115 V(CODE_CREATION_EVENT, "code-creation", "cc") \ | 91 V(CODE_CREATION_EVENT, "code-creation", "cc") \ |
116 V(CODE_MOVE_EVENT, "code-move", "cm") \ | 92 V(CODE_MOVE_EVENT, "code-move", "cm") \ |
117 V(CODE_DELETE_EVENT, "code-delete", "cd") \ | 93 V(CODE_DELETE_EVENT, "code-delete", "cd") \ |
118 V(FUNCTION_CREATION_EVENT, "function-creation", "fc") \ | 94 V(FUNCTION_CREATION_EVENT, "function-creation", "fc") \ |
119 V(FUNCTION_MOVE_EVENT, "function-move", "fm") \ | 95 V(FUNCTION_MOVE_EVENT, "function-move", "fm") \ |
120 V(FUNCTION_DELETE_EVENT, "function-delete", "fd") \ | 96 V(FUNCTION_DELETE_EVENT, "function-delete", "fd") \ |
121 V(SNAPSHOT_POSITION_EVENT, "snapshot-pos", "sp") \ | 97 V(SNAPSHOT_POSITION_EVENT, "snapshot-pos", "sp") \ |
122 V(TICK_EVENT, "tick", "t") \ | 98 V(TICK_EVENT, "tick", "t") \ |
123 V(REPEAT_META_EVENT, "repeat", "r") \ | 99 V(REPEAT_META_EVENT, "repeat", "r") \ |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 | 233 |
258 // ==== Events logged by --log-regexp ==== | 234 // ==== Events logged by --log-regexp ==== |
259 // Regexp compilation and execution events. | 235 // Regexp compilation and execution events. |
260 | 236 |
261 static void RegExpCompileEvent(Handle<JSRegExp> regexp, bool in_cache); | 237 static void RegExpCompileEvent(Handle<JSRegExp> regexp, bool in_cache); |
262 | 238 |
263 // Log an event reported from generated code | 239 // Log an event reported from generated code |
264 static void LogRuntime(Vector<const char> format, JSArray* args); | 240 static void LogRuntime(Vector<const char> format, JSArray* args); |
265 | 241 |
266 #ifdef ENABLE_LOGGING_AND_PROFILING | 242 #ifdef ENABLE_LOGGING_AND_PROFILING |
267 static StateTag state() { | |
268 return current_state_ ? current_state_->state() : OTHER; | |
269 } | |
270 | |
271 static bool is_logging() { | 243 static bool is_logging() { |
272 return logging_nesting_ > 0; | 244 return logging_nesting_ > 0; |
273 } | 245 } |
274 | 246 |
275 // Pause/Resume collection of profiling data. | 247 // Pause/Resume collection of profiling data. |
276 // When data collection is paused, CPU Tick events are discarded until | 248 // When data collection is paused, CPU Tick events are discarded until |
277 // data collection is Resumed. | 249 // data collection is Resumed. |
278 static void PauseProfiler(int flags, int tag); | 250 static void PauseProfiler(int flags, int tag); |
279 static void ResumeProfiler(int flags, int tag); | 251 static void ResumeProfiler(int flags, int tag); |
280 static int GetActiveProfilerModules(); | 252 static int GetActiveProfilerModules(); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
347 static bool IsProfilerSamplerActive(); | 319 static bool IsProfilerSamplerActive(); |
348 | 320 |
349 // The sampler used by the profiler and the sliding state window. | 321 // The sampler used by the profiler and the sliding state window. |
350 static Ticker* ticker_; | 322 static Ticker* ticker_; |
351 | 323 |
352 // When the statistical profile is active, profiler_ | 324 // When the statistical profile is active, profiler_ |
353 // points to a Profiler, that handles collection | 325 // points to a Profiler, that handles collection |
354 // of samples. | 326 // of samples. |
355 static Profiler* profiler_; | 327 static Profiler* profiler_; |
356 | 328 |
357 // A stack of VM states. | |
358 static VMState* current_state_; | |
359 | |
360 // Singleton bottom or default vm state. | |
361 static VMState bottom_state_; | |
362 | |
363 // SlidingStateWindow instance keeping a sliding window of the most | 329 // SlidingStateWindow instance keeping a sliding window of the most |
364 // recent VM states. | 330 // recent VM states. |
365 static SlidingStateWindow* sliding_state_window_; | 331 static SlidingStateWindow* sliding_state_window_; |
366 | 332 |
367 // An array of log events names. | 333 // An array of log events names. |
368 static const char** log_events_; | 334 static const char** log_events_; |
369 | 335 |
370 // An instance of helper created if log compression is enabled. | 336 // An instance of helper created if log compression is enabled. |
371 static CompressionHelper* compression_helper_; | 337 static CompressionHelper* compression_helper_; |
372 | 338 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 void SetProfiler(Profiler* profiler) { } | 382 void SetProfiler(Profiler* profiler) { } |
417 void ClearProfiler() { } | 383 void ClearProfiler() { } |
418 }; | 384 }; |
419 | 385 |
420 #endif // ENABLE_CPP_PROFILES_PROCESSOR | 386 #endif // ENABLE_CPP_PROFILES_PROCESSOR |
421 | 387 |
422 } } // namespace v8::internal | 388 } } // namespace v8::internal |
423 | 389 |
424 | 390 |
425 #endif // V8_LOG_H_ | 391 #endif // V8_LOG_H_ |
OLD | NEW |