| Index: src/log.cc
|
| ===================================================================
|
| --- src/log.cc (revision 13684)
|
| +++ src/log.cc (working copy)
|
| @@ -469,12 +469,17 @@
|
|
|
|
|
| void Logger::IssueCodeAddedEvent(Code* code,
|
| + Script* script,
|
| const char* name,
|
| size_t name_len) {
|
| JitCodeEvent event;
|
| + memset(&event, 0, sizeof(event));
|
| event.type = JitCodeEvent::CODE_ADDED;
|
| event.code_start = code->instruction_start();
|
| event.code_len = code->instruction_size();
|
| + Handle<Script> script_handle =
|
| + script != NULL ? Handle<Script>(script) : Handle<Script>();
|
| + event.script = v8::Handle<v8::Script>(ToApi<v8::Script>(script_handle));
|
| event.name.str = name;
|
| event.name.len = name_len;
|
|
|
| @@ -513,7 +518,41 @@
|
| code_event_handler_(&event);
|
| }
|
|
|
| +void Logger::IssueAddCodeLinePosInfoEvent(
|
| + void* jit_handler_data,
|
| + int pc_offset,
|
| + int position,
|
| + JitCodeEvent::PositionType position_type) {
|
| + JitCodeEvent event;
|
| + memset(&event, 0, sizeof(event));
|
| + event.type = JitCodeEvent::CODE_ADD_LINE_POS_INFO;
|
| + event.user_data = jit_handler_data;
|
| + event.line_info.offset = pc_offset;
|
| + event.line_info.pos = position;
|
| + event.line_info.position_type = position_type;
|
|
|
| + code_event_handler_(&event);
|
| +}
|
| +
|
| +void* Logger::IssueStartCodePosInfoEvent() {
|
| + JitCodeEvent event;
|
| + memset(&event, 0, sizeof(event));
|
| + event.type = JitCodeEvent::CODE_START_LINE_INFO_RECORDING;
|
| +
|
| + code_event_handler_(&event);
|
| + return event.user_data;
|
| +}
|
| +
|
| +void Logger::IssueEndCodePosInfoEvent(Code* code, void* jit_handler_data) {
|
| + JitCodeEvent event;
|
| + memset(&event, 0, sizeof(event));
|
| + event.type = JitCodeEvent::CODE_END_LINE_INFO_RECORDING;
|
| + event.code_start = code->instruction_start();
|
| + event.user_data = jit_handler_data;
|
| +
|
| + code_event_handler_(&event);
|
| +}
|
| +
|
| #define DECLARE_EVENT(ignore1, name) name,
|
| static const char* const kLogEventsNames[Logger::NUMBER_OF_LOG_EVENTS] = {
|
| LOG_EVENTS_AND_TAGS_LIST(DECLARE_EVENT)
|
| @@ -884,7 +923,7 @@
|
| name_buffer_->AppendBytes(comment);
|
| }
|
| if (code_event_handler_ != NULL) {
|
| - IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size());
|
| + IssueCodeAddedEvent(code, NULL, name_buffer_->get(), name_buffer_->size());
|
| }
|
| if (!log_->IsEnabled()) return;
|
| if (FLAG_ll_prof) {
|
| @@ -924,7 +963,7 @@
|
| name_buffer_->AppendString(name);
|
| }
|
| if (code_event_handler_ != NULL) {
|
| - IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size());
|
| + IssueCodeAddedEvent(code, NULL, name_buffer_->get(), name_buffer_->size());
|
| }
|
| if (!log_->IsEnabled()) return;
|
| if (FLAG_ll_prof) {
|
| @@ -971,7 +1010,12 @@
|
| name_buffer_->AppendString(name);
|
| }
|
| if (code_event_handler_ != NULL) {
|
| - IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size());
|
| + Script* script =
|
| + shared->script()->IsScript() ? Script::cast(shared->script()) : NULL;
|
| + IssueCodeAddedEvent(code,
|
| + script,
|
| + name_buffer_->get(),
|
| + name_buffer_->size());
|
| }
|
| if (!log_->IsEnabled()) return;
|
| if (FLAG_ll_prof) {
|
| @@ -1021,7 +1065,12 @@
|
| name_buffer_->AppendInt(line);
|
| }
|
| if (code_event_handler_ != NULL) {
|
| - IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size());
|
| + Script* script =
|
| + shared->script()->IsScript() ? Script::cast(shared->script()) : NULL;
|
| + IssueCodeAddedEvent(code,
|
| + script,
|
| + name_buffer_->get(),
|
| + name_buffer_->size());
|
| }
|
| if (!log_->IsEnabled()) return;
|
| if (FLAG_ll_prof) {
|
| @@ -1062,7 +1111,7 @@
|
| name_buffer_->AppendInt(args_count);
|
| }
|
| if (code_event_handler_ != NULL) {
|
| - IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size());
|
| + IssueCodeAddedEvent(code, NULL, name_buffer_->get(), name_buffer_->size());
|
| }
|
| if (!log_->IsEnabled()) return;
|
| if (FLAG_ll_prof) {
|
| @@ -1100,7 +1149,7 @@
|
| name_buffer_->AppendString(source);
|
| }
|
| if (code_event_handler_ != NULL) {
|
| - IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size());
|
| + IssueCodeAddedEvent(code, NULL, name_buffer_->get(), name_buffer_->size());
|
| }
|
| if (!log_->IsEnabled()) return;
|
| if (FLAG_ll_prof) {
|
| @@ -1144,7 +1193,41 @@
|
| DeleteEventInternal(CODE_DELETE_EVENT, from);
|
| }
|
|
|
| +void Logger::CodeLinePosInfoAddPositionEvent(void* jit_handler_data,
|
| + int pc_offset,
|
| + int position) {
|
| + if (code_event_handler_ != NULL) {
|
| + IssueAddCodeLinePosInfoEvent(jit_handler_data,
|
| + pc_offset,
|
| + position,
|
| + JitCodeEvent::POSITION);
|
| + }
|
| +}
|
|
|
| +void Logger::CodeLinePosInfoAddStatementPositionEvent(void* jit_handler_data,
|
| + int pc_offset,
|
| + int position) {
|
| + if (code_event_handler_ != NULL) {
|
| + IssueAddCodeLinePosInfoEvent(jit_handler_data,
|
| + pc_offset,
|
| + position,
|
| + JitCodeEvent::STATEMENT_POSITION);
|
| + }
|
| +}
|
| +
|
| +void Logger::CodeStartLinePosInfoRecordEvent(PositionsRecorder* pos_recorder) {
|
| + if (code_event_handler_ != NULL) {
|
| + pos_recorder->AttachJITHandlerData(IssueStartCodePosInfoEvent());
|
| + }
|
| +}
|
| +
|
| +void Logger::CodeEndLinePosInfoRecordEvent(Code* code,
|
| + void* jit_handler_data) {
|
| + if (code_event_handler_ != NULL) {
|
| + IssueEndCodePosInfoEvent(code, jit_handler_data);
|
| + }
|
| +}
|
| +
|
| void Logger::SnapshotPositionEvent(Address addr, int pos) {
|
| if (!log_->IsEnabled()) return;
|
| if (FLAG_ll_prof) LowLevelSnapshotPositionEvent(addr, pos);
|
|
|