OLD | NEW |
---|---|
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
462 | 462 |
463 | 463 |
464 Logger::~Logger() { | 464 Logger::~Logger() { |
465 delete address_to_name_map_; | 465 delete address_to_name_map_; |
466 delete name_buffer_; | 466 delete name_buffer_; |
467 delete log_; | 467 delete log_; |
468 } | 468 } |
469 | 469 |
470 | 470 |
471 void Logger::IssueCodeAddedEvent(Code* code, | 471 void Logger::IssueCodeAddedEvent(Code* code, |
472 Script* script, | |
472 const char* name, | 473 const char* name, |
473 size_t name_len) { | 474 size_t name_len) { |
474 JitCodeEvent event; | 475 JitCodeEvent event; |
476 memset(&event, 0, sizeof(event)); | |
475 event.type = JitCodeEvent::CODE_ADDED; | 477 event.type = JitCodeEvent::CODE_ADDED; |
476 event.code_start = code->instruction_start(); | 478 event.code_start = code->instruction_start(); |
477 event.code_len = code->instruction_size(); | 479 event.code_len = code->instruction_size(); |
480 event.user_data = script; | |
478 event.name.str = name; | 481 event.name.str = name; |
479 event.name.len = name_len; | 482 event.name.len = name_len; |
480 | 483 |
481 code_event_handler_(&event); | 484 code_event_handler_(&event); |
482 } | 485 } |
483 | 486 |
484 | 487 |
485 void Logger::IssueCodeMovedEvent(Address from, Address to) { | 488 void Logger::IssueCodeMovedEvent(Address from, Address to) { |
486 Code* from_code = Code::cast(HeapObject::FromAddress(from)); | 489 Code* from_code = Code::cast(HeapObject::FromAddress(from)); |
487 | 490 |
(...skipping 18 matching lines...) Expand all Loading... | |
506 Code* from_code = Code::cast(HeapObject::FromAddress(from)); | 509 Code* from_code = Code::cast(HeapObject::FromAddress(from)); |
507 | 510 |
508 JitCodeEvent event; | 511 JitCodeEvent event; |
509 event.type = JitCodeEvent::CODE_REMOVED; | 512 event.type = JitCodeEvent::CODE_REMOVED; |
510 event.code_start = from_code->instruction_start(); | 513 event.code_start = from_code->instruction_start(); |
511 event.code_len = from_code->instruction_size(); | 514 event.code_len = from_code->instruction_size(); |
512 | 515 |
513 code_event_handler_(&event); | 516 code_event_handler_(&event); |
514 } | 517 } |
515 | 518 |
519 void Logger::IssueAddCodeLinePosInfoEvent(JITCodeLineInfo* line_info, | |
520 int pc_offset, | |
521 int position, | |
522 bool is_statement) { | |
523 JitCodeEvent event; | |
524 event.type = JitCodeEvent::CODE_ADD_LINE_POS_INFO; | |
525 | |
526 event.user_data = line_info; | |
527 event.line_info.offset = pc_offset; | |
528 event.line_info.pos = position; | |
529 event.line_info.is_statement = is_statement; | |
530 | |
531 code_event_handler_(&event); | |
532 } | |
533 | |
534 void Logger::IssueStartCodePosInfoEvent(JITCodeLineInfo* line_info) { | |
535 JitCodeEvent event; | |
536 event.type = JitCodeEvent::CODE_START_LINE_INFO_RECORDING; | |
537 event.user_data = line_info; | |
538 | |
539 code_event_handler_(&event); | |
540 } | |
541 | |
542 void Logger::IssueEndCodePosInfoEvent(Code* code, JITCodeLineInfo* line_info) { | |
543 JitCodeEvent event; | |
544 event.type = JitCodeEvent::CODE_END_LINE_INFO_RECORDING; | |
545 | |
546 if (code != NULL) { | |
547 event.code_start = code->instruction_start(); | |
548 } else { | |
549 event.code_start = 0; | |
550 } | |
551 | |
552 event.user_data = line_info; | |
553 | |
554 code_event_handler_(&event); | |
555 } | |
516 | 556 |
517 #define DECLARE_EVENT(ignore1, name) name, | 557 #define DECLARE_EVENT(ignore1, name) name, |
518 static const char* const kLogEventsNames[Logger::NUMBER_OF_LOG_EVENTS] = { | 558 static const char* const kLogEventsNames[Logger::NUMBER_OF_LOG_EVENTS] = { |
519 LOG_EVENTS_AND_TAGS_LIST(DECLARE_EVENT) | 559 LOG_EVENTS_AND_TAGS_LIST(DECLARE_EVENT) |
520 }; | 560 }; |
521 #undef DECLARE_EVENT | 561 #undef DECLARE_EVENT |
522 | 562 |
523 | 563 |
524 void Logger::ProfilerBeginEvent() { | 564 void Logger::ProfilerBeginEvent() { |
525 if (!log_->IsEnabled()) return; | 565 if (!log_->IsEnabled()) return; |
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
890 Code* code, | 930 Code* code, |
891 const char* comment) { | 931 const char* comment) { |
892 if (!is_logging_code_events()) return; | 932 if (!is_logging_code_events()) return; |
893 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) { | 933 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) { |
894 name_buffer_->Reset(); | 934 name_buffer_->Reset(); |
895 name_buffer_->AppendBytes(kLogEventsNames[tag]); | 935 name_buffer_->AppendBytes(kLogEventsNames[tag]); |
896 name_buffer_->AppendByte(':'); | 936 name_buffer_->AppendByte(':'); |
897 name_buffer_->AppendBytes(comment); | 937 name_buffer_->AppendBytes(comment); |
898 } | 938 } |
899 if (code_event_handler_ != NULL) { | 939 if (code_event_handler_ != NULL) { |
900 IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size()); | 940 IssueCodeAddedEvent(code, NULL, name_buffer_->get(), name_buffer_->size()); |
901 } | 941 } |
902 if (!log_->IsEnabled()) return; | 942 if (!log_->IsEnabled()) return; |
903 if (FLAG_ll_prof) { | 943 if (FLAG_ll_prof) { |
904 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); | 944 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); |
905 } | 945 } |
906 if (Serializer::enabled()) { | 946 if (Serializer::enabled()) { |
907 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); | 947 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); |
908 } | 948 } |
909 if (!FLAG_log_code) return; | 949 if (!FLAG_log_code) return; |
910 LogMessageBuilder msg(this); | 950 LogMessageBuilder msg(this); |
(...skipping 19 matching lines...) Expand all Loading... | |
930 Code* code, | 970 Code* code, |
931 String* name) { | 971 String* name) { |
932 if (!is_logging_code_events()) return; | 972 if (!is_logging_code_events()) return; |
933 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) { | 973 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) { |
934 name_buffer_->Reset(); | 974 name_buffer_->Reset(); |
935 name_buffer_->AppendBytes(kLogEventsNames[tag]); | 975 name_buffer_->AppendBytes(kLogEventsNames[tag]); |
936 name_buffer_->AppendByte(':'); | 976 name_buffer_->AppendByte(':'); |
937 name_buffer_->AppendString(name); | 977 name_buffer_->AppendString(name); |
938 } | 978 } |
939 if (code_event_handler_ != NULL) { | 979 if (code_event_handler_ != NULL) { |
940 IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size()); | 980 IssueCodeAddedEvent(code, NULL, name_buffer_->get(), name_buffer_->size()); |
941 } | 981 } |
942 if (!log_->IsEnabled()) return; | 982 if (!log_->IsEnabled()) return; |
943 if (FLAG_ll_prof) { | 983 if (FLAG_ll_prof) { |
944 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); | 984 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); |
945 } | 985 } |
946 if (Serializer::enabled()) { | 986 if (Serializer::enabled()) { |
947 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); | 987 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); |
948 } | 988 } |
949 if (!FLAG_log_code) return; | 989 if (!FLAG_log_code) return; |
950 LogMessageBuilder msg(this); | 990 LogMessageBuilder msg(this); |
(...skipping 26 matching lines...) Expand all Loading... | |
977 String* name) { | 1017 String* name) { |
978 if (!is_logging_code_events()) return; | 1018 if (!is_logging_code_events()) return; |
979 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) { | 1019 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) { |
980 name_buffer_->Reset(); | 1020 name_buffer_->Reset(); |
981 name_buffer_->AppendBytes(kLogEventsNames[tag]); | 1021 name_buffer_->AppendBytes(kLogEventsNames[tag]); |
982 name_buffer_->AppendByte(':'); | 1022 name_buffer_->AppendByte(':'); |
983 name_buffer_->AppendBytes(ComputeMarker(code)); | 1023 name_buffer_->AppendBytes(ComputeMarker(code)); |
984 name_buffer_->AppendString(name); | 1024 name_buffer_->AppendString(name); |
985 } | 1025 } |
986 if (code_event_handler_ != NULL) { | 1026 if (code_event_handler_ != NULL) { |
987 IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size()); | 1027 IssueCodeAddedEvent(code, shared->script()->IsScript() ? |
1028 Script::cast(shared->script()):NULL, | |
danno
2013/01/10 16:47:33
nit: formatting, please define the Script* before
| |
1029 name_buffer_->get(), | |
1030 name_buffer_->size()); | |
988 } | 1031 } |
989 if (!log_->IsEnabled()) return; | 1032 if (!log_->IsEnabled()) return; |
990 if (FLAG_ll_prof) { | 1033 if (FLAG_ll_prof) { |
991 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); | 1034 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); |
992 } | 1035 } |
993 if (Serializer::enabled()) { | 1036 if (Serializer::enabled()) { |
994 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); | 1037 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); |
995 } | 1038 } |
996 if (!FLAG_log_code) return; | 1039 if (!FLAG_log_code) return; |
997 if (code == Isolate::Current()->builtins()->builtin( | 1040 if (code == Isolate::Current()->builtins()->builtin( |
(...skipping 29 matching lines...) Expand all Loading... | |
1027 name_buffer_->AppendBytes(kLogEventsNames[tag]); | 1070 name_buffer_->AppendBytes(kLogEventsNames[tag]); |
1028 name_buffer_->AppendByte(':'); | 1071 name_buffer_->AppendByte(':'); |
1029 name_buffer_->AppendBytes(ComputeMarker(code)); | 1072 name_buffer_->AppendBytes(ComputeMarker(code)); |
1030 name_buffer_->AppendString(shared->DebugName()); | 1073 name_buffer_->AppendString(shared->DebugName()); |
1031 name_buffer_->AppendByte(' '); | 1074 name_buffer_->AppendByte(' '); |
1032 name_buffer_->AppendString(source); | 1075 name_buffer_->AppendString(source); |
1033 name_buffer_->AppendByte(':'); | 1076 name_buffer_->AppendByte(':'); |
1034 name_buffer_->AppendInt(line); | 1077 name_buffer_->AppendInt(line); |
1035 } | 1078 } |
1036 if (code_event_handler_ != NULL) { | 1079 if (code_event_handler_ != NULL) { |
1037 IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size()); | 1080 IssueCodeAddedEvent(code, shared->script()->IsScript() ? |
1081 Script::cast(shared->script()):NULL, | |
danno
2013/01/10 16:47:33
same here.
| |
1082 name_buffer_->get(), | |
1083 name_buffer_->size()); | |
1038 } | 1084 } |
1039 if (!log_->IsEnabled()) return; | 1085 if (!log_->IsEnabled()) return; |
1040 if (FLAG_ll_prof) { | 1086 if (FLAG_ll_prof) { |
1041 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); | 1087 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); |
1042 } | 1088 } |
1043 if (Serializer::enabled()) { | 1089 if (Serializer::enabled()) { |
1044 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); | 1090 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); |
1045 } | 1091 } |
1046 if (!FLAG_log_code) return; | 1092 if (!FLAG_log_code) return; |
1047 LogMessageBuilder msg(this); | 1093 LogMessageBuilder msg(this); |
(...skipping 20 matching lines...) Expand all Loading... | |
1068 | 1114 |
1069 void Logger::CodeCreateEvent(LogEventsAndTags tag, Code* code, int args_count) { | 1115 void Logger::CodeCreateEvent(LogEventsAndTags tag, Code* code, int args_count) { |
1070 if (!is_logging_code_events()) return; | 1116 if (!is_logging_code_events()) return; |
1071 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) { | 1117 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) { |
1072 name_buffer_->Reset(); | 1118 name_buffer_->Reset(); |
1073 name_buffer_->AppendBytes(kLogEventsNames[tag]); | 1119 name_buffer_->AppendBytes(kLogEventsNames[tag]); |
1074 name_buffer_->AppendByte(':'); | 1120 name_buffer_->AppendByte(':'); |
1075 name_buffer_->AppendInt(args_count); | 1121 name_buffer_->AppendInt(args_count); |
1076 } | 1122 } |
1077 if (code_event_handler_ != NULL) { | 1123 if (code_event_handler_ != NULL) { |
1078 IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size()); | 1124 IssueCodeAddedEvent(code, NULL, name_buffer_->get(), name_buffer_->size()); |
1079 } | 1125 } |
1080 if (!log_->IsEnabled()) return; | 1126 if (!log_->IsEnabled()) return; |
1081 if (FLAG_ll_prof) { | 1127 if (FLAG_ll_prof) { |
1082 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); | 1128 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); |
1083 } | 1129 } |
1084 if (Serializer::enabled()) { | 1130 if (Serializer::enabled()) { |
1085 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); | 1131 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); |
1086 } | 1132 } |
1087 if (!FLAG_log_code) return; | 1133 if (!FLAG_log_code) return; |
1088 LogMessageBuilder msg(this); | 1134 LogMessageBuilder msg(this); |
(...skipping 17 matching lines...) Expand all Loading... | |
1106 | 1152 |
1107 void Logger::RegExpCodeCreateEvent(Code* code, String* source) { | 1153 void Logger::RegExpCodeCreateEvent(Code* code, String* source) { |
1108 if (!is_logging_code_events()) return; | 1154 if (!is_logging_code_events()) return; |
1109 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) { | 1155 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) { |
1110 name_buffer_->Reset(); | 1156 name_buffer_->Reset(); |
1111 name_buffer_->AppendBytes(kLogEventsNames[REG_EXP_TAG]); | 1157 name_buffer_->AppendBytes(kLogEventsNames[REG_EXP_TAG]); |
1112 name_buffer_->AppendByte(':'); | 1158 name_buffer_->AppendByte(':'); |
1113 name_buffer_->AppendString(source); | 1159 name_buffer_->AppendString(source); |
1114 } | 1160 } |
1115 if (code_event_handler_ != NULL) { | 1161 if (code_event_handler_ != NULL) { |
1116 IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size()); | 1162 IssueCodeAddedEvent(code, NULL, name_buffer_->get(), name_buffer_->size()); |
1117 } | 1163 } |
1118 if (!log_->IsEnabled()) return; | 1164 if (!log_->IsEnabled()) return; |
1119 if (FLAG_ll_prof) { | 1165 if (FLAG_ll_prof) { |
1120 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); | 1166 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); |
1121 } | 1167 } |
1122 if (Serializer::enabled()) { | 1168 if (Serializer::enabled()) { |
1123 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); | 1169 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); |
1124 } | 1170 } |
1125 if (!FLAG_log_code) return; | 1171 if (!FLAG_log_code) return; |
1126 LogMessageBuilder msg(this); | 1172 LogMessageBuilder msg(this); |
(...skipping 23 matching lines...) Expand all Loading... | |
1150 void Logger::CodeDeleteEvent(Address from) { | 1196 void Logger::CodeDeleteEvent(Address from) { |
1151 if (code_event_handler_ != NULL) IssueCodeRemovedEvent(from); | 1197 if (code_event_handler_ != NULL) IssueCodeRemovedEvent(from); |
1152 if (!log_->IsEnabled()) return; | 1198 if (!log_->IsEnabled()) return; |
1153 if (FLAG_ll_prof) LowLevelCodeDeleteEvent(from); | 1199 if (FLAG_ll_prof) LowLevelCodeDeleteEvent(from); |
1154 if (Serializer::enabled() && address_to_name_map_ != NULL) { | 1200 if (Serializer::enabled() && address_to_name_map_ != NULL) { |
1155 address_to_name_map_->Remove(from); | 1201 address_to_name_map_->Remove(from); |
1156 } | 1202 } |
1157 DeleteEventInternal(CODE_DELETE_EVENT, from); | 1203 DeleteEventInternal(CODE_DELETE_EVENT, from); |
1158 } | 1204 } |
1159 | 1205 |
1206 void Logger::CodeLinePosInfoAddEvent(JITCodeLineInfo* line_info, | |
1207 int pc_offset, | |
1208 int position, | |
1209 bool is_statement) { | |
1210 if (code_event_handler_ != NULL) | |
danno
2013/01/10 16:47:33
style nit: always {} around if statements that don
| |
1211 IssueAddCodeLinePosInfoEvent(line_info, pc_offset, position, is_statement); | |
1212 } | |
1213 | |
1214 void Logger::CodeStartLinePosInfoRecordEvent(JITCodeLineInfo* line_info) { | |
1215 if (code_event_handler_ != NULL) | |
danno
2013/01/10 16:47:33
style nit: always {} around if statements that don
| |
1216 IssueStartCodePosInfoEvent(line_info); | |
1217 } | |
1218 | |
1219 void Logger::CodeEndLinePosInfoRecordEvent(Code* code, | |
1220 JITCodeLineInfo* line_info) { | |
1221 if (code_event_handler_ != NULL) | |
danno
2013/01/10 16:47:33
style nit: always {} around if statements that don
| |
1222 IssueEndCodePosInfoEvent(code, line_info); | |
danno
2013/01/10 16:47:33
style nit: always {} around if statements that don
| |
1223 } | |
1160 | 1224 |
1161 void Logger::SnapshotPositionEvent(Address addr, int pos) { | 1225 void Logger::SnapshotPositionEvent(Address addr, int pos) { |
1162 if (!log_->IsEnabled()) return; | 1226 if (!log_->IsEnabled()) return; |
1163 if (FLAG_ll_prof) LowLevelSnapshotPositionEvent(addr, pos); | 1227 if (FLAG_ll_prof) LowLevelSnapshotPositionEvent(addr, pos); |
1164 if (Serializer::enabled() && address_to_name_map_ != NULL) { | 1228 if (Serializer::enabled() && address_to_name_map_ != NULL) { |
1165 const char* code_name = address_to_name_map_->Lookup(addr); | 1229 const char* code_name = address_to_name_map_->Lookup(addr); |
1166 if (code_name == NULL) return; // Not a code object. | 1230 if (code_name == NULL) return; // Not a code object. |
1167 LogMessageBuilder msg(this); | 1231 LogMessageBuilder msg(this); |
1168 msg.Append("%s,%d,\"", kLogEventsNames[SNAPSHOT_CODE_NAME_EVENT], pos); | 1232 msg.Append("%s,%d,\"", kLogEventsNames[SNAPSHOT_CODE_NAME_EVENT], pos); |
1169 for (const char* p = code_name; *p != '\0'; ++p) { | 1233 for (const char* p = code_name; *p != '\0'; ++p) { |
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1829 void SamplerRegistry::RemoveActiveSampler(Sampler* sampler) { | 1893 void SamplerRegistry::RemoveActiveSampler(Sampler* sampler) { |
1830 ASSERT(sampler->IsActive()); | 1894 ASSERT(sampler->IsActive()); |
1831 ScopedLock lock(active_samplers_mutex); | 1895 ScopedLock lock(active_samplers_mutex); |
1832 ASSERT(active_samplers_ != NULL); | 1896 ASSERT(active_samplers_ != NULL); |
1833 bool removed = active_samplers_->RemoveElement(sampler); | 1897 bool removed = active_samplers_->RemoveElement(sampler); |
1834 ASSERT(removed); | 1898 ASSERT(removed); |
1835 USE(removed); | 1899 USE(removed); |
1836 } | 1900 } |
1837 | 1901 |
1838 } } // namespace v8::internal | 1902 } } // namespace v8::internal |
OLD | NEW |