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

Side by Side Diff: src/log.cc

Issue 2053523003: Refactor CpuProfiler. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Move CpuProfilerManager to .cc Created 4 years, 6 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
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/log.h" 5 #include "src/log.h"
6 6
7 #include <cstdarg> 7 #include <cstdarg>
8 #include <sstream> 8 #include <sstream>
9 9
10 #include "src/bailout-reason.h" 10 #include "src/bailout-reason.h"
11 #include "src/base/platform/platform.h" 11 #include "src/base/platform/platform.h"
12 #include "src/bootstrapper.h" 12 #include "src/bootstrapper.h"
13 #include "src/code-stubs.h" 13 #include "src/code-stubs.h"
14 #include "src/deoptimizer.h" 14 #include "src/deoptimizer.h"
15 #include "src/global-handles.h" 15 #include "src/global-handles.h"
16 #include "src/interpreter/bytecodes.h" 16 #include "src/interpreter/bytecodes.h"
17 #include "src/interpreter/interpreter.h" 17 #include "src/interpreter/interpreter.h"
18 #include "src/libsampler/v8-sampler.h" 18 #include "src/libsampler/v8-sampler.h"
19 #include "src/log-inl.h" 19 #include "src/log-inl.h"
20 #include "src/log-utils.h" 20 #include "src/log-utils.h"
21 #include "src/macro-assembler.h" 21 #include "src/macro-assembler.h"
22 #include "src/perf-jit.h" 22 #include "src/perf-jit.h"
23 #include "src/profiler/cpu-profiler-inl.h" 23 #include "src/profiler/cpu-profiler-inl.h"
24 #include "src/profiler/profiler-listener.h"
24 #include "src/runtime-profiler.h" 25 #include "src/runtime-profiler.h"
25 #include "src/string-stream.h" 26 #include "src/string-stream.h"
26 #include "src/vm-state-inl.h" 27 #include "src/vm-state-inl.h"
27 28
28 namespace v8 { 29 namespace v8 {
29 namespace internal { 30 namespace internal {
30 31
31 32
32 #define DECLARE_EVENT(ignore1, name) name, 33 #define DECLARE_EVENT(ignore1, name) name,
33 static const char* const kLogEventsNames[Logger::NUMBER_OF_LOG_EVENTS] = { 34 static const char* const kLogEventsNames[Logger::NUMBER_OF_LOG_EVENTS] = {
34 LOG_EVENTS_AND_TAGS_LIST(DECLARE_EVENT) 35 LOG_EVENTS_AND_TAGS_LIST(DECLARE_EVENT)
35 }; 36 };
36 #undef DECLARE_EVENT 37 #undef DECLARE_EVENT
37 38
38 39
39 #define CALL_LISTENERS(Call) \ 40 #define CALL_LISTENERS(Call) \
40 for (int i = 0; i < listeners_.length(); ++i) { \ 41 for (int i = 0; i < listeners_.length(); ++i) { \
41 listeners_[i]->Call; \ 42 listeners_[i]->Call; \
42 } 43 }
43 44
44 #define PROFILER_LOG(Call) \
45 if (isolate_->is_profiling()) { \
46 isolate_->cpu_profiler()->Call; \
47 } else { \
48 }
49
50 static const char* ComputeMarker(SharedFunctionInfo* shared, 45 static const char* ComputeMarker(SharedFunctionInfo* shared,
51 AbstractCode* code) { 46 AbstractCode* code) {
52 switch (code->kind()) { 47 switch (code->kind()) {
53 case AbstractCode::FUNCTION: 48 case AbstractCode::FUNCTION:
54 case AbstractCode::INTERPRETED_FUNCTION: 49 case AbstractCode::INTERPRETED_FUNCTION:
55 return shared->optimization_disabled() ? "" : "~"; 50 return shared->optimization_disabled() ? "" : "~";
56 case AbstractCode::OPTIMIZED_FUNCTION: 51 case AbstractCode::OPTIMIZED_FUNCTION:
57 return "*"; 52 return "*";
58 default: 53 default:
59 return ""; 54 return "";
(...skipping 699 matching lines...) Expand 10 before | Expand all | Expand 10 after
759 : isolate_(isolate), 754 : isolate_(isolate),
760 ticker_(NULL), 755 ticker_(NULL),
761 profiler_(NULL), 756 profiler_(NULL),
762 log_events_(NULL), 757 log_events_(NULL),
763 is_logging_(false), 758 is_logging_(false),
764 log_(new Log(this)), 759 log_(new Log(this)),
765 perf_basic_logger_(NULL), 760 perf_basic_logger_(NULL),
766 perf_jit_logger_(NULL), 761 perf_jit_logger_(NULL),
767 ll_logger_(NULL), 762 ll_logger_(NULL),
768 jit_logger_(NULL), 763 jit_logger_(NULL),
764 profiler_listener_(new ProfilerListener(isolate)),
769 listeners_(5), 765 listeners_(5),
770 is_initialized_(false) {} 766 is_initialized_(false) {}
771 767
772 Logger::~Logger() { 768 Logger::~Logger() {
773 delete log_; 769 delete log_;
770 delete profiler_listener_;
774 } 771 }
775 772
776 773
777 void Logger::addCodeEventListener(CodeEventListener* listener) { 774 void Logger::addCodeEventListener(CodeEventListener* listener) {
778 DCHECK(!hasCodeEventListener(listener)); 775 DCHECK(!hasCodeEventListener(listener));
779 listeners_.Add(listener); 776 listeners_.Add(listener);
780 } 777 }
781 778
782 779
783 void Logger::removeCodeEventListener(CodeEventListener* listener) { 780 void Logger::removeCodeEventListener(CodeEventListener* listener) {
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
871 if (!log_->IsEnabled() || !FLAG_prof_cpp) return; 868 if (!log_->IsEnabled() || !FLAG_prof_cpp) return;
872 Log::MessageBuilder msg(log_); 869 Log::MessageBuilder msg(log_);
873 msg.Append("shared-library,\"%s\",0x%08" V8PRIxPTR ",0x%08" V8PRIxPTR 870 msg.Append("shared-library,\"%s\",0x%08" V8PRIxPTR ",0x%08" V8PRIxPTR
874 ",%" V8PRIdPTR, 871 ",%" V8PRIdPTR,
875 library_path.c_str(), start, end, aslr_slide); 872 library_path.c_str(), start, end, aslr_slide);
876 msg.WriteToLogFile(); 873 msg.WriteToLogFile();
877 } 874 }
878 875
879 876
880 void Logger::CodeDeoptEvent(Code* code, Address pc, int fp_to_sp_delta) { 877 void Logger::CodeDeoptEvent(Code* code, Address pc, int fp_to_sp_delta) {
881 PROFILER_LOG(CodeDeoptEvent(code, pc, fp_to_sp_delta)); 878 profiler_listener_->CodeDeoptEvent(code, pc, fp_to_sp_delta);
882 if (!log_->IsEnabled() || !FLAG_log_internal_timer_events) return; 879 if (!log_->IsEnabled() || !FLAG_log_internal_timer_events) return;
883 Log::MessageBuilder msg(log_); 880 Log::MessageBuilder msg(log_);
884 int since_epoch = static_cast<int>(timer_.Elapsed().InMicroseconds()); 881 int since_epoch = static_cast<int>(timer_.Elapsed().InMicroseconds());
885 msg.Append("code-deopt,%d,%d", since_epoch, code->CodeSize()); 882 msg.Append("code-deopt,%d,%d", since_epoch, code->CodeSize());
886 msg.WriteToLogFile(); 883 msg.WriteToLogFile();
887 } 884 }
888 885
889 886
890 void Logger::CurrentTimeEvent() { 887 void Logger::CurrentTimeEvent() {
891 if (!log_->IsEnabled()) return; 888 if (!log_->IsEnabled()) return;
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
1087 ->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); 1084 ->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL);
1088 msg.Append(",1,symbol(\"%s%s\" hash %x)", prefix, str.get(), 1085 msg.Append(",1,symbol(\"%s%s\" hash %x)", prefix, str.get(),
1089 symbol->Hash()); 1086 symbol->Hash());
1090 } 1087 }
1091 } 1088 }
1092 msg.WriteToLogFile(); 1089 msg.WriteToLogFile();
1093 } 1090 }
1094 1091
1095 1092
1096 void Logger::CallbackEvent(Name* name, Address entry_point) { 1093 void Logger::CallbackEvent(Name* name, Address entry_point) {
1097 PROFILER_LOG(CallbackEvent(name, entry_point)); 1094 profiler_listener_->CallbackEvent(name, entry_point);
1098 CallbackEventInternal("", name, entry_point); 1095 CallbackEventInternal("", name, entry_point);
1099 } 1096 }
1100 1097
1101 1098
1102 void Logger::GetterCallbackEvent(Name* name, Address entry_point) { 1099 void Logger::GetterCallbackEvent(Name* name, Address entry_point) {
1103 PROFILER_LOG(GetterCallbackEvent(name, entry_point)); 1100 profiler_listener_->GetterCallbackEvent(name, entry_point);
1104 CallbackEventInternal("get ", name, entry_point); 1101 CallbackEventInternal("get ", name, entry_point);
1105 } 1102 }
1106 1103
1107 1104
1108 void Logger::SetterCallbackEvent(Name* name, Address entry_point) { 1105 void Logger::SetterCallbackEvent(Name* name, Address entry_point) {
1109 PROFILER_LOG(SetterCallbackEvent(name, entry_point)); 1106 profiler_listener_->SetterCallbackEvent(name, entry_point);
1110 CallbackEventInternal("set ", name, entry_point); 1107 CallbackEventInternal("set ", name, entry_point);
1111 } 1108 }
1112 1109
1113 static void AppendCodeCreateHeader(Log::MessageBuilder* msg, 1110 static void AppendCodeCreateHeader(Log::MessageBuilder* msg,
1114 Logger::LogEventsAndTags tag, 1111 Logger::LogEventsAndTags tag,
1115 AbstractCode* code) { 1112 AbstractCode* code) {
1116 DCHECK(msg); 1113 DCHECK(msg);
1117 msg->Append("%s,%s,%d,", 1114 msg->Append("%s,%s,%d,",
1118 kLogEventsNames[Logger::CODE_CREATION_EVENT], 1115 kLogEventsNames[Logger::CODE_CREATION_EVENT],
1119 kLogEventsNames[tag], 1116 kLogEventsNames[tag],
1120 code->kind()); 1117 code->kind());
1121 msg->AppendAddress(code->address()); 1118 msg->AppendAddress(code->address());
1122 msg->Append(",%d,", code->ExecutableSize()); 1119 msg->Append(",%d,", code->ExecutableSize());
1123 } 1120 }
1124 1121
1125 void Logger::CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code, 1122 void Logger::CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code,
1126 const char* comment) { 1123 const char* comment) {
1127 PROFILER_LOG(CodeCreateEvent(tag, code, comment)); 1124 profiler_listener_->CodeCreateEvent(tag, code, comment);
1128 1125
1129 if (!is_logging_code_events()) return; 1126 if (!is_logging_code_events()) return;
1130 CALL_LISTENERS(CodeCreateEvent(tag, code, comment)); 1127 CALL_LISTENERS(CodeCreateEvent(tag, code, comment));
1131 1128
1132 if (!FLAG_log_code || !log_->IsEnabled()) return; 1129 if (!FLAG_log_code || !log_->IsEnabled()) return;
1133 Log::MessageBuilder msg(log_); 1130 Log::MessageBuilder msg(log_);
1134 AppendCodeCreateHeader(&msg, tag, code); 1131 AppendCodeCreateHeader(&msg, tag, code);
1135 msg.AppendDoubleQuotedString(comment); 1132 msg.AppendDoubleQuotedString(comment);
1136 msg.WriteToLogFile(); 1133 msg.WriteToLogFile();
1137 } 1134 }
1138 1135
1139 void Logger::CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code, 1136 void Logger::CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code,
1140 Name* name) { 1137 Name* name) {
1141 PROFILER_LOG(CodeCreateEvent(tag, code, name)); 1138 profiler_listener_->CodeCreateEvent(tag, code, name);
1142 1139
1143 if (!is_logging_code_events()) return; 1140 if (!is_logging_code_events()) return;
1144 CALL_LISTENERS(CodeCreateEvent(tag, code, name)); 1141 CALL_LISTENERS(CodeCreateEvent(tag, code, name));
1145 1142
1146 if (!FLAG_log_code || !log_->IsEnabled()) return; 1143 if (!FLAG_log_code || !log_->IsEnabled()) return;
1147 Log::MessageBuilder msg(log_); 1144 Log::MessageBuilder msg(log_);
1148 AppendCodeCreateHeader(&msg, tag, code); 1145 AppendCodeCreateHeader(&msg, tag, code);
1149 if (name->IsString()) { 1146 if (name->IsString()) {
1150 msg.Append('"'); 1147 msg.Append('"');
1151 msg.AppendDetailed(String::cast(name), false); 1148 msg.AppendDetailed(String::cast(name), false);
1152 msg.Append('"'); 1149 msg.Append('"');
1153 } else { 1150 } else {
1154 msg.AppendSymbolName(Symbol::cast(name)); 1151 msg.AppendSymbolName(Symbol::cast(name));
1155 } 1152 }
1156 msg.WriteToLogFile(); 1153 msg.WriteToLogFile();
1157 } 1154 }
1158 1155
1159 void Logger::CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code, 1156 void Logger::CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code,
1160 SharedFunctionInfo* shared, Name* name) { 1157 SharedFunctionInfo* shared, Name* name) {
1161 PROFILER_LOG(CodeCreateEvent(tag, code, shared, name)); 1158 profiler_listener_->CodeCreateEvent(tag, code, shared, name);
1162 1159
1163 if (!is_logging_code_events()) return; 1160 if (!is_logging_code_events()) return;
1164 CALL_LISTENERS(CodeCreateEvent(tag, code, shared, name)); 1161 CALL_LISTENERS(CodeCreateEvent(tag, code, shared, name));
1165 1162
1166 if (!FLAG_log_code || !log_->IsEnabled()) return; 1163 if (!FLAG_log_code || !log_->IsEnabled()) return;
1167 if (code == AbstractCode::cast( 1164 if (code == AbstractCode::cast(
1168 isolate_->builtins()->builtin(Builtins::kCompileLazy))) { 1165 isolate_->builtins()->builtin(Builtins::kCompileLazy))) {
1169 return; 1166 return;
1170 } 1167 }
1171 1168
(...skipping 12 matching lines...) Expand all
1184 msg.WriteToLogFile(); 1181 msg.WriteToLogFile();
1185 } 1182 }
1186 1183
1187 1184
1188 // Although, it is possible to extract source and line from 1185 // Although, it is possible to extract source and line from
1189 // the SharedFunctionInfo object, we left it to caller 1186 // the SharedFunctionInfo object, we left it to caller
1190 // to leave logging functions free from heap allocations. 1187 // to leave logging functions free from heap allocations.
1191 void Logger::CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code, 1188 void Logger::CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code,
1192 SharedFunctionInfo* shared, Name* source, int line, 1189 SharedFunctionInfo* shared, Name* source, int line,
1193 int column) { 1190 int column) {
1194 PROFILER_LOG(CodeCreateEvent(tag, code, shared, source, line, column)); 1191 profiler_listener_->CodeCreateEvent(tag, code, shared, source, line, column);
1195 1192
1196 if (!is_logging_code_events()) return; 1193 if (!is_logging_code_events()) return;
1197 CALL_LISTENERS(CodeCreateEvent(tag, code, shared, source, line, column)); 1194 CALL_LISTENERS(CodeCreateEvent(tag, code, shared, source, line, column));
1198 1195
1199 if (!FLAG_log_code || !log_->IsEnabled()) return; 1196 if (!FLAG_log_code || !log_->IsEnabled()) return;
1200 Log::MessageBuilder msg(log_); 1197 Log::MessageBuilder msg(log_);
1201 AppendCodeCreateHeader(&msg, tag, code); 1198 AppendCodeCreateHeader(&msg, tag, code);
1202 base::SmartArrayPointer<char> name = 1199 base::SmartArrayPointer<char> name =
1203 shared->DebugName()->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); 1200 shared->DebugName()->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL);
1204 msg.Append("\"%s ", name.get()); 1201 msg.Append("\"%s ", name.get());
1205 if (source->IsString()) { 1202 if (source->IsString()) {
1206 base::SmartArrayPointer<char> sourcestr = String::cast(source)->ToCString( 1203 base::SmartArrayPointer<char> sourcestr = String::cast(source)->ToCString(
1207 DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); 1204 DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL);
1208 msg.Append("%s", sourcestr.get()); 1205 msg.Append("%s", sourcestr.get());
1209 } else { 1206 } else {
1210 msg.AppendSymbolName(Symbol::cast(source)); 1207 msg.AppendSymbolName(Symbol::cast(source));
1211 } 1208 }
1212 msg.Append(":%d:%d\",", line, column); 1209 msg.Append(":%d:%d\",", line, column);
1213 msg.AppendAddress(shared->address()); 1210 msg.AppendAddress(shared->address());
1214 msg.Append(",%s", ComputeMarker(shared, code)); 1211 msg.Append(",%s", ComputeMarker(shared, code));
1215 msg.WriteToLogFile(); 1212 msg.WriteToLogFile();
1216 } 1213 }
1217 1214
1218 void Logger::CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code, 1215 void Logger::CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code,
1219 int args_count) { 1216 int args_count) {
1220 PROFILER_LOG(CodeCreateEvent(tag, code, args_count)); 1217 profiler_listener_->CodeCreateEvent(tag, code, args_count);
1221 1218
1222 if (!is_logging_code_events()) return; 1219 if (!is_logging_code_events()) return;
1223 CALL_LISTENERS(CodeCreateEvent(tag, code, args_count)); 1220 CALL_LISTENERS(CodeCreateEvent(tag, code, args_count));
1224 1221
1225 if (!FLAG_log_code || !log_->IsEnabled()) return; 1222 if (!FLAG_log_code || !log_->IsEnabled()) return;
1226 Log::MessageBuilder msg(log_); 1223 Log::MessageBuilder msg(log_);
1227 AppendCodeCreateHeader(&msg, tag, code); 1224 AppendCodeCreateHeader(&msg, tag, code);
1228 msg.Append("\"args_count: %d\"", args_count); 1225 msg.Append("\"args_count: %d\"", args_count);
1229 msg.WriteToLogFile(); 1226 msg.WriteToLogFile();
1230 } 1227 }
1231 1228
1232 void Logger::CodeDisableOptEvent(AbstractCode* code, 1229 void Logger::CodeDisableOptEvent(AbstractCode* code,
1233 SharedFunctionInfo* shared) { 1230 SharedFunctionInfo* shared) {
1234 PROFILER_LOG(CodeDisableOptEvent(code, shared)); 1231 profiler_listener_->CodeDisableOptEvent(code, shared);
1235 1232
1236 if (!is_logging_code_events()) return; 1233 if (!is_logging_code_events()) return;
1237 CALL_LISTENERS(CodeDisableOptEvent(code, shared)); 1234 CALL_LISTENERS(CodeDisableOptEvent(code, shared));
1238 1235
1239 if (!FLAG_log_code || !log_->IsEnabled()) return; 1236 if (!FLAG_log_code || !log_->IsEnabled()) return;
1240 Log::MessageBuilder msg(log_); 1237 Log::MessageBuilder msg(log_);
1241 msg.Append("%s,", kLogEventsNames[CODE_DISABLE_OPT_EVENT]); 1238 msg.Append("%s,", kLogEventsNames[CODE_DISABLE_OPT_EVENT]);
1242 base::SmartArrayPointer<char> name = 1239 base::SmartArrayPointer<char> name =
1243 shared->DebugName()->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); 1240 shared->DebugName()->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL);
1244 msg.Append("\"%s\",", name.get()); 1241 msg.Append("\"%s\",", name.get());
1245 msg.Append("\"%s\"", GetBailoutReason(shared->disable_optimization_reason())); 1242 msg.Append("\"%s\"", GetBailoutReason(shared->disable_optimization_reason()));
1246 msg.WriteToLogFile(); 1243 msg.WriteToLogFile();
1247 } 1244 }
1248 1245
1249 1246
1250 void Logger::CodeMovingGCEvent() { 1247 void Logger::CodeMovingGCEvent() {
1251 PROFILER_LOG(CodeMovingGCEvent()); 1248 profiler_listener_->CodeMovingGCEvent();
1252 1249
1253 if (!is_logging_code_events()) return; 1250 if (!is_logging_code_events()) return;
1254 if (!log_->IsEnabled() || !FLAG_ll_prof) return; 1251 if (!log_->IsEnabled() || !FLAG_ll_prof) return;
1255 CALL_LISTENERS(CodeMovingGCEvent()); 1252 CALL_LISTENERS(CodeMovingGCEvent());
1256 base::OS::SignalCodeMovingGC(); 1253 base::OS::SignalCodeMovingGC();
1257 } 1254 }
1258 1255
1259 void Logger::RegExpCodeCreateEvent(AbstractCode* code, String* source) { 1256 void Logger::RegExpCodeCreateEvent(AbstractCode* code, String* source) {
1260 PROFILER_LOG(RegExpCodeCreateEvent(code, source)); 1257 profiler_listener_->RegExpCodeCreateEvent(code, source);
1261 1258
1262 if (!is_logging_code_events()) return; 1259 if (!is_logging_code_events()) return;
1263 CALL_LISTENERS(RegExpCodeCreateEvent(code, source)); 1260 CALL_LISTENERS(RegExpCodeCreateEvent(code, source));
1264 1261
1265 if (!FLAG_log_code || !log_->IsEnabled()) return; 1262 if (!FLAG_log_code || !log_->IsEnabled()) return;
1266 Log::MessageBuilder msg(log_); 1263 Log::MessageBuilder msg(log_);
1267 AppendCodeCreateHeader(&msg, REG_EXP_TAG, code); 1264 AppendCodeCreateHeader(&msg, REG_EXP_TAG, code);
1268 msg.Append('"'); 1265 msg.Append('"');
1269 msg.AppendDetailed(source, false); 1266 msg.AppendDetailed(source, false);
1270 msg.Append('"'); 1267 msg.Append('"');
1271 msg.WriteToLogFile(); 1268 msg.WriteToLogFile();
1272 } 1269 }
1273 1270
1274 void Logger::CodeMoveEvent(AbstractCode* from, Address to) { 1271 void Logger::CodeMoveEvent(AbstractCode* from, Address to) {
1275 PROFILER_LOG(CodeMoveEvent(from, to)); 1272 profiler_listener_->CodeMoveEvent(from, to);
1276 1273
1277 if (!is_logging_code_events()) return; 1274 if (!is_logging_code_events()) return;
1278 CALL_LISTENERS(CodeMoveEvent(from, to)); 1275 CALL_LISTENERS(CodeMoveEvent(from, to));
1279 MoveEventInternal(CODE_MOVE_EVENT, from->address(), to); 1276 MoveEventInternal(CODE_MOVE_EVENT, from->address(), to);
1280 } 1277 }
1281 1278
1282 void Logger::CodeLinePosInfoAddPositionEvent(void* jit_handler_data, 1279 void Logger::CodeLinePosInfoAddPositionEvent(void* jit_handler_data,
1283 int pc_offset, int position) { 1280 int pc_offset, int position) {
1284 JIT_LOG(AddCodeLinePosInfoEvent(jit_handler_data, 1281 JIT_LOG(AddCodeLinePosInfoEvent(jit_handler_data,
1285 pc_offset, 1282 pc_offset,
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after
1893 removeCodeEventListener(jit_logger_); 1890 removeCodeEventListener(jit_logger_);
1894 delete jit_logger_; 1891 delete jit_logger_;
1895 jit_logger_ = NULL; 1892 jit_logger_ = NULL;
1896 } 1893 }
1897 1894
1898 return log_->Close(); 1895 return log_->Close();
1899 } 1896 }
1900 1897
1901 } // namespace internal 1898 } // namespace internal
1902 } // namespace v8 1899 } // namespace v8
OLDNEW
« no previous file with comments | « src/log.h ('k') | src/profiler/cpu-profiler.h » ('j') | src/profiler/cpu-profiler.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698