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

Side by Side Diff: src/log.cc

Issue 12223027: This patch is the propagation version of https://codereview.chromium.org/10824032 patch (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 7 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 461
462 462
463 Logger::~Logger() { 463 Logger::~Logger() {
464 delete address_to_name_map_; 464 delete address_to_name_map_;
465 delete name_buffer_; 465 delete name_buffer_;
466 delete log_; 466 delete log_;
467 } 467 }
468 468
469 469
470 void Logger::IssueCodeAddedEvent(Code* code, 470 void Logger::IssueCodeAddedEvent(Code* code,
471 Handle<Script> script,
471 const char* name, 472 const char* name,
472 size_t name_len) { 473 size_t name_len) {
473 JitCodeEvent event; 474 JitCodeEvent event;
475 memset(&event, 0, sizeof(event));
474 event.type = JitCodeEvent::CODE_ADDED; 476 event.type = JitCodeEvent::CODE_ADDED;
475 event.code_start = code->instruction_start(); 477 event.code_start = code->instruction_start();
476 event.code_len = code->instruction_size(); 478 event.code_len = code->instruction_size();
479 event.script = v8::Handle<v8::Script>(ToApi<v8::Script>(script));
477 event.name.str = name; 480 event.name.str = name;
478 event.name.len = name_len; 481 event.name.len = name_len;
479 482
480 code_event_handler_(&event); 483 code_event_handler_(&event);
481 } 484 }
482 485
483 486
484 void Logger::IssueCodeMovedEvent(Address from, Address to) { 487 void Logger::IssueCodeMovedEvent(Address from, Address to) {
485 Code* from_code = Code::cast(HeapObject::FromAddress(from)); 488 Code* from_code = Code::cast(HeapObject::FromAddress(from));
486 489
(...skipping 18 matching lines...) Expand all
505 Code* from_code = Code::cast(HeapObject::FromAddress(from)); 508 Code* from_code = Code::cast(HeapObject::FromAddress(from));
506 509
507 JitCodeEvent event; 510 JitCodeEvent event;
508 event.type = JitCodeEvent::CODE_REMOVED; 511 event.type = JitCodeEvent::CODE_REMOVED;
509 event.code_start = from_code->instruction_start(); 512 event.code_start = from_code->instruction_start();
510 event.code_len = from_code->instruction_size(); 513 event.code_len = from_code->instruction_size();
511 514
512 code_event_handler_(&event); 515 code_event_handler_(&event);
513 } 516 }
514 517
518 void Logger::IssueAddCodeLinePosInfoEvent(
519 void* jit_handler_data,
520 int pc_offset,
521 int position,
522 JitCodeEvent::PositionType position_type) {
523 JitCodeEvent event;
524 memset(&event, 0, sizeof(event));
525 event.type = JitCodeEvent::CODE_ADD_LINE_POS_INFO;
526 event.user_data = jit_handler_data;
527 event.line_info.offset = pc_offset;
528 event.line_info.pos = position;
529 event.line_info.position_type = position_type;
530
531 code_event_handler_(&event);
532 }
533
534 void* Logger::IssueStartCodePosInfoEvent() {
535 JitCodeEvent event;
536 memset(&event, 0, sizeof(event));
537 event.type = JitCodeEvent::CODE_START_LINE_INFO_RECORDING;
538
539 code_event_handler_(&event);
540 return event.user_data;
541 }
542
543 void Logger::IssueEndCodePosInfoEvent(Code* code, void* jit_handler_data) {
544 JitCodeEvent event;
545 memset(&event, 0, sizeof(event));
546 event.type = JitCodeEvent::CODE_END_LINE_INFO_RECORDING;
547 event.code_start = code->instruction_start();
548 event.user_data = jit_handler_data;
549
550 code_event_handler_(&event);
551 }
515 552
516 #define DECLARE_EVENT(ignore1, name) name, 553 #define DECLARE_EVENT(ignore1, name) name,
517 static const char* const kLogEventsNames[Logger::NUMBER_OF_LOG_EVENTS] = { 554 static const char* const kLogEventsNames[Logger::NUMBER_OF_LOG_EVENTS] = {
518 LOG_EVENTS_AND_TAGS_LIST(DECLARE_EVENT) 555 LOG_EVENTS_AND_TAGS_LIST(DECLARE_EVENT)
519 }; 556 };
520 #undef DECLARE_EVENT 557 #undef DECLARE_EVENT
521 558
522 559
523 void Logger::ProfilerBeginEvent() { 560 void Logger::ProfilerBeginEvent() {
524 if (!log_->IsEnabled()) return; 561 if (!log_->IsEnabled()) return;
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 Code* code, 911 Code* code,
875 const char* comment) { 912 const char* comment) {
876 if (!is_logging_code_events()) return; 913 if (!is_logging_code_events()) return;
877 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) { 914 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) {
878 name_buffer_->Reset(); 915 name_buffer_->Reset();
879 name_buffer_->AppendBytes(kLogEventsNames[tag]); 916 name_buffer_->AppendBytes(kLogEventsNames[tag]);
880 name_buffer_->AppendByte(':'); 917 name_buffer_->AppendByte(':');
881 name_buffer_->AppendBytes(comment); 918 name_buffer_->AppendBytes(comment);
882 } 919 }
883 if (code_event_handler_ != NULL) { 920 if (code_event_handler_ != NULL) {
884 IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size()); 921 IssueCodeAddedEvent(code,
922 Handle<Script>(),
923 name_buffer_->get(),
924 name_buffer_->size());
885 } 925 }
886 if (!log_->IsEnabled()) return; 926 if (!log_->IsEnabled()) return;
887 if (FLAG_ll_prof) { 927 if (FLAG_ll_prof) {
888 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); 928 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size());
889 } 929 }
890 if (Serializer::enabled()) { 930 if (Serializer::enabled()) {
891 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); 931 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size());
892 } 932 }
893 if (!FLAG_log_code) return; 933 if (!FLAG_log_code) return;
894 LogMessageBuilder msg(this); 934 LogMessageBuilder msg(this);
(...skipping 19 matching lines...) Expand all
914 Code* code, 954 Code* code,
915 String* name) { 955 String* name) {
916 if (!is_logging_code_events()) return; 956 if (!is_logging_code_events()) return;
917 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) { 957 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) {
918 name_buffer_->Reset(); 958 name_buffer_->Reset();
919 name_buffer_->AppendBytes(kLogEventsNames[tag]); 959 name_buffer_->AppendBytes(kLogEventsNames[tag]);
920 name_buffer_->AppendByte(':'); 960 name_buffer_->AppendByte(':');
921 name_buffer_->AppendString(name); 961 name_buffer_->AppendString(name);
922 } 962 }
923 if (code_event_handler_ != NULL) { 963 if (code_event_handler_ != NULL) {
924 IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size()); 964 IssueCodeAddedEvent(code,
965 Handle<Script>(),
966 name_buffer_->get(),
967 name_buffer_->size());
925 } 968 }
926 if (!log_->IsEnabled()) return; 969 if (!log_->IsEnabled()) return;
927 if (FLAG_ll_prof) { 970 if (FLAG_ll_prof) {
928 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); 971 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size());
929 } 972 }
930 if (Serializer::enabled()) { 973 if (Serializer::enabled()) {
931 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); 974 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size());
932 } 975 }
933 if (!FLAG_log_code) return; 976 if (!FLAG_log_code) return;
934 LogMessageBuilder msg(this); 977 LogMessageBuilder msg(this);
(...skipping 26 matching lines...) Expand all
961 String* name) { 1004 String* name) {
962 if (!is_logging_code_events()) return; 1005 if (!is_logging_code_events()) return;
963 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) { 1006 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) {
964 name_buffer_->Reset(); 1007 name_buffer_->Reset();
965 name_buffer_->AppendBytes(kLogEventsNames[tag]); 1008 name_buffer_->AppendBytes(kLogEventsNames[tag]);
966 name_buffer_->AppendByte(':'); 1009 name_buffer_->AppendByte(':');
967 name_buffer_->AppendBytes(ComputeMarker(code)); 1010 name_buffer_->AppendBytes(ComputeMarker(code));
968 name_buffer_->AppendString(name); 1011 name_buffer_->AppendString(name);
969 } 1012 }
970 if (code_event_handler_ != NULL) { 1013 if (code_event_handler_ != NULL) {
971 IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size()); 1014 Handle<Script> script = shared->script()->IsScript()
1015 ? Handle<Script>(Script::cast(shared->script()))
1016 : Handle<Script>();
1017 IssueCodeAddedEvent(code,
1018 script,
1019 name_buffer_->get(),
1020 name_buffer_->size());
972 } 1021 }
973 if (!log_->IsEnabled()) return; 1022 if (!log_->IsEnabled()) return;
974 if (FLAG_ll_prof) { 1023 if (FLAG_ll_prof) {
975 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); 1024 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size());
976 } 1025 }
977 if (Serializer::enabled()) { 1026 if (Serializer::enabled()) {
978 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); 1027 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size());
979 } 1028 }
980 if (!FLAG_log_code) return; 1029 if (!FLAG_log_code) return;
981 if (code == Isolate::Current()->builtins()->builtin( 1030 if (code == Isolate::Current()->builtins()->builtin(
(...skipping 29 matching lines...) Expand all
1011 name_buffer_->AppendBytes(kLogEventsNames[tag]); 1060 name_buffer_->AppendBytes(kLogEventsNames[tag]);
1012 name_buffer_->AppendByte(':'); 1061 name_buffer_->AppendByte(':');
1013 name_buffer_->AppendBytes(ComputeMarker(code)); 1062 name_buffer_->AppendBytes(ComputeMarker(code));
1014 name_buffer_->AppendString(shared->DebugName()); 1063 name_buffer_->AppendString(shared->DebugName());
1015 name_buffer_->AppendByte(' '); 1064 name_buffer_->AppendByte(' ');
1016 name_buffer_->AppendString(source); 1065 name_buffer_->AppendString(source);
1017 name_buffer_->AppendByte(':'); 1066 name_buffer_->AppendByte(':');
1018 name_buffer_->AppendInt(line); 1067 name_buffer_->AppendInt(line);
1019 } 1068 }
1020 if (code_event_handler_ != NULL) { 1069 if (code_event_handler_ != NULL) {
1021 IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size()); 1070 Handle<Script> script = shared->script()->IsScript() ?
1071 Handle<Script>(Script::cast(shared->script()))
1072 : Handle<Script>();
1073 IssueCodeAddedEvent(code,
1074 script,
1075 name_buffer_->get(),
1076 name_buffer_->size());
1022 } 1077 }
1023 if (!log_->IsEnabled()) return; 1078 if (!log_->IsEnabled()) return;
1024 if (FLAG_ll_prof) { 1079 if (FLAG_ll_prof) {
1025 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); 1080 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size());
1026 } 1081 }
1027 if (Serializer::enabled()) { 1082 if (Serializer::enabled()) {
1028 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); 1083 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size());
1029 } 1084 }
1030 if (!FLAG_log_code) return; 1085 if (!FLAG_log_code) return;
1031 LogMessageBuilder msg(this); 1086 LogMessageBuilder msg(this);
(...skipping 20 matching lines...) Expand all
1052 1107
1053 void Logger::CodeCreateEvent(LogEventsAndTags tag, Code* code, int args_count) { 1108 void Logger::CodeCreateEvent(LogEventsAndTags tag, Code* code, int args_count) {
1054 if (!is_logging_code_events()) return; 1109 if (!is_logging_code_events()) return;
1055 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) { 1110 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) {
1056 name_buffer_->Reset(); 1111 name_buffer_->Reset();
1057 name_buffer_->AppendBytes(kLogEventsNames[tag]); 1112 name_buffer_->AppendBytes(kLogEventsNames[tag]);
1058 name_buffer_->AppendByte(':'); 1113 name_buffer_->AppendByte(':');
1059 name_buffer_->AppendInt(args_count); 1114 name_buffer_->AppendInt(args_count);
1060 } 1115 }
1061 if (code_event_handler_ != NULL) { 1116 if (code_event_handler_ != NULL) {
1062 IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size()); 1117 IssueCodeAddedEvent(code,
1118 Handle<Script>(),
1119 name_buffer_->get(),
1120 name_buffer_->size());
1063 } 1121 }
1064 if (!log_->IsEnabled()) return; 1122 if (!log_->IsEnabled()) return;
1065 if (FLAG_ll_prof) { 1123 if (FLAG_ll_prof) {
1066 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); 1124 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size());
1067 } 1125 }
1068 if (Serializer::enabled()) { 1126 if (Serializer::enabled()) {
1069 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); 1127 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size());
1070 } 1128 }
1071 if (!FLAG_log_code) return; 1129 if (!FLAG_log_code) return;
1072 LogMessageBuilder msg(this); 1130 LogMessageBuilder msg(this);
(...skipping 17 matching lines...) Expand all
1090 1148
1091 void Logger::RegExpCodeCreateEvent(Code* code, String* source) { 1149 void Logger::RegExpCodeCreateEvent(Code* code, String* source) {
1092 if (!is_logging_code_events()) return; 1150 if (!is_logging_code_events()) return;
1093 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) { 1151 if (FLAG_ll_prof || Serializer::enabled() || code_event_handler_ != NULL) {
1094 name_buffer_->Reset(); 1152 name_buffer_->Reset();
1095 name_buffer_->AppendBytes(kLogEventsNames[REG_EXP_TAG]); 1153 name_buffer_->AppendBytes(kLogEventsNames[REG_EXP_TAG]);
1096 name_buffer_->AppendByte(':'); 1154 name_buffer_->AppendByte(':');
1097 name_buffer_->AppendString(source); 1155 name_buffer_->AppendString(source);
1098 } 1156 }
1099 if (code_event_handler_ != NULL) { 1157 if (code_event_handler_ != NULL) {
1100 IssueCodeAddedEvent(code, name_buffer_->get(), name_buffer_->size()); 1158 IssueCodeAddedEvent(code,
1159 Handle<Script>(),
1160 name_buffer_->get(),
1161 name_buffer_->size());
1101 } 1162 }
1102 if (!log_->IsEnabled()) return; 1163 if (!log_->IsEnabled()) return;
1103 if (FLAG_ll_prof) { 1164 if (FLAG_ll_prof) {
1104 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()); 1165 LowLevelCodeCreateEvent(code, name_buffer_->get(), name_buffer_->size());
1105 } 1166 }
1106 if (Serializer::enabled()) { 1167 if (Serializer::enabled()) {
1107 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); 1168 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size());
1108 } 1169 }
1109 if (!FLAG_log_code) return; 1170 if (!FLAG_log_code) return;
1110 LogMessageBuilder msg(this); 1171 LogMessageBuilder msg(this);
(...skipping 23 matching lines...) Expand all
1134 void Logger::CodeDeleteEvent(Address from) { 1195 void Logger::CodeDeleteEvent(Address from) {
1135 if (code_event_handler_ != NULL) IssueCodeRemovedEvent(from); 1196 if (code_event_handler_ != NULL) IssueCodeRemovedEvent(from);
1136 if (!log_->IsEnabled()) return; 1197 if (!log_->IsEnabled()) return;
1137 if (FLAG_ll_prof) LowLevelCodeDeleteEvent(from); 1198 if (FLAG_ll_prof) LowLevelCodeDeleteEvent(from);
1138 if (Serializer::enabled() && address_to_name_map_ != NULL) { 1199 if (Serializer::enabled() && address_to_name_map_ != NULL) {
1139 address_to_name_map_->Remove(from); 1200 address_to_name_map_->Remove(from);
1140 } 1201 }
1141 DeleteEventInternal(CODE_DELETE_EVENT, from); 1202 DeleteEventInternal(CODE_DELETE_EVENT, from);
1142 } 1203 }
1143 1204
1205 void Logger::CodeLinePosInfoAddPositionEvent(void* jit_handler_data,
1206 int pc_offset,
1207 int position) {
1208 if (code_event_handler_ != NULL) {
1209 IssueAddCodeLinePosInfoEvent(jit_handler_data,
1210 pc_offset,
1211 position,
1212 JitCodeEvent::POSITION);
1213 }
1214 }
1215
1216 void Logger::CodeLinePosInfoAddStatementPositionEvent(void* jit_handler_data,
1217 int pc_offset,
1218 int position) {
1219 if (code_event_handler_ != NULL) {
1220 IssueAddCodeLinePosInfoEvent(jit_handler_data,
1221 pc_offset,
1222 position,
1223 JitCodeEvent::STATEMENT_POSITION);
1224 }
1225 }
1226
1227 void Logger::CodeStartLinePosInfoRecordEvent(PositionsRecorder* pos_recorder) {
1228 if (code_event_handler_ != NULL) {
1229 pos_recorder->AttachJITHandlerData(IssueStartCodePosInfoEvent());
1230 }
1231 }
1232
1233 void Logger::CodeEndLinePosInfoRecordEvent(Code* code,
1234 void* jit_handler_data) {
1235 if (code_event_handler_ != NULL) {
1236 IssueEndCodePosInfoEvent(code, jit_handler_data);
1237 }
1238 }
1144 1239
1145 void Logger::SnapshotPositionEvent(Address addr, int pos) { 1240 void Logger::SnapshotPositionEvent(Address addr, int pos) {
1146 if (!log_->IsEnabled()) return; 1241 if (!log_->IsEnabled()) return;
1147 if (FLAG_ll_prof) LowLevelSnapshotPositionEvent(addr, pos); 1242 if (FLAG_ll_prof) LowLevelSnapshotPositionEvent(addr, pos);
1148 if (Serializer::enabled() && address_to_name_map_ != NULL) { 1243 if (Serializer::enabled() && address_to_name_map_ != NULL) {
1149 const char* code_name = address_to_name_map_->Lookup(addr); 1244 const char* code_name = address_to_name_map_->Lookup(addr);
1150 if (code_name == NULL) return; // Not a code object. 1245 if (code_name == NULL) return; // Not a code object.
1151 LogMessageBuilder msg(this); 1246 LogMessageBuilder msg(this);
1152 msg.Append("%s,%d,\"", kLogEventsNames[SNAPSHOT_CODE_NAME_EVENT], pos); 1247 msg.Append("%s,%d,\"", kLogEventsNames[SNAPSHOT_CODE_NAME_EVENT], pos);
1153 for (const char* p = code_name; *p != '\0'; ++p) { 1248 for (const char* p = code_name; *p != '\0'; ++p) {
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after
1813 void SamplerRegistry::RemoveActiveSampler(Sampler* sampler) { 1908 void SamplerRegistry::RemoveActiveSampler(Sampler* sampler) {
1814 ASSERT(sampler->IsActive()); 1909 ASSERT(sampler->IsActive());
1815 ScopedLock lock(active_samplers_mutex); 1910 ScopedLock lock(active_samplers_mutex);
1816 ASSERT(active_samplers_ != NULL); 1911 ASSERT(active_samplers_ != NULL);
1817 bool removed = active_samplers_->RemoveElement(sampler); 1912 bool removed = active_samplers_->RemoveElement(sampler);
1818 ASSERT(removed); 1913 ASSERT(removed);
1819 USE(removed); 1914 USE(removed);
1820 } 1915 }
1821 1916
1822 } } // namespace v8::internal 1917 } } // namespace v8::internal
OLDNEW
« src/log.h ('K') | « src/log.h ('k') | test/cctest/test-api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698