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

Side by Side Diff: src/log.cc

Issue 19768003: Logger: remove dependency between Logger and LogMessageBuilder. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: header removed Created 7 years, 5 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
« 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 // 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 17 matching lines...) Expand all
28 #include <stdarg.h> 28 #include <stdarg.h>
29 29
30 #include "v8.h" 30 #include "v8.h"
31 31
32 #include "bootstrapper.h" 32 #include "bootstrapper.h"
33 #include "code-stubs.h" 33 #include "code-stubs.h"
34 #include "cpu-profiler.h" 34 #include "cpu-profiler.h"
35 #include "deoptimizer.h" 35 #include "deoptimizer.h"
36 #include "global-handles.h" 36 #include "global-handles.h"
37 #include "log.h" 37 #include "log.h"
38 #include "log-utils.h"
38 #include "macro-assembler.h" 39 #include "macro-assembler.h"
39 #include "platform.h" 40 #include "platform.h"
40 #include "runtime-profiler.h" 41 #include "runtime-profiler.h"
41 #include "serialize.h" 42 #include "serialize.h"
42 #include "string-stream.h" 43 #include "string-stream.h"
43 #include "vm-state-inl.h" 44 #include "vm-state-inl.h"
44 45
45 namespace v8 { 46 namespace v8 {
46 namespace internal { 47 namespace internal {
47 48
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 583
583 #define DECLARE_EVENT(ignore1, name) name, 584 #define DECLARE_EVENT(ignore1, name) name,
584 static const char* const kLogEventsNames[Logger::NUMBER_OF_LOG_EVENTS] = { 585 static const char* const kLogEventsNames[Logger::NUMBER_OF_LOG_EVENTS] = {
585 LOG_EVENTS_AND_TAGS_LIST(DECLARE_EVENT) 586 LOG_EVENTS_AND_TAGS_LIST(DECLARE_EVENT)
586 }; 587 };
587 #undef DECLARE_EVENT 588 #undef DECLARE_EVENT
588 589
589 590
590 void Logger::ProfilerBeginEvent() { 591 void Logger::ProfilerBeginEvent() {
591 if (!log_->IsEnabled()) return; 592 if (!log_->IsEnabled()) return;
592 LogMessageBuilder msg(this); 593 Log::MessageBuilder msg(log_);
593 msg.Append("profiler,\"begin\",%d\n", kSamplingIntervalMs); 594 msg.Append("profiler,\"begin\",%d\n", kSamplingIntervalMs);
594 msg.WriteToLogFile(); 595 msg.WriteToLogFile();
595 } 596 }
596 597
597 598
598 void Logger::StringEvent(const char* name, const char* value) { 599 void Logger::StringEvent(const char* name, const char* value) {
599 if (FLAG_log) UncheckedStringEvent(name, value); 600 if (FLAG_log) UncheckedStringEvent(name, value);
600 } 601 }
601 602
602 603
603 void Logger::UncheckedStringEvent(const char* name, const char* value) { 604 void Logger::UncheckedStringEvent(const char* name, const char* value) {
604 if (!log_->IsEnabled()) return; 605 if (!log_->IsEnabled()) return;
605 LogMessageBuilder msg(this); 606 Log::MessageBuilder msg(log_);
606 msg.Append("%s,\"%s\"\n", name, value); 607 msg.Append("%s,\"%s\"\n", name, value);
607 msg.WriteToLogFile(); 608 msg.WriteToLogFile();
608 } 609 }
609 610
610 611
611 void Logger::IntEvent(const char* name, int value) { 612 void Logger::IntEvent(const char* name, int value) {
612 if (FLAG_log) UncheckedIntEvent(name, value); 613 if (FLAG_log) UncheckedIntEvent(name, value);
613 } 614 }
614 615
615 616
616 void Logger::IntPtrTEvent(const char* name, intptr_t value) { 617 void Logger::IntPtrTEvent(const char* name, intptr_t value) {
617 if (FLAG_log) UncheckedIntPtrTEvent(name, value); 618 if (FLAG_log) UncheckedIntPtrTEvent(name, value);
618 } 619 }
619 620
620 621
621 void Logger::UncheckedIntEvent(const char* name, int value) { 622 void Logger::UncheckedIntEvent(const char* name, int value) {
622 if (!log_->IsEnabled()) return; 623 if (!log_->IsEnabled()) return;
623 LogMessageBuilder msg(this); 624 Log::MessageBuilder msg(log_);
624 msg.Append("%s,%d\n", name, value); 625 msg.Append("%s,%d\n", name, value);
625 msg.WriteToLogFile(); 626 msg.WriteToLogFile();
626 } 627 }
627 628
628 629
629 void Logger::UncheckedIntPtrTEvent(const char* name, intptr_t value) { 630 void Logger::UncheckedIntPtrTEvent(const char* name, intptr_t value) {
630 if (!log_->IsEnabled()) return; 631 if (!log_->IsEnabled()) return;
631 LogMessageBuilder msg(this); 632 Log::MessageBuilder msg(log_);
632 msg.Append("%s,%" V8_PTR_PREFIX "d\n", name, value); 633 msg.Append("%s,%" V8_PTR_PREFIX "d\n", name, value);
633 msg.WriteToLogFile(); 634 msg.WriteToLogFile();
634 } 635 }
635 636
636 637
637 void Logger::HandleEvent(const char* name, Object** location) { 638 void Logger::HandleEvent(const char* name, Object** location) {
638 if (!log_->IsEnabled() || !FLAG_log_handles) return; 639 if (!log_->IsEnabled() || !FLAG_log_handles) return;
639 LogMessageBuilder msg(this); 640 Log::MessageBuilder msg(log_);
640 msg.Append("%s,0x%" V8PRIxPTR "\n", name, location); 641 msg.Append("%s,0x%" V8PRIxPTR "\n", name, location);
641 msg.WriteToLogFile(); 642 msg.WriteToLogFile();
642 } 643 }
643 644
644 645
645 // ApiEvent is private so all the calls come from the Logger class. It is the 646 // ApiEvent is private so all the calls come from the Logger class. It is the
646 // caller's responsibility to ensure that log is enabled and that 647 // caller's responsibility to ensure that log is enabled and that
647 // FLAG_log_api is true. 648 // FLAG_log_api is true.
648 void Logger::ApiEvent(const char* format, ...) { 649 void Logger::ApiEvent(const char* format, ...) {
649 ASSERT(log_->IsEnabled() && FLAG_log_api); 650 ASSERT(log_->IsEnabled() && FLAG_log_api);
650 LogMessageBuilder msg(this); 651 Log::MessageBuilder msg(log_);
651 va_list ap; 652 va_list ap;
652 va_start(ap, format); 653 va_start(ap, format);
653 msg.AppendVA(format, ap); 654 msg.AppendVA(format, ap);
654 va_end(ap); 655 va_end(ap);
655 msg.WriteToLogFile(); 656 msg.WriteToLogFile();
656 } 657 }
657 658
658 659
659 void Logger::ApiNamedSecurityCheck(Object* key) { 660 void Logger::ApiNamedSecurityCheck(Object* key) {
660 if (!log_->IsEnabled() || !FLAG_log_api) return; 661 if (!log_->IsEnabled() || !FLAG_log_api) return;
(...skipping 18 matching lines...) Expand all
679 } else { 680 } else {
680 ApiEvent("api,check-security,['no-name']\n"); 681 ApiEvent("api,check-security,['no-name']\n");
681 } 682 }
682 } 683 }
683 684
684 685
685 void Logger::SharedLibraryEvent(const char* library_path, 686 void Logger::SharedLibraryEvent(const char* library_path,
686 uintptr_t start, 687 uintptr_t start,
687 uintptr_t end) { 688 uintptr_t end) {
688 if (!log_->IsEnabled() || !FLAG_prof) return; 689 if (!log_->IsEnabled() || !FLAG_prof) return;
689 LogMessageBuilder msg(this); 690 Log::MessageBuilder msg(log_);
690 msg.Append("shared-library,\"%s\",0x%08" V8PRIxPTR ",0x%08" V8PRIxPTR "\n", 691 msg.Append("shared-library,\"%s\",0x%08" V8PRIxPTR ",0x%08" V8PRIxPTR "\n",
691 library_path, 692 library_path,
692 start, 693 start,
693 end); 694 end);
694 msg.WriteToLogFile(); 695 msg.WriteToLogFile();
695 } 696 }
696 697
697 698
698 void Logger::SharedLibraryEvent(const wchar_t* library_path, 699 void Logger::SharedLibraryEvent(const wchar_t* library_path,
699 uintptr_t start, 700 uintptr_t start,
700 uintptr_t end) { 701 uintptr_t end) {
701 if (!log_->IsEnabled() || !FLAG_prof) return; 702 if (!log_->IsEnabled() || !FLAG_prof) return;
702 LogMessageBuilder msg(this); 703 Log::MessageBuilder msg(log_);
703 msg.Append("shared-library,\"%ls\",0x%08" V8PRIxPTR ",0x%08" V8PRIxPTR "\n", 704 msg.Append("shared-library,\"%ls\",0x%08" V8PRIxPTR ",0x%08" V8PRIxPTR "\n",
704 library_path, 705 library_path,
705 start, 706 start,
706 end); 707 end);
707 msg.WriteToLogFile(); 708 msg.WriteToLogFile();
708 } 709 }
709 710
710 711
711 void Logger::CodeDeoptEvent(Code* code) { 712 void Logger::CodeDeoptEvent(Code* code) {
712 if (!log_->IsEnabled()) return; 713 if (!log_->IsEnabled()) return;
713 ASSERT(FLAG_log_internal_timer_events); 714 ASSERT(FLAG_log_internal_timer_events);
714 LogMessageBuilder msg(this); 715 Log::MessageBuilder msg(log_);
715 int since_epoch = static_cast<int>(OS::Ticks() - epoch_); 716 int since_epoch = static_cast<int>(OS::Ticks() - epoch_);
716 msg.Append("code-deopt,%ld,%d\n", since_epoch, code->CodeSize()); 717 msg.Append("code-deopt,%ld,%d\n", since_epoch, code->CodeSize());
717 msg.WriteToLogFile(); 718 msg.WriteToLogFile();
718 } 719 }
719 720
720 721
721 void Logger::TimerEvent(StartEnd se, const char* name) { 722 void Logger::TimerEvent(StartEnd se, const char* name) {
722 if (!log_->IsEnabled()) return; 723 if (!log_->IsEnabled()) return;
723 ASSERT(FLAG_log_internal_timer_events); 724 ASSERT(FLAG_log_internal_timer_events);
724 LogMessageBuilder msg(this); 725 Log::MessageBuilder msg(log_);
725 int since_epoch = static_cast<int>(OS::Ticks() - epoch_); 726 int since_epoch = static_cast<int>(OS::Ticks() - epoch_);
726 const char* format = (se == START) ? "timer-event-start,\"%s\",%ld\n" 727 const char* format = (se == START) ? "timer-event-start,\"%s\",%ld\n"
727 : "timer-event-end,\"%s\",%ld\n"; 728 : "timer-event-end,\"%s\",%ld\n";
728 msg.Append(format, name, since_epoch); 729 msg.Append(format, name, since_epoch);
729 msg.WriteToLogFile(); 730 msg.WriteToLogFile();
730 } 731 }
731 732
732 733
733 void Logger::EnterExternal(Isolate* isolate) { 734 void Logger::EnterExternal(Isolate* isolate) {
734 LOG(isolate, TimerEvent(START, TimerEventScope::v8_external)); 735 LOG(isolate, TimerEvent(START, TimerEventScope::v8_external));
(...skipping 20 matching lines...) Expand all
755 "V8.RecompileParallel"; 756 "V8.RecompileParallel";
756 const char* Logger::TimerEventScope::v8_compile_full_code = 757 const char* Logger::TimerEventScope::v8_compile_full_code =
757 "V8.CompileFullCode"; 758 "V8.CompileFullCode";
758 const char* Logger::TimerEventScope::v8_execute = "V8.Execute"; 759 const char* Logger::TimerEventScope::v8_execute = "V8.Execute";
759 const char* Logger::TimerEventScope::v8_external = "V8.External"; 760 const char* Logger::TimerEventScope::v8_external = "V8.External";
760 761
761 762
762 void Logger::LogRegExpSource(Handle<JSRegExp> regexp) { 763 void Logger::LogRegExpSource(Handle<JSRegExp> regexp) {
763 // Prints "/" + re.source + "/" + 764 // Prints "/" + re.source + "/" +
764 // (re.global?"g":"") + (re.ignorecase?"i":"") + (re.multiline?"m":"") 765 // (re.global?"g":"") + (re.ignorecase?"i":"") + (re.multiline?"m":"")
765 LogMessageBuilder msg(this); 766 Log::MessageBuilder msg(log_);
766 767
767 Handle<Object> source = GetProperty(regexp, "source"); 768 Handle<Object> source = GetProperty(regexp, "source");
768 if (!source->IsString()) { 769 if (!source->IsString()) {
769 msg.Append("no source"); 770 msg.Append("no source");
770 return; 771 return;
771 } 772 }
772 773
773 switch (regexp->TypeTag()) { 774 switch (regexp->TypeTag()) {
774 case JSRegExp::ATOM: 775 case JSRegExp::ATOM:
775 msg.Append('a'); 776 msg.Append('a');
(...skipping 20 matching lines...) Expand all
796 if (multiline->IsTrue()) { 797 if (multiline->IsTrue()) {
797 msg.Append('m'); 798 msg.Append('m');
798 } 799 }
799 800
800 msg.WriteToLogFile(); 801 msg.WriteToLogFile();
801 } 802 }
802 803
803 804
804 void Logger::RegExpCompileEvent(Handle<JSRegExp> regexp, bool in_cache) { 805 void Logger::RegExpCompileEvent(Handle<JSRegExp> regexp, bool in_cache) {
805 if (!log_->IsEnabled() || !FLAG_log_regexp) return; 806 if (!log_->IsEnabled() || !FLAG_log_regexp) return;
806 LogMessageBuilder msg(this); 807 Log::MessageBuilder msg(log_);
807 msg.Append("regexp-compile,"); 808 msg.Append("regexp-compile,");
808 LogRegExpSource(regexp); 809 LogRegExpSource(regexp);
809 msg.Append(in_cache ? ",hit\n" : ",miss\n"); 810 msg.Append(in_cache ? ",hit\n" : ",miss\n");
810 msg.WriteToLogFile(); 811 msg.WriteToLogFile();
811 } 812 }
812 813
813 814
814 void Logger::LogRuntime(Vector<const char> format, 815 void Logger::LogRuntime(Vector<const char> format,
815 JSArray* args) { 816 JSArray* args) {
816 if (!log_->IsEnabled() || !FLAG_log_runtime) return; 817 if (!log_->IsEnabled() || !FLAG_log_runtime) return;
817 HandleScope scope(isolate_); 818 HandleScope scope(isolate_);
818 LogMessageBuilder msg(this); 819 Log::MessageBuilder msg(log_);
819 for (int i = 0; i < format.length(); i++) { 820 for (int i = 0; i < format.length(); i++) {
820 char c = format[i]; 821 char c = format[i];
821 if (c == '%' && i <= format.length() - 2) { 822 if (c == '%' && i <= format.length() - 2) {
822 i++; 823 i++;
823 ASSERT('0' <= format[i] && format[i] <= '9'); 824 ASSERT('0' <= format[i] && format[i] <= '9');
824 MaybeObject* maybe = args->GetElement(format[i] - '0'); 825 MaybeObject* maybe = args->GetElement(format[i] - '0');
825 Object* obj; 826 Object* obj;
826 if (!maybe->ToObject(&obj)) { 827 if (!maybe->ToObject(&obj)) {
827 msg.Append("<exception>"); 828 msg.Append("<exception>");
828 continue; 829 continue;
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
909 910
910 911
911 void Logger::ApiEntryCall(const char* name) { 912 void Logger::ApiEntryCall(const char* name) {
912 if (!log_->IsEnabled() || !FLAG_log_api) return; 913 if (!log_->IsEnabled() || !FLAG_log_api) return;
913 ApiEvent("api,%s\n", name); 914 ApiEvent("api,%s\n", name);
914 } 915 }
915 916
916 917
917 void Logger::NewEvent(const char* name, void* object, size_t size) { 918 void Logger::NewEvent(const char* name, void* object, size_t size) {
918 if (!log_->IsEnabled() || !FLAG_log) return; 919 if (!log_->IsEnabled() || !FLAG_log) return;
919 LogMessageBuilder msg(this); 920 Log::MessageBuilder msg(log_);
920 msg.Append("new,%s,0x%" V8PRIxPTR ",%u\n", name, object, 921 msg.Append("new,%s,0x%" V8PRIxPTR ",%u\n", name, object,
921 static_cast<unsigned int>(size)); 922 static_cast<unsigned int>(size));
922 msg.WriteToLogFile(); 923 msg.WriteToLogFile();
923 } 924 }
924 925
925 926
926 void Logger::DeleteEvent(const char* name, void* object) { 927 void Logger::DeleteEvent(const char* name, void* object) {
927 if (!log_->IsEnabled() || !FLAG_log) return; 928 if (!log_->IsEnabled() || !FLAG_log) return;
928 LogMessageBuilder msg(this); 929 Log::MessageBuilder msg(log_);
929 msg.Append("delete,%s,0x%" V8PRIxPTR "\n", name, object); 930 msg.Append("delete,%s,0x%" V8PRIxPTR "\n", name, object);
930 msg.WriteToLogFile(); 931 msg.WriteToLogFile();
931 } 932 }
932 933
933 934
934 void Logger::NewEventStatic(const char* name, void* object, size_t size) { 935 void Logger::NewEventStatic(const char* name, void* object, size_t size) {
935 Isolate::Current()->logger()->NewEvent(name, object, size); 936 Isolate::Current()->logger()->NewEvent(name, object, size);
936 } 937 }
937 938
938 939
939 void Logger::DeleteEventStatic(const char* name, void* object) { 940 void Logger::DeleteEventStatic(const char* name, void* object) {
940 Isolate::Current()->logger()->DeleteEvent(name, object); 941 Isolate::Current()->logger()->DeleteEvent(name, object);
941 } 942 }
942 943
944
945 class CodeLogger {
yurys 2013/07/18 17:17:52 Delete this.
946 public:
947 };
948
949
943 void Logger::CallbackEventInternal(const char* prefix, Name* name, 950 void Logger::CallbackEventInternal(const char* prefix, Name* name,
944 Address entry_point) { 951 Address entry_point) {
945 if (!log_->IsEnabled() || !FLAG_log_code) return; 952 if (!log_->IsEnabled() || !FLAG_log_code) return;
946 LogMessageBuilder msg(this); 953 Log::MessageBuilder msg(log_);
947 msg.Append("%s,%s,-2,", 954 msg.Append("%s,%s,-2,",
948 kLogEventsNames[CODE_CREATION_EVENT], 955 kLogEventsNames[CODE_CREATION_EVENT],
949 kLogEventsNames[CALLBACK_TAG]); 956 kLogEventsNames[CALLBACK_TAG]);
950 msg.AppendAddress(entry_point); 957 msg.AppendAddress(entry_point);
951 if (name->IsString()) { 958 if (name->IsString()) {
952 SmartArrayPointer<char> str = 959 SmartArrayPointer<char> str =
953 String::cast(name)->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); 960 String::cast(name)->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL);
954 msg.Append(",1,\"%s%s\"", prefix, *str); 961 msg.Append(",1,\"%s%s\"", prefix, *str);
955 } else { 962 } else {
956 Symbol* symbol = Symbol::cast(name); 963 Symbol* symbol = Symbol::cast(name);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1016 JIT_LOG(CodeCreateEvent(code, script, name_buffer_->get(), 1023 JIT_LOG(CodeCreateEvent(code, script, name_buffer_->get(),
1017 name_buffer_->size())); 1024 name_buffer_->size()));
1018 if (!log_->IsEnabled()) return; 1025 if (!log_->IsEnabled()) return;
1019 LL_LOG(CodeCreateEvent(code, name_buffer_->get(), name_buffer_->size())); 1026 LL_LOG(CodeCreateEvent(code, name_buffer_->get(), name_buffer_->size()));
1020 if (Serializer::enabled()) { 1027 if (Serializer::enabled()) {
1021 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size()); 1028 RegisterSnapshotCodeName(code, name_buffer_->get(), name_buffer_->size());
1022 } 1029 }
1023 } 1030 }
1024 1031
1025 1032
1026 void Logger::AppendCodeCreateHeader(LogMessageBuilder* msg, 1033 static void AppendCodeCreateHeader(Log::MessageBuilder* msg,
1027 LogEventsAndTags tag, 1034 Logger::LogEventsAndTags tag,
1028 Code* code) { 1035 Code* code) {
1029 ASSERT(msg); 1036 ASSERT(msg);
1030 msg->Append("%s,%s,%d,", 1037 msg->Append("%s,%s,%d,",
1031 kLogEventsNames[CODE_CREATION_EVENT], 1038 kLogEventsNames[Logger::CODE_CREATION_EVENT],
1032 kLogEventsNames[tag], 1039 kLogEventsNames[tag],
1033 code->kind()); 1040 code->kind());
1034 msg->AppendAddress(code->address()); 1041 msg->AppendAddress(code->address());
1035 msg->Append(",%d,", code->ExecutableSize()); 1042 msg->Append(",%d,", code->ExecutableSize());
1036 } 1043 }
1037 1044
1038 1045
1039 void Logger::AppendSymbolName(LogMessageBuilder* msg,
1040 Symbol* symbol) {
1041 ASSERT(symbol);
1042 msg->Append("symbol(");
1043 if (!symbol->name()->IsUndefined()) {
1044 msg->Append("\"");
1045 msg->AppendDetailed(String::cast(symbol->name()), false);
1046 msg->Append("\" ");
1047 }
1048 msg->Append("hash %x)", symbol->Hash());
1049 }
1050
1051
1052 void Logger::CodeCreateEvent(LogEventsAndTags tag, 1046 void Logger::CodeCreateEvent(LogEventsAndTags tag,
1053 Code* code, 1047 Code* code,
1054 const char* comment) { 1048 const char* comment) {
1055 if (!is_logging_code_events()) return; 1049 if (!is_logging_code_events()) return;
1056 if (FLAG_ll_prof || Serializer::enabled() || jit_logger_ != NULL) { 1050 if (FLAG_ll_prof || Serializer::enabled() || jit_logger_ != NULL) {
1057 InitNameBuffer(tag); 1051 InitNameBuffer(tag);
1058 name_buffer_->AppendBytes(comment); 1052 name_buffer_->AppendBytes(comment);
1059 LogRecordedBuffer(code, NULL); 1053 LogRecordedBuffer(code, NULL);
1060 } 1054 }
1061 1055
1062 if (!FLAG_log_code || !log_->IsEnabled()) return; 1056 if (!FLAG_log_code || !log_->IsEnabled()) return;
1063 LogMessageBuilder msg(this); 1057 Log::MessageBuilder msg(log_);
1064 AppendCodeCreateHeader(&msg, tag, code); 1058 AppendCodeCreateHeader(&msg, tag, code);
1065 msg.AppendDoubleQuotedString(comment); 1059 msg.AppendDoubleQuotedString(comment);
1066 msg.Append('\n'); 1060 msg.Append('\n');
1067 msg.WriteToLogFile(); 1061 msg.WriteToLogFile();
1068 } 1062 }
1069 1063
1070 1064
1071 void Logger::CodeCreateEvent(LogEventsAndTags tag, 1065 void Logger::CodeCreateEvent(LogEventsAndTags tag,
1072 Code* code, 1066 Code* code,
1073 Name* name) { 1067 Name* name) {
1074 if (!is_logging_code_events()) return; 1068 if (!is_logging_code_events()) return;
1075 if (FLAG_ll_prof || Serializer::enabled() || jit_logger_ != NULL) { 1069 if (FLAG_ll_prof || Serializer::enabled() || jit_logger_ != NULL) {
1076 InitNameBuffer(tag); 1070 InitNameBuffer(tag);
1077 AppendName(name); 1071 AppendName(name);
1078 LogRecordedBuffer(code, NULL); 1072 LogRecordedBuffer(code, NULL);
1079 } 1073 }
1080 1074
1081 if (!FLAG_log_code || !log_->IsEnabled()) return; 1075 if (!FLAG_log_code || !log_->IsEnabled()) return;
1082 LogMessageBuilder msg(this); 1076 Log::MessageBuilder msg(log_);
1083 AppendCodeCreateHeader(&msg, tag, code); 1077 AppendCodeCreateHeader(&msg, tag, code);
1084 if (name->IsString()) { 1078 if (name->IsString()) {
1085 msg.Append('"'); 1079 msg.Append('"');
1086 msg.AppendDetailed(String::cast(name), false); 1080 msg.AppendDetailed(String::cast(name), false);
1087 msg.Append('"'); 1081 msg.Append('"');
1088 } else { 1082 } else {
1089 AppendSymbolName(&msg, Symbol::cast(name)); 1083 msg.AppendSymbolName(Symbol::cast(name));
1090 } 1084 }
1091 msg.Append('\n'); 1085 msg.Append('\n');
1092 msg.WriteToLogFile(); 1086 msg.WriteToLogFile();
1093 } 1087 }
1094 1088
1095 1089
1096 // ComputeMarker must only be used when SharedFunctionInfo is known. 1090 // ComputeMarker must only be used when SharedFunctionInfo is known.
1097 static const char* ComputeMarker(Code* code) { 1091 static const char* ComputeMarker(Code* code) {
1098 switch (code->kind()) { 1092 switch (code->kind()) {
1099 case Code::FUNCTION: return code->optimizable() ? "~" : ""; 1093 case Code::FUNCTION: return code->optimizable() ? "~" : "";
(...skipping 14 matching lines...) Expand all
1114 name_buffer_->AppendBytes(ComputeMarker(code)); 1108 name_buffer_->AppendBytes(ComputeMarker(code));
1115 AppendName(name); 1109 AppendName(name);
1116 LogRecordedBuffer(code, shared); 1110 LogRecordedBuffer(code, shared);
1117 } 1111 }
1118 1112
1119 if (!FLAG_log_code || !log_->IsEnabled()) return; 1113 if (!FLAG_log_code || !log_->IsEnabled()) return;
1120 if (code == isolate_->builtins()->builtin( 1114 if (code == isolate_->builtins()->builtin(
1121 Builtins::kLazyCompile)) 1115 Builtins::kLazyCompile))
1122 return; 1116 return;
1123 1117
1124 LogMessageBuilder msg(this); 1118 Log::MessageBuilder msg(log_);
1125 AppendCodeCreateHeader(&msg, tag, code); 1119 AppendCodeCreateHeader(&msg, tag, code);
1126 if (name->IsString()) { 1120 if (name->IsString()) {
1127 SmartArrayPointer<char> str = 1121 SmartArrayPointer<char> str =
1128 String::cast(name)->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); 1122 String::cast(name)->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL);
1129 msg.Append("\"%s\"", *str); 1123 msg.Append("\"%s\"", *str);
1130 } else { 1124 } else {
1131 AppendSymbolName(&msg, Symbol::cast(name)); 1125 msg.AppendSymbolName(Symbol::cast(name));
1132 } 1126 }
1133 msg.Append(','); 1127 msg.Append(',');
1134 msg.AppendAddress(shared->address()); 1128 msg.AppendAddress(shared->address());
1135 msg.Append(",%s", ComputeMarker(code)); 1129 msg.Append(",%s", ComputeMarker(code));
1136 msg.Append('\n'); 1130 msg.Append('\n');
1137 msg.WriteToLogFile(); 1131 msg.WriteToLogFile();
1138 } 1132 }
1139 1133
1140 1134
1141 // Although, it is possible to extract source and line from 1135 // Although, it is possible to extract source and line from
(...skipping 16 matching lines...) Expand all
1158 name_buffer_->AppendBytes("symbol(hash "); 1152 name_buffer_->AppendBytes("symbol(hash ");
1159 name_buffer_->AppendHex(Name::cast(source)->Hash()); 1153 name_buffer_->AppendHex(Name::cast(source)->Hash());
1160 name_buffer_->AppendByte(')'); 1154 name_buffer_->AppendByte(')');
1161 } 1155 }
1162 name_buffer_->AppendByte(':'); 1156 name_buffer_->AppendByte(':');
1163 name_buffer_->AppendInt(line); 1157 name_buffer_->AppendInt(line);
1164 LogRecordedBuffer(code, shared); 1158 LogRecordedBuffer(code, shared);
1165 } 1159 }
1166 1160
1167 if (!FLAG_log_code || !log_->IsEnabled()) return; 1161 if (!FLAG_log_code || !log_->IsEnabled()) return;
1168 LogMessageBuilder msg(this); 1162 Log::MessageBuilder msg(log_);
1169 AppendCodeCreateHeader(&msg, tag, code); 1163 AppendCodeCreateHeader(&msg, tag, code);
1170 SmartArrayPointer<char> name = 1164 SmartArrayPointer<char> name =
1171 shared->DebugName()->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); 1165 shared->DebugName()->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL);
1172 msg.Append("\"%s ", *name); 1166 msg.Append("\"%s ", *name);
1173 if (source->IsString()) { 1167 if (source->IsString()) {
1174 SmartArrayPointer<char> sourcestr = 1168 SmartArrayPointer<char> sourcestr =
1175 String::cast(source)->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); 1169 String::cast(source)->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL);
1176 msg.Append("%s", *sourcestr); 1170 msg.Append("%s", *sourcestr);
1177 } else { 1171 } else {
1178 AppendSymbolName(&msg, Symbol::cast(source)); 1172 msg.AppendSymbolName(Symbol::cast(source));
1179 } 1173 }
1180 msg.Append(":%d\",", line); 1174 msg.Append(":%d\",", line);
1181 msg.AppendAddress(shared->address()); 1175 msg.AppendAddress(shared->address());
1182 msg.Append(",%s", ComputeMarker(code)); 1176 msg.Append(",%s", ComputeMarker(code));
1183 msg.Append('\n'); 1177 msg.Append('\n');
1184 msg.WriteToLogFile(); 1178 msg.WriteToLogFile();
1185 } 1179 }
1186 1180
1187 1181
1188 void Logger::CodeCreateEvent(LogEventsAndTags tag, Code* code, int args_count) { 1182 void Logger::CodeCreateEvent(LogEventsAndTags tag, Code* code, int args_count) {
1189 if (!is_logging_code_events()) return; 1183 if (!is_logging_code_events()) return;
1190 if (FLAG_ll_prof || Serializer::enabled() || jit_logger_ != NULL) { 1184 if (FLAG_ll_prof || Serializer::enabled() || jit_logger_ != NULL) {
1191 InitNameBuffer(tag); 1185 InitNameBuffer(tag);
1192 name_buffer_->AppendInt(args_count); 1186 name_buffer_->AppendInt(args_count);
1193 LogRecordedBuffer(code, NULL); 1187 LogRecordedBuffer(code, NULL);
1194 } 1188 }
1195 1189
1196 if (!FLAG_log_code || !log_->IsEnabled()) return; 1190 if (!FLAG_log_code || !log_->IsEnabled()) return;
1197 LogMessageBuilder msg(this); 1191 Log::MessageBuilder msg(log_);
1198 AppendCodeCreateHeader(&msg, tag, code); 1192 AppendCodeCreateHeader(&msg, tag, code);
1199 msg.Append("\"args_count: %d\"", args_count); 1193 msg.Append("\"args_count: %d\"", args_count);
1200 msg.Append('\n'); 1194 msg.Append('\n');
1201 msg.WriteToLogFile(); 1195 msg.WriteToLogFile();
1202 } 1196 }
1203 1197
1204 1198
1205 void Logger::CodeMovingGCEvent() { 1199 void Logger::CodeMovingGCEvent() {
1206 if (!log_->IsEnabled() || !FLAG_ll_prof) return; 1200 if (!log_->IsEnabled() || !FLAG_ll_prof) return;
1207 LL_LOG(CodeMovingGCEvent()); 1201 LL_LOG(CodeMovingGCEvent());
1208 OS::SignalCodeMovingGC(); 1202 OS::SignalCodeMovingGC();
1209 } 1203 }
1210 1204
1211 1205
1212 void Logger::RegExpCodeCreateEvent(Code* code, String* source) { 1206 void Logger::RegExpCodeCreateEvent(Code* code, String* source) {
1213 if (!is_logging_code_events()) return; 1207 if (!is_logging_code_events()) return;
1214 if (FLAG_ll_prof || Serializer::enabled() || jit_logger_ != NULL) { 1208 if (FLAG_ll_prof || Serializer::enabled() || jit_logger_ != NULL) {
1215 InitNameBuffer(REG_EXP_TAG); 1209 InitNameBuffer(REG_EXP_TAG);
1216 name_buffer_->AppendString(source); 1210 name_buffer_->AppendString(source);
1217 LogRecordedBuffer(code, NULL); 1211 LogRecordedBuffer(code, NULL);
1218 } 1212 }
1219 1213
1220 if (!FLAG_log_code || !log_->IsEnabled()) return; 1214 if (!FLAG_log_code || !log_->IsEnabled()) return;
1221 LogMessageBuilder msg(this); 1215 Log::MessageBuilder msg(log_);
1222 AppendCodeCreateHeader(&msg, REG_EXP_TAG, code); 1216 AppendCodeCreateHeader(&msg, REG_EXP_TAG, code);
1223 msg.Append('"'); 1217 msg.Append('"');
1224 msg.AppendDetailed(source, false); 1218 msg.AppendDetailed(source, false);
1225 msg.Append('"'); 1219 msg.Append('"');
1226 msg.Append('\n'); 1220 msg.Append('\n');
1227 msg.WriteToLogFile(); 1221 msg.WriteToLogFile();
1228 } 1222 }
1229 1223
1230 1224
1231 void Logger::CodeMoveEvent(Address from, Address to) { 1225 void Logger::CodeMoveEvent(Address from, Address to) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1279 JIT_LOG(EndCodePosInfoEvent(code, jit_handler_data)); 1273 JIT_LOG(EndCodePosInfoEvent(code, jit_handler_data));
1280 } 1274 }
1281 1275
1282 1276
1283 void Logger::SnapshotPositionEvent(Address addr, int pos) { 1277 void Logger::SnapshotPositionEvent(Address addr, int pos) {
1284 if (!log_->IsEnabled()) return; 1278 if (!log_->IsEnabled()) return;
1285 LL_LOG(SnapshotPositionEvent(addr, pos)); 1279 LL_LOG(SnapshotPositionEvent(addr, pos));
1286 if (Serializer::enabled() && address_to_name_map_ != NULL) { 1280 if (Serializer::enabled() && address_to_name_map_ != NULL) {
1287 const char* code_name = address_to_name_map_->Lookup(addr); 1281 const char* code_name = address_to_name_map_->Lookup(addr);
1288 if (code_name == NULL) return; // Not a code object. 1282 if (code_name == NULL) return; // Not a code object.
1289 LogMessageBuilder msg(this); 1283 Log::MessageBuilder msg(log_);
1290 msg.Append("%s,%d,", kLogEventsNames[SNAPSHOT_CODE_NAME_EVENT], pos); 1284 msg.Append("%s,%d,", kLogEventsNames[SNAPSHOT_CODE_NAME_EVENT], pos);
1291 msg.AppendDoubleQuotedString(code_name); 1285 msg.AppendDoubleQuotedString(code_name);
1292 msg.Append("\n"); 1286 msg.Append("\n");
1293 msg.WriteToLogFile(); 1287 msg.WriteToLogFile();
1294 } 1288 }
1295 if (!FLAG_log_snapshot_positions) return; 1289 if (!FLAG_log_snapshot_positions) return;
1296 LogMessageBuilder msg(this); 1290 Log::MessageBuilder msg(log_);
1297 msg.Append("%s,", kLogEventsNames[SNAPSHOT_POSITION_EVENT]); 1291 msg.Append("%s,", kLogEventsNames[SNAPSHOT_POSITION_EVENT]);
1298 msg.AppendAddress(addr); 1292 msg.AppendAddress(addr);
1299 msg.Append(",%d", pos); 1293 msg.Append(",%d", pos);
1300 msg.Append('\n'); 1294 msg.Append('\n');
1301 msg.WriteToLogFile(); 1295 msg.WriteToLogFile();
1302 } 1296 }
1303 1297
1304 1298
1305 void Logger::SharedFunctionInfoMoveEvent(Address from, Address to) { 1299 void Logger::SharedFunctionInfoMoveEvent(Address from, Address to) {
1306 MoveEventInternal(SHARED_FUNC_MOVE_EVENT, from, to); 1300 MoveEventInternal(SHARED_FUNC_MOVE_EVENT, from, to);
1307 } 1301 }
1308 1302
1309 1303
1310 void Logger::MoveEventInternal(LogEventsAndTags event, 1304 void Logger::MoveEventInternal(LogEventsAndTags event,
1311 Address from, 1305 Address from,
1312 Address to) { 1306 Address to) {
1313 if (!log_->IsEnabled() || !FLAG_log_code) return; 1307 if (!log_->IsEnabled() || !FLAG_log_code) return;
1314 LogMessageBuilder msg(this); 1308 Log::MessageBuilder msg(log_);
1315 msg.Append("%s,", kLogEventsNames[event]); 1309 msg.Append("%s,", kLogEventsNames[event]);
1316 msg.AppendAddress(from); 1310 msg.AppendAddress(from);
1317 msg.Append(','); 1311 msg.Append(',');
1318 msg.AppendAddress(to); 1312 msg.AppendAddress(to);
1319 msg.Append('\n'); 1313 msg.Append('\n');
1320 msg.WriteToLogFile(); 1314 msg.WriteToLogFile();
1321 } 1315 }
1322 1316
1323 1317
1324 void Logger::DeleteEventInternal(LogEventsAndTags event, Address from) { 1318 void Logger::DeleteEventInternal(LogEventsAndTags event, Address from) {
1325 if (!log_->IsEnabled() || !FLAG_log_code) return; 1319 if (!log_->IsEnabled() || !FLAG_log_code) return;
1326 LogMessageBuilder msg(this); 1320 Log::MessageBuilder msg(log_);
1327 msg.Append("%s,", kLogEventsNames[event]); 1321 msg.Append("%s,", kLogEventsNames[event]);
1328 msg.AppendAddress(from); 1322 msg.AppendAddress(from);
1329 msg.Append('\n'); 1323 msg.Append('\n');
1330 msg.WriteToLogFile(); 1324 msg.WriteToLogFile();
1331 } 1325 }
1332 1326
1333 1327
1334 void Logger::ResourceEvent(const char* name, const char* tag) { 1328 void Logger::ResourceEvent(const char* name, const char* tag) {
1335 if (!log_->IsEnabled() || !FLAG_log) return; 1329 if (!log_->IsEnabled() || !FLAG_log) return;
1336 LogMessageBuilder msg(this); 1330 Log::MessageBuilder msg(log_);
1337 msg.Append("%s,%s,", name, tag); 1331 msg.Append("%s,%s,", name, tag);
1338 1332
1339 uint32_t sec, usec; 1333 uint32_t sec, usec;
1340 if (OS::GetUserTime(&sec, &usec) != -1) { 1334 if (OS::GetUserTime(&sec, &usec) != -1) {
1341 msg.Append("%d,%d,", sec, usec); 1335 msg.Append("%d,%d,", sec, usec);
1342 } 1336 }
1343 msg.Append("%.0f", OS::TimeCurrentMillis()); 1337 msg.Append("%.0f", OS::TimeCurrentMillis());
1344 1338
1345 msg.Append('\n'); 1339 msg.Append('\n');
1346 msg.WriteToLogFile(); 1340 msg.WriteToLogFile();
1347 } 1341 }
1348 1342
1349 1343
1350 void Logger::SuspectReadEvent(Name* name, Object* obj) { 1344 void Logger::SuspectReadEvent(Name* name, Object* obj) {
1351 if (!log_->IsEnabled() || !FLAG_log_suspect) return; 1345 if (!log_->IsEnabled() || !FLAG_log_suspect) return;
1352 LogMessageBuilder msg(this); 1346 Log::MessageBuilder msg(log_);
1353 String* class_name = obj->IsJSObject() 1347 String* class_name = obj->IsJSObject()
1354 ? JSObject::cast(obj)->class_name() 1348 ? JSObject::cast(obj)->class_name()
1355 : isolate_->heap()->empty_string(); 1349 : isolate_->heap()->empty_string();
1356 msg.Append("suspect-read,"); 1350 msg.Append("suspect-read,");
1357 msg.Append(class_name); 1351 msg.Append(class_name);
1358 msg.Append(','); 1352 msg.Append(',');
1359 if (name->IsString()) { 1353 if (name->IsString()) {
1360 msg.Append('"'); 1354 msg.Append('"');
1361 msg.Append(String::cast(name)); 1355 msg.Append(String::cast(name));
1362 msg.Append('"'); 1356 msg.Append('"');
1363 } else { 1357 } else {
1364 AppendSymbolName(&msg, Symbol::cast(name)); 1358 msg.AppendSymbolName(Symbol::cast(name));
1365 } 1359 }
1366 msg.Append('\n'); 1360 msg.Append('\n');
1367 msg.WriteToLogFile(); 1361 msg.WriteToLogFile();
1368 } 1362 }
1369 1363
1370 1364
1371 void Logger::HeapSampleBeginEvent(const char* space, const char* kind) { 1365 void Logger::HeapSampleBeginEvent(const char* space, const char* kind) {
1372 if (!log_->IsEnabled() || !FLAG_log_gc) return; 1366 if (!log_->IsEnabled() || !FLAG_log_gc) return;
1373 LogMessageBuilder msg(this); 1367 Log::MessageBuilder msg(log_);
1374 // Using non-relative system time in order to be able to synchronize with 1368 // Using non-relative system time in order to be able to synchronize with
1375 // external memory profiling events (e.g. DOM memory size). 1369 // external memory profiling events (e.g. DOM memory size).
1376 msg.Append("heap-sample-begin,\"%s\",\"%s\",%.0f\n", 1370 msg.Append("heap-sample-begin,\"%s\",\"%s\",%.0f\n",
1377 space, kind, OS::TimeCurrentMillis()); 1371 space, kind, OS::TimeCurrentMillis());
1378 msg.WriteToLogFile(); 1372 msg.WriteToLogFile();
1379 } 1373 }
1380 1374
1381 1375
1382 void Logger::HeapSampleEndEvent(const char* space, const char* kind) { 1376 void Logger::HeapSampleEndEvent(const char* space, const char* kind) {
1383 if (!log_->IsEnabled() || !FLAG_log_gc) return; 1377 if (!log_->IsEnabled() || !FLAG_log_gc) return;
1384 LogMessageBuilder msg(this); 1378 Log::MessageBuilder msg(log_);
1385 msg.Append("heap-sample-end,\"%s\",\"%s\"\n", space, kind); 1379 msg.Append("heap-sample-end,\"%s\",\"%s\"\n", space, kind);
1386 msg.WriteToLogFile(); 1380 msg.WriteToLogFile();
1387 } 1381 }
1388 1382
1389 1383
1390 void Logger::HeapSampleItemEvent(const char* type, int number, int bytes) { 1384 void Logger::HeapSampleItemEvent(const char* type, int number, int bytes) {
1391 if (!log_->IsEnabled() || !FLAG_log_gc) return; 1385 if (!log_->IsEnabled() || !FLAG_log_gc) return;
1392 LogMessageBuilder msg(this); 1386 Log::MessageBuilder msg(log_);
1393 msg.Append("heap-sample-item,%s,%d,%d\n", type, number, bytes); 1387 msg.Append("heap-sample-item,%s,%d,%d\n", type, number, bytes);
1394 msg.WriteToLogFile(); 1388 msg.WriteToLogFile();
1395 } 1389 }
1396 1390
1397 1391
1398 void Logger::DebugTag(const char* call_site_tag) { 1392 void Logger::DebugTag(const char* call_site_tag) {
1399 if (!log_->IsEnabled() || !FLAG_log) return; 1393 if (!log_->IsEnabled() || !FLAG_log) return;
1400 LogMessageBuilder msg(this); 1394 Log::MessageBuilder msg(log_);
1401 msg.Append("debug-tag,%s\n", call_site_tag); 1395 msg.Append("debug-tag,%s\n", call_site_tag);
1402 msg.WriteToLogFile(); 1396 msg.WriteToLogFile();
1403 } 1397 }
1404 1398
1405 1399
1406 void Logger::DebugEvent(const char* event_type, Vector<uint16_t> parameter) { 1400 void Logger::DebugEvent(const char* event_type, Vector<uint16_t> parameter) {
1407 if (!log_->IsEnabled() || !FLAG_log) return; 1401 if (!log_->IsEnabled() || !FLAG_log) return;
1408 StringBuilder s(parameter.length() + 1); 1402 StringBuilder s(parameter.length() + 1);
1409 for (int i = 0; i < parameter.length(); ++i) { 1403 for (int i = 0; i < parameter.length(); ++i) {
1410 s.AddCharacter(static_cast<char>(parameter[i])); 1404 s.AddCharacter(static_cast<char>(parameter[i]));
1411 } 1405 }
1412 char* parameter_string = s.Finalize(); 1406 char* parameter_string = s.Finalize();
1413 LogMessageBuilder msg(this); 1407 Log::MessageBuilder msg(log_);
1414 msg.Append("debug-queue-event,%s,%15.3f,%s\n", 1408 msg.Append("debug-queue-event,%s,%15.3f,%s\n",
1415 event_type, 1409 event_type,
1416 OS::TimeCurrentMillis(), 1410 OS::TimeCurrentMillis(),
1417 parameter_string); 1411 parameter_string);
1418 DeleteArray(parameter_string); 1412 DeleteArray(parameter_string);
1419 msg.WriteToLogFile(); 1413 msg.WriteToLogFile();
1420 } 1414 }
1421 1415
1422 1416
1423 void Logger::TickEvent(TickSample* sample, bool overflow) { 1417 void Logger::TickEvent(TickSample* sample, bool overflow) {
1424 if (!log_->IsEnabled() || !FLAG_prof) return; 1418 if (!log_->IsEnabled() || !FLAG_prof) return;
1425 LogMessageBuilder msg(this); 1419 Log::MessageBuilder msg(log_);
1426 msg.Append("%s,", kLogEventsNames[TICK_EVENT]); 1420 msg.Append("%s,", kLogEventsNames[TICK_EVENT]);
1427 msg.AppendAddress(sample->pc); 1421 msg.AppendAddress(sample->pc);
1428 msg.Append(",%ld", static_cast<int>(OS::Ticks() - epoch_)); 1422 msg.Append(",%ld", static_cast<int>(OS::Ticks() - epoch_));
1429 if (sample->has_external_callback) { 1423 if (sample->has_external_callback) {
1430 msg.Append(",1,"); 1424 msg.Append(",1,");
1431 msg.AppendAddress(sample->external_callback); 1425 msg.AppendAddress(sample->external_callback);
1432 } else { 1426 } else {
1433 msg.Append(",0,"); 1427 msg.Append(",0,");
1434 msg.AppendAddress(sample->tos); 1428 msg.AppendAddress(sample->tos);
1435 } 1429 }
(...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after
1971 1965
1972 if (jit_logger_) { 1966 if (jit_logger_) {
1973 delete jit_logger_; 1967 delete jit_logger_;
1974 jit_logger_ = NULL; 1968 jit_logger_ = NULL;
1975 } 1969 }
1976 1970
1977 return log_->Close(); 1971 return log_->Close();
1978 } 1972 }
1979 1973
1980 } } // namespace v8::internal 1974 } } // namespace v8::internal
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