| Index: src/log.cc
|
| diff --git a/src/log.cc b/src/log.cc
|
| index a3fef7310bfc027b2fbe6527e8028fc64f5e6229..9d0b35246b2f78611ae5064444cf7430b7b85a5c 100644
|
| --- a/src/log.cc
|
| +++ b/src/log.cc
|
| @@ -329,7 +329,7 @@ VMState Logger::bottom_state_(EXTERNAL);
|
| SlidingStateWindow* Logger::sliding_state_window_ = NULL;
|
| const char** Logger::log_events_ = NULL;
|
| CompressionHelper* Logger::compression_helper_ = NULL;
|
| -bool Logger::is_logging_ = false;
|
| +int Logger::logging_nesting_ = 0;
|
| int Logger::cpu_profiler_nesting_ = 0;
|
| int Logger::heap_profiler_nesting_ = 0;
|
|
|
| @@ -389,12 +389,19 @@ void Logger::UncheckedStringEvent(const char* name, const char* value) {
|
|
|
| void Logger::IntEvent(const char* name, int value) {
|
| #ifdef ENABLE_LOGGING_AND_PROFILING
|
| - if (!Log::IsEnabled() || !FLAG_log) return;
|
| + if (FLAG_log) UncheckedIntEvent(name, value);
|
| +#endif
|
| +}
|
| +
|
| +
|
| +#ifdef ENABLE_LOGGING_AND_PROFILING
|
| +void Logger::UncheckedIntEvent(const char* name, int value) {
|
| + if (!Log::IsEnabled()) return;
|
| LogMessageBuilder msg;
|
| msg.Append("%s,%d\n", name, value);
|
| msg.WriteToLogFile();
|
| -#endif
|
| }
|
| +#endif
|
|
|
|
|
| void Logger::HandleEvent(const char* name, Object** location) {
|
| @@ -1169,19 +1176,18 @@ void Logger::PauseProfiler(int flags, int tag) {
|
| // Must be the same message as Log::kDynamicBufferSeal.
|
| LOG(UncheckedStringEvent("profiler", "pause"));
|
| }
|
| + --logging_nesting_;
|
| }
|
| }
|
| if (flags &
|
| (PROFILER_MODULE_HEAP_STATS | PROFILER_MODULE_JS_CONSTRUCTORS)) {
|
| if (--heap_profiler_nesting_ == 0) {
|
| FLAG_log_gc = false;
|
| + --logging_nesting_;
|
| }
|
| }
|
| if (tag != 0) {
|
| - IntEvent("close-tag", tag);
|
| - }
|
| - if (GetActiveProfilerModules() == PROFILER_MODULE_NONE) {
|
| - is_logging_ = false;
|
| + UncheckedIntEvent("close-tag", tag);
|
| }
|
| }
|
|
|
| @@ -1189,11 +1195,11 @@ void Logger::PauseProfiler(int flags, int tag) {
|
| void Logger::ResumeProfiler(int flags, int tag) {
|
| if (!Log::IsEnabled()) return;
|
| if (tag != 0) {
|
| - IntEvent("open-tag", tag);
|
| + UncheckedIntEvent("open-tag", tag);
|
| }
|
| if (flags & PROFILER_MODULE_CPU) {
|
| if (cpu_profiler_nesting_++ == 0) {
|
| - is_logging_ = true;
|
| + ++logging_nesting_;
|
| if (FLAG_prof_lazy) {
|
| profiler_->Engage();
|
| LOG(UncheckedStringEvent("profiler", "resume"));
|
| @@ -1209,7 +1215,7 @@ void Logger::ResumeProfiler(int flags, int tag) {
|
| if (flags &
|
| (PROFILER_MODULE_HEAP_STATS | PROFILER_MODULE_JS_CONSTRUCTORS)) {
|
| if (heap_profiler_nesting_++ == 0) {
|
| - is_logging_ = true;
|
| + ++logging_nesting_;
|
| FLAG_log_gc = true;
|
| }
|
| }
|
| @@ -1482,14 +1488,16 @@ bool Logger::Setup() {
|
| compression_helper_ = new CompressionHelper(kCompressionWindowSize);
|
| }
|
|
|
| - is_logging_ = start_logging;
|
| + if (start_logging) {
|
| + logging_nesting_ = 1;
|
| + }
|
|
|
| if (FLAG_prof) {
|
| profiler_ = new Profiler();
|
| if (!FLAG_prof_auto) {
|
| profiler_->pause();
|
| } else {
|
| - is_logging_ = true;
|
| + logging_nesting_ = 1;
|
| }
|
| if (!FLAG_prof_lazy) {
|
| profiler_->Engage();
|
|
|