Index: src/log.cc |
diff --git a/src/log.cc b/src/log.cc |
index 9f2d9839f770d7591f0cfecb3c65e8f1ef64db77..877a257dde8259270781dd21f09408176b50f670 100644 |
--- a/src/log.cc |
+++ b/src/log.cc |
@@ -35,6 +35,7 @@ |
#include "deoptimizer.h" |
#include "global-handles.h" |
#include "log.h" |
+#include "log-utils.h" |
#include "macro-assembler.h" |
#include "platform.h" |
#include "runtime-profiler.h" |
@@ -589,7 +590,7 @@ static const char* const kLogEventsNames[Logger::NUMBER_OF_LOG_EVENTS] = { |
void Logger::ProfilerBeginEvent() { |
if (!log_->IsEnabled()) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("profiler,\"begin\",%d\n", kSamplingIntervalMs); |
msg.WriteToLogFile(); |
} |
@@ -602,7 +603,7 @@ void Logger::StringEvent(const char* name, const char* value) { |
void Logger::UncheckedStringEvent(const char* name, const char* value) { |
if (!log_->IsEnabled()) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("%s,\"%s\"\n", name, value); |
msg.WriteToLogFile(); |
} |
@@ -620,7 +621,7 @@ void Logger::IntPtrTEvent(const char* name, intptr_t value) { |
void Logger::UncheckedIntEvent(const char* name, int value) { |
if (!log_->IsEnabled()) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("%s,%d\n", name, value); |
msg.WriteToLogFile(); |
} |
@@ -628,7 +629,7 @@ void Logger::UncheckedIntEvent(const char* name, int value) { |
void Logger::UncheckedIntPtrTEvent(const char* name, intptr_t value) { |
if (!log_->IsEnabled()) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("%s,%" V8_PTR_PREFIX "d\n", name, value); |
msg.WriteToLogFile(); |
} |
@@ -636,7 +637,7 @@ void Logger::UncheckedIntPtrTEvent(const char* name, intptr_t value) { |
void Logger::HandleEvent(const char* name, Object** location) { |
if (!log_->IsEnabled() || !FLAG_log_handles) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("%s,0x%" V8PRIxPTR "\n", name, location); |
msg.WriteToLogFile(); |
} |
@@ -647,7 +648,7 @@ void Logger::HandleEvent(const char* name, Object** location) { |
// FLAG_log_api is true. |
void Logger::ApiEvent(const char* format, ...) { |
ASSERT(log_->IsEnabled() && FLAG_log_api); |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
va_list ap; |
va_start(ap, format); |
msg.AppendVA(format, ap); |
@@ -686,7 +687,7 @@ void Logger::SharedLibraryEvent(const char* library_path, |
uintptr_t start, |
uintptr_t end) { |
if (!log_->IsEnabled() || !FLAG_prof) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("shared-library,\"%s\",0x%08" V8PRIxPTR ",0x%08" V8PRIxPTR "\n", |
library_path, |
start, |
@@ -699,7 +700,7 @@ void Logger::SharedLibraryEvent(const wchar_t* library_path, |
uintptr_t start, |
uintptr_t end) { |
if (!log_->IsEnabled() || !FLAG_prof) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("shared-library,\"%ls\",0x%08" V8PRIxPTR ",0x%08" V8PRIxPTR "\n", |
library_path, |
start, |
@@ -711,7 +712,7 @@ void Logger::SharedLibraryEvent(const wchar_t* library_path, |
void Logger::CodeDeoptEvent(Code* code) { |
if (!log_->IsEnabled()) return; |
ASSERT(FLAG_log_internal_timer_events); |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
int since_epoch = static_cast<int>(OS::Ticks() - epoch_); |
msg.Append("code-deopt,%ld,%d\n", since_epoch, code->CodeSize()); |
msg.WriteToLogFile(); |
@@ -721,7 +722,7 @@ void Logger::CodeDeoptEvent(Code* code) { |
void Logger::TimerEvent(StartEnd se, const char* name) { |
if (!log_->IsEnabled()) return; |
ASSERT(FLAG_log_internal_timer_events); |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
int since_epoch = static_cast<int>(OS::Ticks() - epoch_); |
const char* format = (se == START) ? "timer-event-start,\"%s\",%ld\n" |
: "timer-event-end,\"%s\",%ld\n"; |
@@ -762,7 +763,7 @@ const char* Logger::TimerEventScope::v8_external = "V8.External"; |
void Logger::LogRegExpSource(Handle<JSRegExp> regexp) { |
// Prints "/" + re.source + "/" + |
// (re.global?"g":"") + (re.ignorecase?"i":"") + (re.multiline?"m":"") |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
Handle<Object> source = GetProperty(regexp, "source"); |
if (!source->IsString()) { |
@@ -803,7 +804,7 @@ void Logger::LogRegExpSource(Handle<JSRegExp> regexp) { |
void Logger::RegExpCompileEvent(Handle<JSRegExp> regexp, bool in_cache) { |
if (!log_->IsEnabled() || !FLAG_log_regexp) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("regexp-compile,"); |
LogRegExpSource(regexp); |
msg.Append(in_cache ? ",hit\n" : ",miss\n"); |
@@ -815,7 +816,7 @@ void Logger::LogRuntime(Vector<const char> format, |
JSArray* args) { |
if (!log_->IsEnabled() || !FLAG_log_runtime) return; |
HandleScope scope(isolate_); |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
for (int i = 0; i < format.length(); i++) { |
char c = format[i]; |
if (c == '%' && i <= format.length() - 2) { |
@@ -916,7 +917,7 @@ void Logger::ApiEntryCall(const char* name) { |
void Logger::NewEvent(const char* name, void* object, size_t size) { |
if (!log_->IsEnabled() || !FLAG_log) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("new,%s,0x%" V8PRIxPTR ",%u\n", name, object, |
static_cast<unsigned int>(size)); |
msg.WriteToLogFile(); |
@@ -925,7 +926,7 @@ void Logger::NewEvent(const char* name, void* object, size_t size) { |
void Logger::DeleteEvent(const char* name, void* object) { |
if (!log_->IsEnabled() || !FLAG_log) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("delete,%s,0x%" V8PRIxPTR "\n", name, object); |
msg.WriteToLogFile(); |
} |
@@ -940,10 +941,16 @@ void Logger::DeleteEventStatic(const char* name, void* object) { |
Isolate::Current()->logger()->DeleteEvent(name, object); |
} |
+ |
+class CodeLogger { |
yurys
2013/07/18 17:17:52
Delete this.
|
+ public: |
+}; |
+ |
+ |
void Logger::CallbackEventInternal(const char* prefix, Name* name, |
Address entry_point) { |
if (!log_->IsEnabled() || !FLAG_log_code) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("%s,%s,-2,", |
kLogEventsNames[CODE_CREATION_EVENT], |
kLogEventsNames[CALLBACK_TAG]); |
@@ -1023,12 +1030,12 @@ void Logger::LogRecordedBuffer(Code* code, SharedFunctionInfo* shared) { |
} |
-void Logger::AppendCodeCreateHeader(LogMessageBuilder* msg, |
- LogEventsAndTags tag, |
- Code* code) { |
+static void AppendCodeCreateHeader(Log::MessageBuilder* msg, |
+ Logger::LogEventsAndTags tag, |
+ Code* code) { |
ASSERT(msg); |
msg->Append("%s,%s,%d,", |
- kLogEventsNames[CODE_CREATION_EVENT], |
+ kLogEventsNames[Logger::CODE_CREATION_EVENT], |
kLogEventsNames[tag], |
code->kind()); |
msg->AppendAddress(code->address()); |
@@ -1036,19 +1043,6 @@ void Logger::AppendCodeCreateHeader(LogMessageBuilder* msg, |
} |
-void Logger::AppendSymbolName(LogMessageBuilder* msg, |
- Symbol* symbol) { |
- ASSERT(symbol); |
- 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) { |
@@ -1060,7 +1054,7 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag, |
} |
if (!FLAG_log_code || !log_->IsEnabled()) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
AppendCodeCreateHeader(&msg, tag, code); |
msg.AppendDoubleQuotedString(comment); |
msg.Append('\n'); |
@@ -1079,14 +1073,14 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag, |
} |
if (!FLAG_log_code || !log_->IsEnabled()) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
AppendCodeCreateHeader(&msg, tag, code); |
if (name->IsString()) { |
msg.Append('"'); |
msg.AppendDetailed(String::cast(name), false); |
msg.Append('"'); |
} else { |
- AppendSymbolName(&msg, Symbol::cast(name)); |
+ msg.AppendSymbolName(Symbol::cast(name)); |
} |
msg.Append('\n'); |
msg.WriteToLogFile(); |
@@ -1121,14 +1115,14 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag, |
Builtins::kLazyCompile)) |
return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
AppendCodeCreateHeader(&msg, tag, code); |
if (name->IsString()) { |
SmartArrayPointer<char> str = |
String::cast(name)->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); |
msg.Append("\"%s\"", *str); |
} else { |
- AppendSymbolName(&msg, Symbol::cast(name)); |
+ msg.AppendSymbolName(Symbol::cast(name)); |
} |
msg.Append(','); |
msg.AppendAddress(shared->address()); |
@@ -1165,7 +1159,7 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag, |
} |
if (!FLAG_log_code || !log_->IsEnabled()) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
AppendCodeCreateHeader(&msg, tag, code); |
SmartArrayPointer<char> name = |
shared->DebugName()->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); |
@@ -1175,7 +1169,7 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag, |
String::cast(source)->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); |
msg.Append("%s", *sourcestr); |
} else { |
- AppendSymbolName(&msg, Symbol::cast(source)); |
+ msg.AppendSymbolName(Symbol::cast(source)); |
} |
msg.Append(":%d\",", line); |
msg.AppendAddress(shared->address()); |
@@ -1194,7 +1188,7 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag, Code* code, int args_count) { |
} |
if (!FLAG_log_code || !log_->IsEnabled()) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
AppendCodeCreateHeader(&msg, tag, code); |
msg.Append("\"args_count: %d\"", args_count); |
msg.Append('\n'); |
@@ -1218,7 +1212,7 @@ void Logger::RegExpCodeCreateEvent(Code* code, String* source) { |
} |
if (!FLAG_log_code || !log_->IsEnabled()) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
AppendCodeCreateHeader(&msg, REG_EXP_TAG, code); |
msg.Append('"'); |
msg.AppendDetailed(source, false); |
@@ -1286,14 +1280,14 @@ void Logger::SnapshotPositionEvent(Address addr, int pos) { |
if (Serializer::enabled() && address_to_name_map_ != NULL) { |
const char* code_name = address_to_name_map_->Lookup(addr); |
if (code_name == NULL) return; // Not a code object. |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
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; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("%s,", kLogEventsNames[SNAPSHOT_POSITION_EVENT]); |
msg.AppendAddress(addr); |
msg.Append(",%d", pos); |
@@ -1311,7 +1305,7 @@ void Logger::MoveEventInternal(LogEventsAndTags event, |
Address from, |
Address to) { |
if (!log_->IsEnabled() || !FLAG_log_code) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("%s,", kLogEventsNames[event]); |
msg.AppendAddress(from); |
msg.Append(','); |
@@ -1323,7 +1317,7 @@ void Logger::MoveEventInternal(LogEventsAndTags event, |
void Logger::DeleteEventInternal(LogEventsAndTags event, Address from) { |
if (!log_->IsEnabled() || !FLAG_log_code) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("%s,", kLogEventsNames[event]); |
msg.AppendAddress(from); |
msg.Append('\n'); |
@@ -1333,7 +1327,7 @@ void Logger::DeleteEventInternal(LogEventsAndTags event, Address from) { |
void Logger::ResourceEvent(const char* name, const char* tag) { |
if (!log_->IsEnabled() || !FLAG_log) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("%s,%s,", name, tag); |
uint32_t sec, usec; |
@@ -1349,7 +1343,7 @@ void Logger::ResourceEvent(const char* name, const char* tag) { |
void Logger::SuspectReadEvent(Name* name, Object* obj) { |
if (!log_->IsEnabled() || !FLAG_log_suspect) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
String* class_name = obj->IsJSObject() |
? JSObject::cast(obj)->class_name() |
: isolate_->heap()->empty_string(); |
@@ -1361,7 +1355,7 @@ void Logger::SuspectReadEvent(Name* name, Object* obj) { |
msg.Append(String::cast(name)); |
msg.Append('"'); |
} else { |
- AppendSymbolName(&msg, Symbol::cast(name)); |
+ msg.AppendSymbolName(Symbol::cast(name)); |
} |
msg.Append('\n'); |
msg.WriteToLogFile(); |
@@ -1370,7 +1364,7 @@ void Logger::SuspectReadEvent(Name* name, Object* obj) { |
void Logger::HeapSampleBeginEvent(const char* space, const char* kind) { |
if (!log_->IsEnabled() || !FLAG_log_gc) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
// Using non-relative system time in order to be able to synchronize with |
// external memory profiling events (e.g. DOM memory size). |
msg.Append("heap-sample-begin,\"%s\",\"%s\",%.0f\n", |
@@ -1381,7 +1375,7 @@ void Logger::HeapSampleBeginEvent(const char* space, const char* kind) { |
void Logger::HeapSampleEndEvent(const char* space, const char* kind) { |
if (!log_->IsEnabled() || !FLAG_log_gc) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("heap-sample-end,\"%s\",\"%s\"\n", space, kind); |
msg.WriteToLogFile(); |
} |
@@ -1389,7 +1383,7 @@ void Logger::HeapSampleEndEvent(const char* space, const char* kind) { |
void Logger::HeapSampleItemEvent(const char* type, int number, int bytes) { |
if (!log_->IsEnabled() || !FLAG_log_gc) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("heap-sample-item,%s,%d,%d\n", type, number, bytes); |
msg.WriteToLogFile(); |
} |
@@ -1397,7 +1391,7 @@ void Logger::HeapSampleItemEvent(const char* type, int number, int bytes) { |
void Logger::DebugTag(const char* call_site_tag) { |
if (!log_->IsEnabled() || !FLAG_log) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("debug-tag,%s\n", call_site_tag); |
msg.WriteToLogFile(); |
} |
@@ -1410,7 +1404,7 @@ void Logger::DebugEvent(const char* event_type, Vector<uint16_t> parameter) { |
s.AddCharacter(static_cast<char>(parameter[i])); |
} |
char* parameter_string = s.Finalize(); |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("debug-queue-event,%s,%15.3f,%s\n", |
event_type, |
OS::TimeCurrentMillis(), |
@@ -1422,7 +1416,7 @@ void Logger::DebugEvent(const char* event_type, Vector<uint16_t> parameter) { |
void Logger::TickEvent(TickSample* sample, bool overflow) { |
if (!log_->IsEnabled() || !FLAG_prof) return; |
- LogMessageBuilder msg(this); |
+ Log::MessageBuilder msg(log_); |
msg.Append("%s,", kLogEventsNames[TICK_EVENT]); |
msg.AppendAddress(sample->pc); |
msg.Append(",%ld", static_cast<int>(OS::Ticks() - epoch_)); |