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 1877453002: Fix printf formats (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Handle ptrdiff_t format, which seems to make MSVC barf Created 4 years, 8 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
« no previous file with comments | « src/log.h ('k') | src/log-utils.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 277
278 void PerfBasicLogger::LogRecordedBuffer(AbstractCode* code, SharedFunctionInfo*, 278 void PerfBasicLogger::LogRecordedBuffer(AbstractCode* code, SharedFunctionInfo*,
279 const char* name, int length) { 279 const char* name, int length) {
280 if (FLAG_perf_basic_prof_only_functions && 280 if (FLAG_perf_basic_prof_only_functions &&
281 (code->kind() != AbstractCode::FUNCTION && 281 (code->kind() != AbstractCode::FUNCTION &&
282 code->kind() != AbstractCode::INTERPRETED_FUNCTION && 282 code->kind() != AbstractCode::INTERPRETED_FUNCTION &&
283 code->kind() != AbstractCode::OPTIMIZED_FUNCTION)) { 283 code->kind() != AbstractCode::OPTIMIZED_FUNCTION)) {
284 return; 284 return;
285 } 285 }
286 286
287 base::OS::FPrint(perf_output_handle_, "%llx %x %.*s\n", 287 base::OS::FPrint(perf_output_handle_, "%p %x %.*s\n",
288 reinterpret_cast<uint64_t>(code->instruction_start()), 288 code->instruction_start(), code->instruction_size(), length,
289 code->instruction_size(), length, name); 289 name);
290 } 290 }
291 291
292
293 // Low-level logging support. 292 // Low-level logging support.
294 #define LL_LOG(Call) if (ll_logger_) ll_logger_->Call; 293 #define LL_LOG(Call) if (ll_logger_) ll_logger_->Call;
295 294
296 class LowLevelLogger : public CodeEventLogger { 295 class LowLevelLogger : public CodeEventLogger {
297 public: 296 public:
298 explicit LowLevelLogger(const char* file_name); 297 explicit LowLevelLogger(const char* file_name);
299 ~LowLevelLogger() override; 298 ~LowLevelLogger() override;
300 299
301 void CodeMoveEvent(AbstractCode* from, Address to) override; 300 void CodeMoveEvent(AbstractCode* from, Address to) override;
302 void CodeDisableOptEvent(AbstractCode* code, 301 void CodeDisableOptEvent(AbstractCode* code,
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 if (!log_->IsEnabled()) return; 781 if (!log_->IsEnabled()) return;
783 Log::MessageBuilder msg(log_); 782 Log::MessageBuilder msg(log_);
784 msg.Append("%s,%d", name, value); 783 msg.Append("%s,%d", name, value);
785 msg.WriteToLogFile(); 784 msg.WriteToLogFile();
786 } 785 }
787 786
788 787
789 void Logger::UncheckedIntPtrTEvent(const char* name, intptr_t value) { 788 void Logger::UncheckedIntPtrTEvent(const char* name, intptr_t value) {
790 if (!log_->IsEnabled()) return; 789 if (!log_->IsEnabled()) return;
791 Log::MessageBuilder msg(log_); 790 Log::MessageBuilder msg(log_);
792 msg.Append("%s,%" V8_PTR_PREFIX "d", name, value); 791 msg.Append("%s,%" V8PRIdPTR, name, value);
793 msg.WriteToLogFile(); 792 msg.WriteToLogFile();
794 } 793 }
795 794
796 795
797 void Logger::HandleEvent(const char* name, Object** location) { 796 void Logger::HandleEvent(const char* name, Object** location) {
798 if (!log_->IsEnabled() || !FLAG_log_handles) return; 797 if (!log_->IsEnabled() || !FLAG_log_handles) return;
799 Log::MessageBuilder msg(log_); 798 Log::MessageBuilder msg(log_);
800 msg.Append("%s,0x%" V8PRIxPTR, name, location); 799 msg.Append("%s,%p", name, location);
801 msg.WriteToLogFile(); 800 msg.WriteToLogFile();
802 } 801 }
803 802
804 803
805 // ApiEvent is private so all the calls come from the Logger class. It is the 804 // ApiEvent is private so all the calls come from the Logger class. It is the
806 // caller's responsibility to ensure that log is enabled and that 805 // caller's responsibility to ensure that log is enabled and that
807 // FLAG_log_api is true. 806 // FLAG_log_api is true.
808 void Logger::ApiEvent(const char* format, ...) { 807 void Logger::ApiEvent(const char* format, ...) {
809 DCHECK(log_->IsEnabled() && FLAG_log_api); 808 DCHECK(log_->IsEnabled() && FLAG_log_api);
810 Log::MessageBuilder msg(log_); 809 Log::MessageBuilder msg(log_);
(...skipping 20 matching lines...) Expand all
831 library_path.c_str(), start, end); 830 library_path.c_str(), start, end);
832 msg.WriteToLogFile(); 831 msg.WriteToLogFile();
833 } 832 }
834 833
835 834
836 void Logger::CodeDeoptEvent(Code* code, Address pc, int fp_to_sp_delta) { 835 void Logger::CodeDeoptEvent(Code* code, Address pc, int fp_to_sp_delta) {
837 PROFILER_LOG(CodeDeoptEvent(code, pc, fp_to_sp_delta)); 836 PROFILER_LOG(CodeDeoptEvent(code, pc, fp_to_sp_delta));
838 if (!log_->IsEnabled() || !FLAG_log_internal_timer_events) return; 837 if (!log_->IsEnabled() || !FLAG_log_internal_timer_events) return;
839 Log::MessageBuilder msg(log_); 838 Log::MessageBuilder msg(log_);
840 int since_epoch = static_cast<int>(timer_.Elapsed().InMicroseconds()); 839 int since_epoch = static_cast<int>(timer_.Elapsed().InMicroseconds());
841 msg.Append("code-deopt,%ld,%d", since_epoch, code->CodeSize()); 840 msg.Append("code-deopt,%d,%d", since_epoch, code->CodeSize());
842 msg.WriteToLogFile(); 841 msg.WriteToLogFile();
843 } 842 }
844 843
845 844
846 void Logger::CurrentTimeEvent() { 845 void Logger::CurrentTimeEvent() {
847 if (!log_->IsEnabled()) return; 846 if (!log_->IsEnabled()) return;
848 DCHECK(FLAG_log_timer_events || FLAG_prof_cpp); 847 DCHECK(FLAG_log_timer_events || FLAG_prof_cpp);
849 Log::MessageBuilder msg(log_); 848 Log::MessageBuilder msg(log_);
850 int since_epoch = static_cast<int>(timer_.Elapsed().InMicroseconds()); 849 int since_epoch = static_cast<int>(timer_.Elapsed().InMicroseconds());
851 msg.Append("current-time,%ld", since_epoch); 850 msg.Append("current-time,%d", since_epoch);
852 msg.WriteToLogFile(); 851 msg.WriteToLogFile();
853 } 852 }
854 853
855 854
856 void Logger::TimerEvent(Logger::StartEnd se, const char* name) { 855 void Logger::TimerEvent(Logger::StartEnd se, const char* name) {
857 if (!log_->IsEnabled()) return; 856 if (!log_->IsEnabled()) return;
858 DCHECK(FLAG_log_internal_timer_events); 857 DCHECK(FLAG_log_internal_timer_events);
859 Log::MessageBuilder msg(log_); 858 Log::MessageBuilder msg(log_);
860 int since_epoch = static_cast<int>(timer_.Elapsed().InMicroseconds()); 859 int since_epoch = static_cast<int>(timer_.Elapsed().InMicroseconds());
861 const char* format = (se == START) ? "timer-event-start,\"%s\",%ld" 860 const char* format = (se == START) ? "timer-event-start,\"%s\",%ld"
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 1000
1002 void Logger::ApiEntryCall(const char* name) { 1001 void Logger::ApiEntryCall(const char* name) {
1003 if (!log_->IsEnabled() || !FLAG_log_api) return; 1002 if (!log_->IsEnabled() || !FLAG_log_api) return;
1004 ApiEvent("api,%s", name); 1003 ApiEvent("api,%s", name);
1005 } 1004 }
1006 1005
1007 1006
1008 void Logger::NewEvent(const char* name, void* object, size_t size) { 1007 void Logger::NewEvent(const char* name, void* object, size_t size) {
1009 if (!log_->IsEnabled() || !FLAG_log) return; 1008 if (!log_->IsEnabled() || !FLAG_log) return;
1010 Log::MessageBuilder msg(log_); 1009 Log::MessageBuilder msg(log_);
1011 msg.Append("new,%s,0x%" V8PRIxPTR ",%u", name, object, 1010 msg.Append("new,%s,%p,%u", name, object, static_cast<unsigned int>(size));
1012 static_cast<unsigned int>(size));
1013 msg.WriteToLogFile(); 1011 msg.WriteToLogFile();
1014 } 1012 }
1015 1013
1016 1014
1017 void Logger::DeleteEvent(const char* name, void* object) { 1015 void Logger::DeleteEvent(const char* name, void* object) {
1018 if (!log_->IsEnabled() || !FLAG_log) return; 1016 if (!log_->IsEnabled() || !FLAG_log) return;
1019 Log::MessageBuilder msg(log_); 1017 Log::MessageBuilder msg(log_);
1020 msg.Append("delete,%s,0x%" V8PRIxPTR, name, object); 1018 msg.Append("delete,%s,%p", name, object);
1021 msg.WriteToLogFile(); 1019 msg.WriteToLogFile();
1022 } 1020 }
1023 1021
1024 1022
1025 void Logger::CallbackEventInternal(const char* prefix, Name* name, 1023 void Logger::CallbackEventInternal(const char* prefix, Name* name,
1026 Address entry_point) { 1024 Address entry_point) {
1027 if (!FLAG_log_code || !log_->IsEnabled()) return; 1025 if (!FLAG_log_code || !log_->IsEnabled()) return;
1028 Log::MessageBuilder msg(log_); 1026 Log::MessageBuilder msg(log_);
1029 msg.Append("%s,%s,-2,", 1027 msg.Append("%s,%s,-2,",
1030 kLogEventsNames[CODE_CREATION_EVENT], 1028 kLogEventsNames[CODE_CREATION_EVENT],
1031 kLogEventsNames[CALLBACK_TAG]); 1029 kLogEventsNames[CALLBACK_TAG]);
1032 msg.AppendAddress(entry_point); 1030 msg.AppendAddress(entry_point);
1033 if (name->IsString()) { 1031 if (name->IsString()) {
1034 base::SmartArrayPointer<char> str = 1032 base::SmartArrayPointer<char> str =
1035 String::cast(name)->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); 1033 String::cast(name)->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL);
1036 msg.Append(",1,\"%s%s\"", prefix, str.get()); 1034 msg.Append(",1,\"%s%s\"", prefix, str.get());
1037 } else { 1035 } else {
1038 Symbol* symbol = Symbol::cast(name); 1036 Symbol* symbol = Symbol::cast(name);
1039 if (symbol->name()->IsUndefined()) { 1037 if (symbol->name()->IsUndefined()) {
1040 msg.Append(",1,symbol(hash %x)", prefix, symbol->Hash()); 1038 msg.Append(",1,symbol(hash %x)", symbol->Hash());
1041 } else { 1039 } else {
1042 base::SmartArrayPointer<char> str = 1040 base::SmartArrayPointer<char> str =
1043 String::cast(symbol->name()) 1041 String::cast(symbol->name())
1044 ->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); 1042 ->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL);
1045 msg.Append(",1,symbol(\"%s\" hash %x)", prefix, str.get(), 1043 msg.Append(",1,symbol(\"%s%s\" hash %x)", prefix, str.get(),
1046 symbol->Hash()); 1044 symbol->Hash());
1047 } 1045 }
1048 } 1046 }
1049 msg.WriteToLogFile(); 1047 msg.WriteToLogFile();
1050 } 1048 }
1051 1049
1052 1050
1053 void Logger::CallbackEvent(Name* name, Address entry_point) { 1051 void Logger::CallbackEvent(Name* name, Address entry_point) {
1054 PROFILER_LOG(CallbackEvent(name, entry_point)); 1052 PROFILER_LOG(CallbackEvent(name, entry_point));
1055 CallbackEventInternal("", name, entry_point); 1053 CallbackEventInternal("", name, entry_point);
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
1379 DeleteArray(parameter_string); 1377 DeleteArray(parameter_string);
1380 msg.WriteToLogFile(); 1378 msg.WriteToLogFile();
1381 } 1379 }
1382 1380
1383 1381
1384 void Logger::TickEvent(TickSample* sample, bool overflow) { 1382 void Logger::TickEvent(TickSample* sample, bool overflow) {
1385 if (!log_->IsEnabled() || !FLAG_prof_cpp) return; 1383 if (!log_->IsEnabled() || !FLAG_prof_cpp) return;
1386 Log::MessageBuilder msg(log_); 1384 Log::MessageBuilder msg(log_);
1387 msg.Append("%s,", kLogEventsNames[TICK_EVENT]); 1385 msg.Append("%s,", kLogEventsNames[TICK_EVENT]);
1388 msg.AppendAddress(sample->pc); 1386 msg.AppendAddress(sample->pc);
1389 msg.Append(",%ld", static_cast<int>(timer_.Elapsed().InMicroseconds())); 1387 msg.Append(",%d", static_cast<int>(timer_.Elapsed().InMicroseconds()));
1390 if (sample->has_external_callback) { 1388 if (sample->has_external_callback) {
1391 msg.Append(",1,"); 1389 msg.Append(",1,");
1392 msg.AppendAddress(sample->external_callback_entry); 1390 msg.AppendAddress(sample->external_callback_entry);
1393 } else { 1391 } else {
1394 msg.Append(",0,"); 1392 msg.Append(",0,");
1395 msg.AppendAddress(sample->tos); 1393 msg.AppendAddress(sample->tos);
1396 } 1394 }
1397 msg.Append(",%d", static_cast<int>(sample->state)); 1395 msg.Append(",%d", static_cast<int>(sample->state));
1398 if (overflow) { 1396 if (overflow) {
1399 msg.Append(",overflow"); 1397 msg.Append(",overflow");
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
1850 removeCodeEventListener(jit_logger_); 1848 removeCodeEventListener(jit_logger_);
1851 delete jit_logger_; 1849 delete jit_logger_;
1852 jit_logger_ = NULL; 1850 jit_logger_ = NULL;
1853 } 1851 }
1854 1852
1855 return log_->Close(); 1853 return log_->Close();
1856 } 1854 }
1857 1855
1858 } // namespace internal 1856 } // namespace internal
1859 } // namespace v8 1857 } // namespace v8
OLDNEW
« no previous file with comments | « src/log.h ('k') | src/log-utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698