Index: src/log.cc |
diff --git a/src/log.cc b/src/log.cc |
index 908a3682b83150d42254484eae3ab3fa251b214d..3c932bcba06fdb44e6049c979a50aea53f3590e4 100644 |
--- a/src/log.cc |
+++ b/src/log.cc |
@@ -903,6 +903,33 @@ void Logger::SetterCallbackEvent(Name* name, Address entry_point) { |
} |
+void Logger::AppendCodeCreateHeader(LogMessageBuilder* msg, |
+ LogEventsAndTags tag, |
+ Code* code, |
+ int override_code_kind) { |
+ ASSERT(msg); |
+ msg->Append("%s,%s,%d,", |
+ kLogEventsNames[CODE_CREATION_EVENT], |
+ kLogEventsNames[tag], |
+ override_code_kind ? override_code_kind : code->kind()); |
+ msg->AppendAddress(code->address()); |
+ msg->Append(",%d,", code->ExecutableSize()); |
+} |
+ |
+ |
+void Logger::AppendSymbolName(LogMessageBuilder* msg, |
+ Symbol* symbol) { |
+ ASSERT(symbol); |
yurys
2013/06/21 09:32:51
No need in this assert.
|
+ msg->Append("symbol("); |
+ if (!symbol->name()->IsUndefined()) { |
+ msg->Append("\""); |
+ msg->AppendDetailed(String::cast(symbol->name()), false); |
+ msg->Append("\" "); |
+ } |
+ msg->Append("hash %x)", symbol->Hash()); |
+} |
+ |
+ |
void Logger::CodeCreateEvent(LogEventsAndTags tag, |
Code* code, |
const char* comment) { |
@@ -925,19 +952,8 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag, |
} |
if (!FLAG_log_code) return; |
LogMessageBuilder msg(this); |
- msg.Append("%s,%s,%d,", |
- kLogEventsNames[CODE_CREATION_EVENT], |
- kLogEventsNames[tag], |
- code->kind()); |
- msg.AppendAddress(code->address()); |
- msg.Append(",%d,\"", code->ExecutableSize()); |
- for (const char* p = comment; *p != '\0'; p++) { |
- if (*p == '"') { |
- msg.Append('\\'); |
- } |
- msg.Append(*p); |
- } |
- msg.Append('"'); |
+ AppendCodeCreateHeader(&msg, tag, code); |
+ msg.AppendDoubleQuotedString(comment); |
msg.Append('\n'); |
msg.WriteToLogFile(); |
} |
@@ -978,25 +994,13 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag, |
} |
if (!FLAG_log_code) return; |
LogMessageBuilder msg(this); |
- msg.Append("%s,%s,%d,", |
- kLogEventsNames[CODE_CREATION_EVENT], |
- kLogEventsNames[tag], |
- code->kind()); |
- msg.AppendAddress(code->address()); |
- msg.Append(",%d,", code->ExecutableSize()); |
+ AppendCodeCreateHeader(&msg, tag, code); |
if (name->IsString()) { |
msg.Append('"'); |
msg.AppendDetailed(String::cast(name), false); |
msg.Append('"'); |
} else { |
- Symbol* symbol = Symbol::cast(name); |
- msg.Append("symbol("); |
- if (!symbol->name()->IsUndefined()) { |
- msg.Append("\""); |
- msg.AppendDetailed(String::cast(symbol->name()), false); |
- msg.Append("\" "); |
- } |
- msg.Append("hash %x)", symbol->Hash()); |
+ AppendSymbolName(&msg, Symbol::cast(name)); |
} |
msg.Append('\n'); |
msg.WriteToLogFile(); |
@@ -1060,25 +1064,13 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag, |
return; |
LogMessageBuilder msg(this); |
- msg.Append("%s,%s,%d,", |
- kLogEventsNames[CODE_CREATION_EVENT], |
- kLogEventsNames[tag], |
- code->kind()); |
- msg.AppendAddress(code->address()); |
- msg.Append(",%d,", code->ExecutableSize()); |
+ AppendCodeCreateHeader(&msg, tag, code); |
if (name->IsString()) { |
SmartArrayPointer<char> str = |
String::cast(name)->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); |
msg.Append("\"%s\"", *str); |
} else { |
- Symbol* symbol = Symbol::cast(name); |
- msg.Append("symbol("); |
- if (!symbol->name()->IsUndefined()) { |
- msg.Append("\""); |
- msg.AppendDetailed(String::cast(symbol->name()), false); |
- msg.Append("\" "); |
- } |
- msg.Append("hash %x)", symbol->Hash()); |
+ AppendSymbolName(&msg, Symbol::cast(name)); |
} |
msg.Append(','); |
msg.AppendAddress(shared->address()); |
@@ -1131,27 +1123,16 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag, |
} |
if (!FLAG_log_code) return; |
LogMessageBuilder msg(this); |
+ AppendCodeCreateHeader(&msg, tag, code); |
SmartArrayPointer<char> name = |
shared->DebugName()->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); |
- msg.Append("%s,%s,%d,", |
- kLogEventsNames[CODE_CREATION_EVENT], |
- kLogEventsNames[tag], |
- code->kind()); |
- msg.AppendAddress(code->address()); |
- msg.Append(",%d,\"%s ", code->ExecutableSize(), *name); |
+ msg.Append("\"%s ", *name); |
if (source->IsString()) { |
SmartArrayPointer<char> sourcestr = |
String::cast(source)->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); |
msg.Append("%s", *sourcestr); |
} else { |
- Symbol* symbol = Symbol::cast(source); |
- msg.Append("symbol("); |
- if (!symbol->name()->IsUndefined()) { |
- msg.Append("\""); |
- msg.AppendDetailed(String::cast(symbol->name()), false); |
- msg.Append("\" "); |
- } |
- msg.Append("hash %x)", symbol->Hash()); |
+ AppendSymbolName(&msg, Symbol::cast(source)); |
} |
msg.Append(":%d\",", line); |
msg.AppendAddress(shared->address()); |
@@ -1181,12 +1162,8 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag, Code* code, int args_count) { |
} |
if (!FLAG_log_code) return; |
LogMessageBuilder msg(this); |
- msg.Append("%s,%s,%d,", |
- kLogEventsNames[CODE_CREATION_EVENT], |
- kLogEventsNames[tag], |
- code->kind()); |
- msg.AppendAddress(code->address()); |
- msg.Append(",%d,\"args_count: %d\"", code->ExecutableSize(), args_count); |
+ AppendCodeCreateHeader(&msg, tag, code); |
+ msg.Append("\"args_count: %d\"", args_count); |
msg.Append('\n'); |
msg.WriteToLogFile(); |
} |
@@ -1219,13 +1196,10 @@ void Logger::RegExpCodeCreateEvent(Code* code, String* source) { |
} |
if (!FLAG_log_code) return; |
LogMessageBuilder msg(this); |
- msg.Append("%s,%s,-2,", |
- kLogEventsNames[CODE_CREATION_EVENT], |
- kLogEventsNames[REG_EXP_TAG]); |
- msg.AppendAddress(code->address()); |
- msg.Append(",%d,\"", code->ExecutableSize()); |
+ AppendCodeCreateHeader(&msg, REG_EXP_TAG, code, -2); |
yurys
2013/06/21 09:32:51
I wonder if we could have a constant with descript
|
+ msg.Append('"'); |
msg.AppendDetailed(source, false); |
- msg.Append('\"'); |
+ msg.Append('"'); |
msg.Append('\n'); |
msg.WriteToLogFile(); |
} |
@@ -1294,12 +1268,9 @@ void Logger::SnapshotPositionEvent(Address addr, int pos) { |
const char* code_name = address_to_name_map_->Lookup(addr); |
if (code_name == NULL) return; // Not a code object. |
LogMessageBuilder msg(this); |
- msg.Append("%s,%d,\"", kLogEventsNames[SNAPSHOT_CODE_NAME_EVENT], pos); |
- for (const char* p = code_name; *p != '\0'; ++p) { |
- if (*p == '"') msg.Append('\\'); |
- msg.Append(*p); |
- } |
- msg.Append("\"\n"); |
+ msg.Append("%s,%d,", kLogEventsNames[SNAPSHOT_CODE_NAME_EVENT], pos); |
+ msg.AppendDoubleQuotedString(code_name); |
+ msg.Append("\n"); |
msg.WriteToLogFile(); |
} |
if (!FLAG_log_snapshot_positions) return; |
@@ -1371,14 +1342,7 @@ void Logger::SuspectReadEvent(Name* name, Object* obj) { |
msg.Append(String::cast(name)); |
msg.Append('"'); |
} else { |
- Symbol* symbol = Symbol::cast(name); |
- msg.Append("symbol("); |
- if (!symbol->name()->IsUndefined()) { |
- msg.Append("\""); |
- msg.AppendDetailed(String::cast(symbol->name()), false); |
- msg.Append("\" "); |
- } |
- msg.Append("hash %x)", symbol->Hash()); |
+ AppendSymbolName(&msg, Symbol::cast(name)); |
} |
msg.Append('\n'); |
msg.WriteToLogFile(); |