Chromium Code Reviews| Index: src/log.cc |
| =================================================================== |
| --- src/log.cc (revision 13599) |
| +++ src/log.cc (working copy) |
| @@ -468,12 +468,15 @@ |
| 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(); |
| + event.script = v8::Handle<v8::Script>(reinterpret_cast<v8::Script*>(script)); |
|
danno
2013/02/06 14:21:34
Why don't you use "<Script>(ToApi<Script>(script))
|
| event.name.str = name; |
| event.name.len = name_len; |
| @@ -512,7 +515,38 @@ |
| code_event_handler_(&event); |
| } |
| +void Logger::IssueAddCodeLinePosInfoEvent( |
| + void* jit_handler_data, |
| + int pc_offset, |
| + int position, |
| + JitCodeEvent::PositionType position_type) { |
| + JitCodeEvent 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; |
|
danno
2013/02/06 14:21:34
How about making sure the event is a well-defined
|
| + 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; |
| + event.type = JitCodeEvent::CODE_END_LINE_INFO_RECORDING; |
| + event.code_start = code->instruction_start(); |
| + event.user_data = jit_handler_data; |
| + |
| + code_event_handler_(&event); |
|
danno
2013/02/06 14:21:34
same here
|
| +} |
| + |
| #define DECLARE_EVENT(ignore1, name) name, |
| static const char* const kLogEventsNames[Logger::NUMBER_OF_LOG_EVENTS] = { |
| LOG_EVENTS_AND_TAGS_LIST(DECLARE_EVENT) |
| @@ -881,7 +915,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) { |
| @@ -921,7 +955,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) { |
| @@ -968,7 +1002,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) { |
| @@ -1018,7 +1057,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) { |
| @@ -1059,7 +1103,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) { |
| @@ -1097,7 +1141,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) { |
| @@ -1141,7 +1185,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); |
| @@ -1716,7 +1794,6 @@ |
| void Logger::SetCodeEventHandler(uint32_t options, |
| JitCodeEventHandler event_handler) { |
| code_event_handler_ = event_handler; |
| - |
| if (code_event_handler_ != NULL && (options & kJitCodeEventEnumExisting)) { |
| HandleScope scope; |
| LogCodeObjects(); |