diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2009-10-28 19:25:22 +0100 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2009-10-28 19:25:22 +0100 |
commit | 50f45d14b475a42d304e7d9872f8d91ff3a013c2 (patch) | |
tree | 2e799be8cbddd016ef8432b4ed755247a466c0ba /deps/v8/src/log.cc | |
parent | 35589528992e8bf5ca70271beaef05a6d82f9dcf (diff) | |
download | node-50f45d14b475a42d304e7d9872f8d91ff3a013c2.tar.gz |
Upgrade v8 to 1.3.17
Diffstat (limited to 'deps/v8/src/log.cc')
-rw-r--r-- | deps/v8/src/log.cc | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/deps/v8/src/log.cc b/deps/v8/src/log.cc index d1d9a31e4..2e7796a7a 100644 --- a/deps/v8/src/log.cc +++ b/deps/v8/src/log.cc @@ -125,6 +125,9 @@ class Profiler: public Thread { bool overflow_; // Tell whether a buffer overflow has occurred. Semaphore* buffer_semaphore_; // Sempahore used for buffer synchronization. + // Tells whether profiler is engaged, that is, processing thread is stated. + bool engaged_; + // Tells whether worker thread should continue running. bool running_; @@ -243,17 +246,25 @@ void SlidingStateWindow::AddState(StateTag state) { // // Profiler implementation. // -Profiler::Profiler() { - buffer_semaphore_ = OS::CreateSemaphore(0); - head_ = 0; - tail_ = 0; - overflow_ = false; - running_ = false; +Profiler::Profiler() + : head_(0), + tail_(0), + overflow_(false), + buffer_semaphore_(OS::CreateSemaphore(0)), + engaged_(false), + running_(false) { } void Profiler::Engage() { - OS::LogSharedLibraryAddresses(); + if (engaged_) return; + engaged_ = true; + + // TODO(mnaganov): This is actually "Chromium" mode. Flags need to be revised. + // http://code.google.com/p/v8/issues/detail?id=487 + if (!FLAG_prof_lazy) { + OS::LogSharedLibraryAddresses(); + } // Start thread processing the profiler buffer. running_ = true; @@ -268,6 +279,8 @@ void Profiler::Engage() { void Profiler::Disengage() { + if (!engaged_) return; + // Stop receiving ticks. Logger::ticker_->ClearProfiler(); @@ -1053,6 +1066,7 @@ void Logger::ResumeProfiler(int flags) { } if (modules_to_enable & PROFILER_MODULE_CPU) { if (FLAG_prof_lazy) { + profiler_->Engage(); LOG(UncheckedStringEvent("profiler", "resume")); FLAG_log_code = true; LogCompiledFunctions(); @@ -1245,7 +1259,9 @@ bool Logger::Setup() { } else { is_logging_ = true; } - profiler_->Engage(); + if (!FLAG_prof_lazy) { + profiler_->Engage(); + } } LogMessageBuilder::set_write_failure_handler(StopLoggingAndProfiling); |