Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(816)

Unified Diff: src/log.cc

Issue 499483002: [WIP] A sampler thread in d8 for consuming the new API. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« include/v8-sampler.h ('K') | « src/log.h ('k') | src/log-utils.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/log.cc
diff --git a/src/log.cc b/src/log.cc
index 6d88a535dc78f4ce10ce7a578d56d1b7b32b4e7c..877c6b8e961f574f5078002cba54a2b789b05d69 100644
--- a/src/log.cc
+++ b/src/log.cc
@@ -1063,6 +1063,9 @@ void Logger::ApiNamedSecurityCheck(Object* key) {
void Logger::SharedLibraryEvent(const std::string& library_path,
uintptr_t start,
uintptr_t end) {
+ codeEventHandler()->SharedLibrary(library_path,
+ (const void*)start,
+ (const void*)end);
if (!log_->IsEnabled() || !FLAG_prof) return;
Log::MessageBuilder msg(log_);
msg.Append("shared-library,\"%s\",0x%08" V8PRIxPTR ",0x%08" V8PRIxPTR "\n",
@@ -1353,9 +1356,16 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag,
if (!FLAG_log_code || !log_->IsEnabled()) return;
Log::MessageBuilder msg(log_);
AppendCodeCreateHeader(&msg, tag, code);
+ msg.StartSubstring();
msg.AppendDoubleQuotedString(comment);
+ msg.EndSubstring();
msg.Append('\n');
msg.WriteToLogFile();
+ std::string code_name;
+ msg.GetSubstring(&code_name);
+ codeEventHandler()->Create((const void*)code->address(),
Jarin 2014/08/26 08:23:57 If you are interested in the address of actual cod
+ (const int)code->ExecutableSize(),
+ code_name);
}
@@ -1370,6 +1380,7 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag,
if (!FLAG_log_code || !log_->IsEnabled()) return;
Log::MessageBuilder msg(log_);
AppendCodeCreateHeader(&msg, tag, code);
+ msg.StartSubstring();
if (name->IsString()) {
msg.Append('"');
msg.AppendDetailed(String::cast(name), false);
@@ -1377,8 +1388,14 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag,
} else {
msg.AppendSymbolName(Symbol::cast(name));
}
+ msg.EndSubstring();
msg.Append('\n');
msg.WriteToLogFile();
+ std::string code_name;
+ msg.GetSubstring(&code_name);
+ codeEventHandler()->Create((const void*)code->address(),
+ (const int)code->ExecutableSize(),
+ code_name);
}
@@ -1398,6 +1415,7 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag,
Log::MessageBuilder msg(log_);
AppendCodeCreateHeader(&msg, tag, code);
+ msg.StartSubstring();
if (name->IsString()) {
SmartArrayPointer<char> str =
String::cast(name)->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL);
@@ -1405,11 +1423,17 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag,
} else {
msg.AppendSymbolName(Symbol::cast(name));
}
+ msg.EndSubstring();
msg.Append(',');
msg.AppendAddress(shared->address());
msg.Append(",%s", ComputeMarker(code));
msg.Append('\n');
msg.WriteToLogFile();
+ std::string code_name;
+ msg.GetSubstring(&code_name);
+ codeEventHandler()->Create((const void*)code->address(),
+ (const int)code->ExecutableSize(),
+ code_name);
}
@@ -1430,6 +1454,7 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag,
if (!FLAG_log_code || !log_->IsEnabled()) return;
Log::MessageBuilder msg(log_);
AppendCodeCreateHeader(&msg, tag, code);
+ msg.StartSubstring();
SmartArrayPointer<char> name =
shared->DebugName()->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL);
msg.Append("\"%s ", name.get());
@@ -1440,11 +1465,18 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag,
} else {
msg.AppendSymbolName(Symbol::cast(source));
}
- msg.Append(":%d:%d\",", line, column);
+ msg.Append(":%d:%d\"", line, column);
+ msg.EndSubstring();
+ msg.Append(",");
msg.AppendAddress(shared->address());
msg.Append(",%s", ComputeMarker(code));
msg.Append('\n');
msg.WriteToLogFile();
+ std::string code_name;
+ msg.GetSubstring(&code_name);
+ codeEventHandler()->Create((const void*)code->address(),
+ (const int)code->ExecutableSize(),
+ code_name);
}
@@ -1459,9 +1491,16 @@ void Logger::CodeCreateEvent(LogEventsAndTags tag,
if (!FLAG_log_code || !log_->IsEnabled()) return;
Log::MessageBuilder msg(log_);
AppendCodeCreateHeader(&msg, tag, code);
+ msg.StartSubstring();
msg.Append("\"args_count: %d\"", args_count);
+ msg.EndSubstring();
msg.Append('\n');
msg.WriteToLogFile();
+ std::string code_name;
+ msg.GetSubstring(&code_name);
+ codeEventHandler()->Create((const void*)code->address(),
+ (const int)code->ExecutableSize(),
+ code_name);
}
@@ -1502,17 +1541,25 @@ void Logger::RegExpCodeCreateEvent(Code* code, String* source) {
if (!FLAG_log_code || !log_->IsEnabled()) return;
Log::MessageBuilder msg(log_);
AppendCodeCreateHeader(&msg, REG_EXP_TAG, code);
+ msg.StartSubstring();
msg.Append('"');
msg.AppendDetailed(source, false);
msg.Append('"');
+ msg.EndSubstring();
msg.Append('\n');
msg.WriteToLogFile();
+ std::string code_name;
+ msg.GetSubstring(&code_name);
+ codeEventHandler()->Create((const void*)code->address(),
+ (const int)code->ExecutableSize(),
+ code_name);
}
void Logger::CodeMoveEvent(Address from, Address to) {
PROFILER_LOG(CodeMoveEvent(from, to));
-
+ codeEventHandler()->Move((const void*)from,
+ (const void*)to);
if (!is_logging_code_events()) return;
CALL_LISTENERS(CodeMoveEvent(from, to));
MoveEventInternal(CODE_MOVE_EVENT, from, to);
@@ -1521,6 +1568,7 @@ void Logger::CodeMoveEvent(Address from, Address to) {
void Logger::CodeDeleteEvent(Address from) {
PROFILER_LOG(CodeDeleteEvent(from));
+ codeEventHandler()->Delete((const void*)from);
Jarin 2014/08/26 08:23:57 I think this is never called.
if (!is_logging_code_events()) return;
CALL_LISTENERS(CodeDeleteEvent(from));
@@ -2086,11 +2134,23 @@ void Logger::SetCodeEventHandler(uint32_t options,
}
+void Logger::SetCodeEventHandler(v8::CodeEventHandler* handler) {
+ code_event_handler_ = handler;
+}
+
+
Sampler* Logger::sampler() {
return ticker_;
}
+CodeEventHandler* Logger::codeEventHandler() {
+ if (code_event_handler_ == NULL)
+ code_event_handler_ = new StubCodeEventHandler();
+ return code_event_handler_;
+}
+
+
FILE* Logger::TearDown() {
if (!is_initialized_) return NULL;
is_initialized_ = false;
« include/v8-sampler.h ('K') | « src/log.h ('k') | src/log-utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698