Index: src/log.cc |
=================================================================== |
--- src/log.cc (revision 2260) |
+++ src/log.cc (working copy) |
@@ -31,9 +31,7 @@ |
#include "bootstrapper.h" |
#include "log.h" |
-#include "log-utils.h" |
#include "macro-assembler.h" |
-#include "platform.h" |
#include "serialize.h" |
#include "string-stream.h" |
@@ -304,6 +302,7 @@ |
SlidingStateWindow* Logger::sliding_state_window_ = NULL; |
const char** Logger::log_events_ = NULL; |
CompressionHelper* Logger::compression_helper_ = NULL; |
+bool Logger::is_logging_ = false; |
#define DECLARE_LONG_EVENT(ignore1, long_name, ignore2) long_name, |
const char* kLongLogEventsNames[Logger::NUMBER_OF_LOG_EVENTS] = { |
@@ -318,11 +317,6 @@ |
#undef DECLARE_SHORT_EVENT |
-bool Logger::IsEnabled() { |
- return Log::IsEnabled(); |
-} |
- |
- |
void Logger::ProfilerBeginEvent() { |
if (!Log::IsEnabled()) return; |
LogMessageBuilder msg; |
@@ -946,6 +940,7 @@ |
// Must be the same message as Log::kDynamicBufferSeal. |
LOG(UncheckedStringEvent("profiler", "pause")); |
} |
+ is_logging_ = false; |
} |
@@ -953,6 +948,7 @@ |
if (!profiler_->paused() || !Log::IsEnabled()) { |
return; |
} |
+ is_logging_ = true; |
if (FLAG_prof_lazy) { |
LOG(UncheckedStringEvent("profiler", "resume")); |
FLAG_log_code = true; |
@@ -1069,10 +1065,12 @@ |
FLAG_prof_auto = false; |
} |
- bool open_log_file = FLAG_log || FLAG_log_runtime || FLAG_log_api |
+ bool start_logging = FLAG_log || FLAG_log_runtime || FLAG_log_api |
|| FLAG_log_code || FLAG_log_gc || FLAG_log_handles || FLAG_log_suspect |
- || FLAG_log_regexp || FLAG_log_state_changes || FLAG_prof_lazy; |
+ || FLAG_log_regexp || FLAG_log_state_changes; |
+ bool open_log_file = start_logging || FLAG_prof_lazy; |
+ |
// If we're logging anything, we need to open the log file. |
if (open_log_file) { |
if (strcmp(FLAG_logfile, "-") == 0) { |
@@ -1134,10 +1132,15 @@ |
compression_helper_ = new CompressionHelper(kCompressionWindowSize); |
} |
+ is_logging_ = start_logging; |
+ |
if (FLAG_prof) { |
profiler_ = new Profiler(); |
- if (!FLAG_prof_auto) |
+ if (!FLAG_prof_auto) { |
profiler_->pause(); |
+ } else { |
+ is_logging_ = true; |
+ } |
profiler_->Engage(); |
} |
@@ -1195,85 +1198,4 @@ |
} |
-// |
-// VMState class implementation. A simple stack of VM states held by the |
-// logger and partially threaded through the call stack. States are pushed by |
-// VMState construction and popped by destruction. |
-// |
-#ifdef ENABLE_LOGGING_AND_PROFILING |
-static const char* StateToString(StateTag state) { |
- switch (state) { |
- case JS: |
- return "JS"; |
- case GC: |
- return "GC"; |
- case COMPILER: |
- return "COMPILER"; |
- case OTHER: |
- return "OTHER"; |
- default: |
- UNREACHABLE(); |
- return NULL; |
- } |
-} |
- |
-VMState::VMState(StateTag state) { |
-#if !defined(ENABLE_HEAP_PROTECTION) |
- // When not protecting the heap, there is no difference between |
- // EXTERNAL and OTHER. As an optimization in that case, we will not |
- // perform EXTERNAL->OTHER transitions through the API. We thus |
- // compress the two states into one. |
- if (state == EXTERNAL) state = OTHER; |
-#endif |
- state_ = state; |
- previous_ = Logger::current_state_; |
- Logger::current_state_ = this; |
- |
- if (FLAG_log_state_changes) { |
- LOG(UncheckedStringEvent("Entering", StateToString(state_))); |
- if (previous_ != NULL) { |
- LOG(UncheckedStringEvent("From", StateToString(previous_->state_))); |
- } |
- } |
- |
-#ifdef ENABLE_HEAP_PROTECTION |
- if (FLAG_protect_heap && previous_ != NULL) { |
- if (state_ == EXTERNAL) { |
- // We are leaving V8. |
- ASSERT(previous_->state_ != EXTERNAL); |
- Heap::Protect(); |
- } else if (previous_->state_ == EXTERNAL) { |
- // We are entering V8. |
- Heap::Unprotect(); |
- } |
- } |
-#endif |
-} |
- |
- |
-VMState::~VMState() { |
- Logger::current_state_ = previous_; |
- |
- if (FLAG_log_state_changes) { |
- LOG(UncheckedStringEvent("Leaving", StateToString(state_))); |
- if (previous_ != NULL) { |
- LOG(UncheckedStringEvent("To", StateToString(previous_->state_))); |
- } |
- } |
- |
-#ifdef ENABLE_HEAP_PROTECTION |
- if (FLAG_protect_heap && previous_ != NULL) { |
- if (state_ == EXTERNAL) { |
- // We are reentering V8. |
- ASSERT(previous_->state_ != EXTERNAL); |
- Heap::Unprotect(); |
- } else if (previous_->state_ == EXTERNAL) { |
- // We are leaving V8. |
- Heap::Protect(); |
- } |
- } |
-#endif |
-} |
-#endif |
- |
} } // namespace v8::internal |