Commit e7150a8d authored by olehougaard's avatar olehougaard

Fixing a few bugs to make the --log-state-change option work.

Review URL: http://codereview.chromium.org/20220

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1247 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 15ef421b
......@@ -226,7 +226,7 @@ void Profiler::Engage() {
// Register to get ticks.
Logger::ticker_->SetProfiler(this);
LOG(StringEvent("profiler", "begin"));
LOG(UncheckedStringEvent("profiler", "begin"));
}
......@@ -245,7 +245,7 @@ void Profiler::Disengage() {
Insert(&sample);
Join();
LOG(StringEvent("profiler", "end"));
LOG(UncheckedStringEvent("profiler", "end"));
}
......@@ -282,11 +282,18 @@ void Logger::Preamble(const char* content) {
void Logger::StringEvent(const char* name, const char* value) {
#ifdef ENABLE_LOGGING_AND_PROFILING
if (logfile_ == NULL || !FLAG_log) return;
if (FLAG_log) UncheckedStringEvent(name, value);
#endif
}
#ifdef ENABLE_LOGGING_AND_PROFILING
void Logger::UncheckedStringEvent(const char* name, const char* value) {
if (logfile_ == NULL) return;
ScopedLock sl(mutex_);
fprintf(logfile_, "%s,\"%s\"\n", name, value);
#endif
}
#endif
void Logger::IntEvent(const char* name, int value) {
......@@ -808,7 +815,7 @@ bool Logger::Setup() {
bool open_log_file = FLAG_log || FLAG_log_api || FLAG_log_code
|| FLAG_log_gc || FLAG_log_handles || FLAG_log_suspect
|| FLAG_log_regexp;
|| FLAG_log_regexp || FLAG_log_state_changes;
// If we're logging anything, we need to open the log file.
if (open_log_file) {
......@@ -931,6 +938,8 @@ void Logger::EnableSlidingStateWindow() {
#ifdef ENABLE_LOGGING_AND_PROFILING
static const char* StateToString(StateTag state) {
switch (state) {
case JS:
return "JS";
case GC:
return "GC";
case COMPILER:
......@@ -949,9 +958,9 @@ VMState::VMState(StateTag state) {
Logger::current_state_ = this;
if (FLAG_log_state_changes) {
LOG(StringEvent("Entering", StateToString(state_)));
LOG(UncheckedStringEvent("Entering", StateToString(state_)));
if (previous_) {
LOG(StringEvent("From", StateToString(previous_->state_)));
LOG(UncheckedStringEvent("From", StateToString(previous_->state_)));
}
}
}
......@@ -961,9 +970,9 @@ VMState::~VMState() {
Logger::current_state_ = previous_;
if (FLAG_log_state_changes) {
LOG(StringEvent("Leaving", StateToString(state_)));
LOG(UncheckedStringEvent("Leaving", StateToString(state_)));
if (previous_) {
LOG(StringEvent("To", StateToString(previous_->state_)));
LOG(UncheckedStringEvent("To", StateToString(previous_->state_)));
}
}
}
......
......@@ -224,6 +224,9 @@ class Logger {
static void ApiEvent(const char* name, ...);
// Logs a StringEvent regardless of whether FLAG_log is true.
static void UncheckedStringEvent(const char* name, const char* value);
// When logging is active, logfile_ refers the file
// events are written to.
static FILE* logfile_;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment