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

Side by Side Diff: base/trace_event/trace_event.h

Issue 1717283003: tracing: Make ConvertableToTraceFormat move-only scoped_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 9 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium 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 #ifndef BASE_TRACE_EVENT_TRACE_EVENT_H_ 5 #ifndef BASE_TRACE_EVENT_TRACE_EVENT_H_
6 #define BASE_TRACE_EVENT_TRACE_EVENT_H_ 6 #define BASE_TRACE_EVENT_TRACE_EVENT_H_
7 7
8 // This header file defines implementation details of how the trace macros in 8 // This header file defines implementation details of how the trace macros in
9 // trace_event_common.h collect and store trace events. Anything not 9 // trace_event_common.h collect and store trace events. Anything not
10 // implementation-specific should go in trace_event_common.h instead of here. 10 // implementation-specific should go in trace_event_common.h instead of here.
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 // base::trace_event::TraceEventHandle TRACE_EVENT_API_ADD_TRACE_EVENT( 103 // base::trace_event::TraceEventHandle TRACE_EVENT_API_ADD_TRACE_EVENT(
104 // char phase, 104 // char phase,
105 // const unsigned char* category_group_enabled, 105 // const unsigned char* category_group_enabled,
106 // const char* name, 106 // const char* name,
107 // const char* scope, 107 // const char* scope,
108 // unsigned long long id, 108 // unsigned long long id,
109 // int num_args, 109 // int num_args,
110 // const char** arg_names, 110 // const char** arg_names,
111 // const unsigned char* arg_types, 111 // const unsigned char* arg_types,
112 // const unsigned long long* arg_values, 112 // const unsigned long long* arg_values,
113 // const scoped_refptr<ConvertableToTraceFormat>* 113 // scoped_ptr<ConvertableToTraceFormat>*
114 // convertable_values, 114 // convertable_values,
115 // unsigned int flags) 115 // unsigned int flags)
116 #define TRACE_EVENT_API_ADD_TRACE_EVENT \ 116 #define TRACE_EVENT_API_ADD_TRACE_EVENT \
117 base::trace_event::TraceLog::GetInstance()->AddTraceEvent 117 base::trace_event::TraceLog::GetInstance()->AddTraceEvent
118 118
119 // Add a trace event to the platform tracing system. 119 // Add a trace event to the platform tracing system.
120 // base::trace_event::TraceEventHandle 120 // base::trace_event::TraceEventHandle
121 // TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_BIND_ID( 121 // TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_BIND_ID(
122 // char phase, 122 // char phase,
123 // const unsigned char* category_group_enabled, 123 // const unsigned char* category_group_enabled,
124 // const char* name, 124 // const char* name,
125 // const char* scope, 125 // const char* scope,
126 // unsigned long long id, 126 // unsigned long long id,
127 // unsigned long long bind_id, 127 // unsigned long long bind_id,
128 // int num_args, 128 // int num_args,
129 // const char** arg_names, 129 // const char** arg_names,
130 // const unsigned char* arg_types, 130 // const unsigned char* arg_types,
131 // const unsigned long long* arg_values, 131 // const unsigned long long* arg_values,
132 // const scoped_refptr<ConvertableToTraceFormat>* 132 // scoped_ptr<ConvertableToTraceFormat>*
133 // convertable_values, 133 // convertable_values,
134 // unsigned int flags) 134 // unsigned int flags)
135 #define TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_BIND_ID \ 135 #define TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_BIND_ID \
136 base::trace_event::TraceLog::GetInstance()->AddTraceEventWithBindId 136 base::trace_event::TraceLog::GetInstance()->AddTraceEventWithBindId
137 137
138 // Add a trace event to the platform tracing system overriding the pid. 138 // Add a trace event to the platform tracing system overriding the pid.
139 // The resulting event will have tid = pid == (process_id passed here). 139 // The resulting event will have tid = pid == (process_id passed here).
140 // base::trace_event::TraceEventHandle 140 // base::trace_event::TraceEventHandle
141 // TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_PROCESS_ID( 141 // TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_PROCESS_ID(
142 // char phase, 142 // char phase,
143 // const unsigned char* category_group_enabled, 143 // const unsigned char* category_group_enabled,
144 // const char* name, 144 // const char* name,
145 // const char* scope, 145 // const char* scope,
146 // unsigned long long id, 146 // unsigned long long id,
147 // int process_id, 147 // int process_id,
148 // int num_args, 148 // int num_args,
149 // const char** arg_names, 149 // const char** arg_names,
150 // const unsigned char* arg_types, 150 // const unsigned char* arg_types,
151 // const unsigned long long* arg_values, 151 // const unsigned long long* arg_values,
152 // const scoped_refptr<ConvertableToTraceFormat>* 152 // scoped_ptr<ConvertableToTraceFormat>*
153 // convertable_values, 153 // convertable_values,
154 // unsigned int flags) 154 // unsigned int flags)
155 #define TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_PROCESS_ID \ 155 #define TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_PROCESS_ID \
156 base::trace_event::TraceLog::GetInstance()->AddTraceEventWithProcessId 156 base::trace_event::TraceLog::GetInstance()->AddTraceEventWithProcessId
157 157
158 // Add a trace event to the platform tracing system. 158 // Add a trace event to the platform tracing system.
159 // base::trace_event::TraceEventHandle 159 // base::trace_event::TraceEventHandle
160 // TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_TIMESTAMP( 160 // TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_TIMESTAMP(
161 // char phase, 161 // char phase,
162 // const unsigned char* category_group_enabled, 162 // const unsigned char* category_group_enabled,
163 // const char* name, 163 // const char* name,
164 // const char* scope, 164 // const char* scope,
165 // unsigned long long id, 165 // unsigned long long id,
166 // int thread_id, 166 // int thread_id,
167 // const TimeTicks& timestamp, 167 // const TimeTicks& timestamp,
168 // int num_args, 168 // int num_args,
169 // const char** arg_names, 169 // const char** arg_names,
170 // const unsigned char* arg_types, 170 // const unsigned char* arg_types,
171 // const unsigned long long* arg_values, 171 // const unsigned long long* arg_values,
172 // const scoped_refptr<ConvertableToTraceFormat>* 172 // scoped_ptr<ConvertableToTraceFormat>*
173 // convertable_values, 173 // convertable_values,
174 // unsigned int flags) 174 // unsigned int flags)
175 #define TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP \ 175 #define TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP \
176 base::trace_event::TraceLog::GetInstance() \ 176 base::trace_event::TraceLog::GetInstance() \
177 ->AddTraceEventWithThreadIdAndTimestamp 177 ->AddTraceEventWithThreadIdAndTimestamp
178 178
179 // Set the duration field of a COMPLETE trace event. 179 // Set the duration field of a COMPLETE trace event.
180 // void TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION( 180 // void TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(
181 // const unsigned char* category_group_enabled, 181 // const unsigned char* category_group_enabled,
182 // const char* name, 182 // const char* name,
183 // base::trace_event::TraceEventHandle id) 183 // base::trace_event::TraceEventHandle id)
184 #define TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION \ 184 #define TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION \
185 base::trace_event::TraceLog::GetInstance()->UpdateTraceEventDuration 185 base::trace_event::TraceLog::GetInstance()->UpdateTraceEventDuration
186 186
187 // Adds a metadata event to the trace log. The |AppendValueAsTraceFormat| method 187 // Adds a metadata event to the trace log. The |AppendValueAsTraceFormat| method
188 // on the convertable value will be called at flush time. 188 // on the convertable value will be called at flush time.
189 // TRACE_EVENT_API_ADD_METADATA_EVENT( 189 // TRACE_EVENT_API_ADD_METADATA_EVENT(
190 // const unsigned char* category_group_enabled, 190 // const unsigned char* category_group_enabled,
191 // const char* event_name, 191 // const char* event_name,
192 // const char* arg_name, 192 // const char* arg_name,
193 // scoped_refptr<ConvertableToTraceFormat> arg_value) 193 // scoped_ptr<ConvertableToTraceFormat> arg_value)
194 #define TRACE_EVENT_API_ADD_METADATA_EVENT \ 194 #define TRACE_EVENT_API_ADD_METADATA_EVENT \
195 trace_event_internal::AddMetadataEvent 195 trace_event_internal::AddMetadataEvent
196 196
197 // Defines atomic operations used internally by the tracing system. 197 // Defines atomic operations used internally by the tracing system.
198 #define TRACE_EVENT_API_ATOMIC_WORD base::subtle::AtomicWord 198 #define TRACE_EVENT_API_ATOMIC_WORD base::subtle::AtomicWord
199 #define TRACE_EVENT_API_ATOMIC_LOAD(var) base::subtle::NoBarrier_Load(&(var)) 199 #define TRACE_EVENT_API_ATOMIC_LOAD(var) base::subtle::NoBarrier_Load(&(var))
200 #define TRACE_EVENT_API_ATOMIC_STORE(var, value) \ 200 #define TRACE_EVENT_API_ATOMIC_STORE(var, value) \
201 base::subtle::NoBarrier_Store(&(var), (value)) 201 base::subtle::NoBarrier_Store(&(var), (value))
202 202
203 // Defines visibility for classes in trace_event.h 203 // Defines visibility for classes in trace_event.h
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 *type = TRACE_VALUE_TYPE_INT; 604 *type = TRACE_VALUE_TYPE_INT;
605 *value = arg.ToInternalValue(); 605 *value = arg.ToInternalValue();
606 } 606 }
607 607
608 // These AddTraceEvent and AddTraceEventWithThreadIdAndTimestamp template 608 // These AddTraceEvent and AddTraceEventWithThreadIdAndTimestamp template
609 // functions are defined here instead of in the macro, because the arg_values 609 // functions are defined here instead of in the macro, because the arg_values
610 // could be temporary objects, such as std::string. In order to store 610 // could be temporary objects, such as std::string. In order to store
611 // pointers to the internal c_str and pass through to the tracing API, 611 // pointers to the internal c_str and pass through to the tracing API,
612 // the arg_values must live throughout these procedures. 612 // the arg_values must live throughout these procedures.
613 613
614 template <class ARG1_CONVERTABLE_TYPE>
614 static inline base::trace_event::TraceEventHandle 615 static inline base::trace_event::TraceEventHandle
615 AddTraceEventWithThreadIdAndTimestamp( 616 AddTraceEventWithThreadIdAndTimestamp(
616 char phase, 617 char phase,
617 const unsigned char* category_group_enabled, 618 const unsigned char* category_group_enabled,
618 const char* name, 619 const char* name,
619 const char* scope, 620 const char* scope,
620 unsigned long long id, 621 unsigned long long id,
621 int thread_id, 622 int thread_id,
622 const base::TimeTicks& timestamp, 623 const base::TimeTicks& timestamp,
623 unsigned int flags, 624 unsigned int flags,
624 unsigned long long bind_id, 625 unsigned long long bind_id,
625 const char* arg1_name, 626 const char* arg1_name,
626 const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& 627 scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val) {
627 arg1_val) {
628 const int num_args = 1; 628 const int num_args = 1;
629 unsigned char arg_types[1] = { TRACE_VALUE_TYPE_CONVERTABLE }; 629 unsigned char arg_types[1] = { TRACE_VALUE_TYPE_CONVERTABLE };
630 scoped_ptr<base::trace_event::ConvertableToTraceFormat>
631 convertable_values[1] = {std::move(arg1_val)};
630 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( 632 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP(
631 phase, category_group_enabled, name, scope, id, bind_id, thread_id, 633 phase, category_group_enabled, name, scope, id, bind_id, thread_id,
632 timestamp, num_args, &arg1_name, arg_types, NULL, &arg1_val, flags); 634 timestamp, num_args, &arg1_name, arg_types, NULL, convertable_values,
635 flags);
633 } 636 }
634 637
635 template<class ARG1_TYPE> 638 template <class ARG1_TYPE, class ARG2_CONVERTABLE_TYPE>
636 static inline base::trace_event::TraceEventHandle 639 static inline base::trace_event::TraceEventHandle
637 AddTraceEventWithThreadIdAndTimestamp( 640 AddTraceEventWithThreadIdAndTimestamp(
638 char phase, 641 char phase,
639 const unsigned char* category_group_enabled, 642 const unsigned char* category_group_enabled,
640 const char* name, 643 const char* name,
641 const char* scope, 644 const char* scope,
642 unsigned long long id, 645 unsigned long long id,
643 int thread_id, 646 int thread_id,
644 const base::TimeTicks& timestamp, 647 const base::TimeTicks& timestamp,
645 unsigned int flags, 648 unsigned int flags,
646 unsigned long long bind_id, 649 unsigned long long bind_id,
647 const char* arg1_name, 650 const char* arg1_name,
648 const ARG1_TYPE& arg1_val, 651 const ARG1_TYPE& arg1_val,
649 const char* arg2_name, 652 const char* arg2_name,
650 const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& 653 scoped_ptr<ARG2_CONVERTABLE_TYPE> arg2_val) {
651 arg2_val) {
652 const int num_args = 2; 654 const int num_args = 2;
653 const char* arg_names[2] = { arg1_name, arg2_name }; 655 const char* arg_names[2] = { arg1_name, arg2_name };
654 656
655 unsigned char arg_types[2]; 657 unsigned char arg_types[2];
656 unsigned long long arg_values[2]; 658 unsigned long long arg_values[2];
657 SetTraceValue(arg1_val, &arg_types[0], &arg_values[0]); 659 SetTraceValue(arg1_val, &arg_types[0], &arg_values[0]);
658 arg_types[1] = TRACE_VALUE_TYPE_CONVERTABLE; 660 arg_types[1] = TRACE_VALUE_TYPE_CONVERTABLE;
659 661 scoped_ptr<base::trace_event::ConvertableToTraceFormat>
660 scoped_refptr<base::trace_event::ConvertableToTraceFormat> 662 convertable_values[2] = {nullptr, std::move(arg2_val)};
661 convertable_values[2];
662 convertable_values[1] = arg2_val;
663
664 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( 663 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP(
665 phase, category_group_enabled, name, scope, id, bind_id, thread_id, 664 phase, category_group_enabled, name, scope, id, bind_id, thread_id,
666 timestamp, num_args, arg_names, arg_types, arg_values, convertable_values, 665 timestamp, num_args, arg_names, arg_types, arg_values, convertable_values,
667 flags); 666 flags);
668 } 667 }
669 668
670 template<class ARG2_TYPE> 669 template <class ARG1_CONVERTABLE_TYPE, class ARG2_TYPE>
671 static inline base::trace_event::TraceEventHandle 670 static inline base::trace_event::TraceEventHandle
672 AddTraceEventWithThreadIdAndTimestamp( 671 AddTraceEventWithThreadIdAndTimestamp(
673 char phase, 672 char phase,
674 const unsigned char* category_group_enabled, 673 const unsigned char* category_group_enabled,
675 const char* name, 674 const char* name,
676 const char* scope, 675 const char* scope,
677 unsigned long long id, 676 unsigned long long id,
678 int thread_id, 677 int thread_id,
679 const base::TimeTicks& timestamp, 678 const base::TimeTicks& timestamp,
680 unsigned int flags, 679 unsigned int flags,
681 unsigned long long bind_id, 680 unsigned long long bind_id,
682 const char* arg1_name, 681 const char* arg1_name,
683 const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& arg1_val, 682 scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val,
684 const char* arg2_name, 683 const char* arg2_name,
685 const ARG2_TYPE& arg2_val) { 684 const ARG2_TYPE& arg2_val) {
686 const int num_args = 2; 685 const int num_args = 2;
687 const char* arg_names[2] = { arg1_name, arg2_name }; 686 const char* arg_names[2] = { arg1_name, arg2_name };
688 687
689 unsigned char arg_types[2]; 688 unsigned char arg_types[2];
690 unsigned long long arg_values[2]; 689 unsigned long long arg_values[2];
691 arg_types[0] = TRACE_VALUE_TYPE_CONVERTABLE; 690 arg_types[0] = TRACE_VALUE_TYPE_CONVERTABLE;
692 arg_values[0] = 0; 691 arg_values[0] = 0;
693 SetTraceValue(arg2_val, &arg_types[1], &arg_values[1]); 692 SetTraceValue(arg2_val, &arg_types[1], &arg_values[1]);
694 693 scoped_ptr<base::trace_event::ConvertableToTraceFormat>
695 scoped_refptr<base::trace_event::ConvertableToTraceFormat> 694 convertable_values[2] = {std::move(arg1_val), nullptr};
696 convertable_values[2];
697 convertable_values[0] = arg1_val;
698
699 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( 695 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP(
700 phase, category_group_enabled, name, scope, id, bind_id, thread_id, 696 phase, category_group_enabled, name, scope, id, bind_id, thread_id,
701 timestamp, num_args, arg_names, arg_types, arg_values, convertable_values, 697 timestamp, num_args, arg_names, arg_types, arg_values, convertable_values,
702 flags); 698 flags);
703 } 699 }
704 700
701 template <class ARG1_CONVERTABLE_TYPE, class ARG2_CONVERTABLE_TYPE>
705 static inline base::trace_event::TraceEventHandle 702 static inline base::trace_event::TraceEventHandle
706 AddTraceEventWithThreadIdAndTimestamp( 703 AddTraceEventWithThreadIdAndTimestamp(
707 char phase, 704 char phase,
708 const unsigned char* category_group_enabled, 705 const unsigned char* category_group_enabled,
709 const char* name, 706 const char* name,
710 const char* scope, 707 const char* scope,
711 unsigned long long id, 708 unsigned long long id,
712 int thread_id, 709 int thread_id,
713 const base::TimeTicks& timestamp, 710 const base::TimeTicks& timestamp,
714 unsigned int flags, 711 unsigned int flags,
715 unsigned long long bind_id, 712 unsigned long long bind_id,
716 const char* arg1_name, 713 const char* arg1_name,
717 const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& arg1_val, 714 scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val,
718 const char* arg2_name, 715 const char* arg2_name,
719 const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& 716 scoped_ptr<ARG2_CONVERTABLE_TYPE> arg2_val) {
720 arg2_val) {
721 const int num_args = 2; 717 const int num_args = 2;
722 const char* arg_names[2] = { arg1_name, arg2_name }; 718 const char* arg_names[2] = { arg1_name, arg2_name };
723 unsigned char arg_types[2] = 719 unsigned char arg_types[2] =
724 { TRACE_VALUE_TYPE_CONVERTABLE, TRACE_VALUE_TYPE_CONVERTABLE }; 720 { TRACE_VALUE_TYPE_CONVERTABLE, TRACE_VALUE_TYPE_CONVERTABLE };
725 scoped_refptr<base::trace_event::ConvertableToTraceFormat> 721 scoped_ptr<base::trace_event::ConvertableToTraceFormat>
726 convertable_values[2] = {arg1_val, arg2_val}; 722 convertable_values[2] = {std::move(arg1_val), std::move(arg2_val)};
727
728 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( 723 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP(
729 phase, category_group_enabled, name, scope, id, bind_id, thread_id, 724 phase, category_group_enabled, name, scope, id, bind_id, thread_id,
730 timestamp, num_args, arg_names, arg_types, NULL, convertable_values, 725 timestamp, num_args, arg_names, arg_types, NULL, convertable_values,
731 flags); 726 flags);
732 } 727 }
733 728
734 static inline base::trace_event::TraceEventHandle 729 static inline base::trace_event::TraceEventHandle
735 AddTraceEventWithThreadIdAndTimestamp( 730 AddTraceEventWithThreadIdAndTimestamp(
736 char phase, 731 char phase,
737 const unsigned char* category_group_enabled, 732 const unsigned char* category_group_enabled,
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 unsigned long long bind_id, 791 unsigned long long bind_id,
797 const char* arg1_name, 792 const char* arg1_name,
798 const ARG1_TYPE& arg1_val) { 793 const ARG1_TYPE& arg1_val) {
799 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); 794 int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
800 base::TimeTicks now = base::TimeTicks::Now(); 795 base::TimeTicks now = base::TimeTicks::Now();
801 return AddTraceEventWithThreadIdAndTimestamp( 796 return AddTraceEventWithThreadIdAndTimestamp(
802 phase, category_group_enabled, name, scope, id, thread_id, now, flags, 797 phase, category_group_enabled, name, scope, id, thread_id, now, flags,
803 bind_id, arg1_name, arg1_val); 798 bind_id, arg1_name, arg1_val);
804 } 799 }
805 800
801 template <class ARG1_CONVERTABLE_TYPE>
802 static inline base::trace_event::TraceEventHandle AddTraceEvent(
803 char phase,
804 const unsigned char* category_group_enabled,
805 const char* name,
806 const char* scope,
807 unsigned long long id,
808 unsigned int flags,
809 unsigned long long bind_id,
810 const char* arg1_name,
811 scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val) {
812 int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
813 base::TimeTicks now = base::TimeTicks::Now();
814 return AddTraceEventWithThreadIdAndTimestamp(
815 phase, category_group_enabled, name, scope, id, thread_id, now, flags,
816 bind_id, arg1_name, std::move(arg1_val));
817 }
818
806 template<class ARG1_TYPE, class ARG2_TYPE> 819 template<class ARG1_TYPE, class ARG2_TYPE>
807 static inline base::trace_event::TraceEventHandle 820 static inline base::trace_event::TraceEventHandle
808 AddTraceEventWithThreadIdAndTimestamp( 821 AddTraceEventWithThreadIdAndTimestamp(
809 char phase, 822 char phase,
810 const unsigned char* category_group_enabled, 823 const unsigned char* category_group_enabled,
811 const char* name, 824 const char* name,
812 const char* scope, 825 const char* scope,
813 unsigned long long id, 826 unsigned long long id,
814 int thread_id, 827 int thread_id,
815 const base::TimeTicks& timestamp, 828 const base::TimeTicks& timestamp,
816 unsigned int flags, 829 unsigned int flags,
817 unsigned long long bind_id, 830 unsigned long long bind_id,
818 const char* arg1_name, 831 const char* arg1_name,
819 const ARG1_TYPE& arg1_val, 832 const ARG1_TYPE& arg1_val,
820 const char* arg2_name, 833 const char* arg2_name,
821 const ARG2_TYPE& arg2_val) { 834 const ARG2_TYPE& arg2_val) {
822 const int num_args = 2; 835 const int num_args = 2;
823 const char* arg_names[2] = { arg1_name, arg2_name }; 836 const char* arg_names[2] = { arg1_name, arg2_name };
824 unsigned char arg_types[2]; 837 unsigned char arg_types[2];
825 unsigned long long arg_values[2]; 838 unsigned long long arg_values[2];
826 SetTraceValue(arg1_val, &arg_types[0], &arg_values[0]); 839 SetTraceValue(arg1_val, &arg_types[0], &arg_values[0]);
827 SetTraceValue(arg2_val, &arg_types[1], &arg_values[1]); 840 SetTraceValue(arg2_val, &arg_types[1], &arg_values[1]);
828 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( 841 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP(
829 phase, category_group_enabled, name, scope, id, bind_id, thread_id, 842 phase, category_group_enabled, name, scope, id, bind_id, thread_id,
830 timestamp, num_args, arg_names, arg_types, arg_values, NULL, flags); 843 timestamp, num_args, arg_names, arg_types, arg_values, NULL, flags);
831 } 844 }
832 845
846 template <class ARG1_CONVERTABLE_TYPE, class ARG2_TYPE>
847 static inline base::trace_event::TraceEventHandle AddTraceEvent(
848 char phase,
849 const unsigned char* category_group_enabled,
850 const char* name,
851 const char* scope,
852 unsigned long long id,
853 unsigned int flags,
854 unsigned long long bind_id,
855 const char* arg1_name,
856 scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val,
857 const char* arg2_name,
858 const ARG2_TYPE& arg2_val) {
859 int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
860 base::TimeTicks now = base::TimeTicks::Now();
861 return AddTraceEventWithThreadIdAndTimestamp(
862 phase, category_group_enabled, name, scope, id, thread_id, now, flags,
863 bind_id, arg1_name, std::move(arg1_val), arg2_name, arg2_val);
864 }
865
866 template <class ARG1_TYPE, class ARG2_CONVERTABLE_TYPE>
867 static inline base::trace_event::TraceEventHandle AddTraceEvent(
868 char phase,
869 const unsigned char* category_group_enabled,
870 const char* name,
871 const char* scope,
872 unsigned long long id,
873 unsigned int flags,
874 unsigned long long bind_id,
875 const char* arg1_name,
876 const ARG1_TYPE& arg1_val,
877 const char* arg2_name,
878 scoped_ptr<ARG2_CONVERTABLE_TYPE> arg2_val) {
879 int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
880 base::TimeTicks now = base::TimeTicks::Now();
881 return AddTraceEventWithThreadIdAndTimestamp(
882 phase, category_group_enabled, name, scope, id, thread_id, now, flags,
883 bind_id, arg1_name, arg1_val, arg2_name, std::move(arg2_val));
884 }
885
886 template <class ARG1_CONVERTABLE_TYPE, class ARG2_CONVERTABLE_TYPE>
887 static inline base::trace_event::TraceEventHandle AddTraceEvent(
888 char phase,
889 const unsigned char* category_group_enabled,
890 const char* name,
891 const char* scope,
892 unsigned long long id,
893 unsigned int flags,
894 unsigned long long bind_id,
895 const char* arg1_name,
896 scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val,
897 const char* arg2_name,
898 scoped_ptr<ARG2_CONVERTABLE_TYPE> arg2_val) {
899 int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
900 base::TimeTicks now = base::TimeTicks::Now();
901 return AddTraceEventWithThreadIdAndTimestamp(
902 phase, category_group_enabled, name, scope, id, thread_id, now, flags,
903 bind_id, arg1_name, std::move(arg1_val), arg2_name, std::move(arg2_val));
904 }
905
833 template<class ARG1_TYPE, class ARG2_TYPE> 906 template<class ARG1_TYPE, class ARG2_TYPE>
834 static inline base::trace_event::TraceEventHandle AddTraceEvent( 907 static inline base::trace_event::TraceEventHandle AddTraceEvent(
835 char phase, 908 char phase,
836 const unsigned char* category_group_enabled, 909 const unsigned char* category_group_enabled,
837 const char* name, 910 const char* name,
838 const char* scope, 911 const char* scope,
839 unsigned long long id, 912 unsigned long long id,
840 unsigned int flags, 913 unsigned int flags,
841 unsigned long long bind_id, 914 unsigned long long bind_id,
842 const char* arg1_name, 915 const char* arg1_name,
843 const ARG1_TYPE& arg1_val, 916 const ARG1_TYPE& arg1_val,
844 const char* arg2_name, 917 const char* arg2_name,
845 const ARG2_TYPE& arg2_val) { 918 const ARG2_TYPE& arg2_val) {
846 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); 919 int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
847 base::TimeTicks now = base::TimeTicks::Now(); 920 base::TimeTicks now = base::TimeTicks::Now();
848 return AddTraceEventWithThreadIdAndTimestamp( 921 return AddTraceEventWithThreadIdAndTimestamp(
849 phase, category_group_enabled, name, scope, id, thread_id, now, flags, 922 phase, category_group_enabled, name, scope, id, thread_id, now, flags,
850 bind_id, arg1_name, arg1_val, arg2_name, arg2_val); 923 bind_id, arg1_name, arg1_val, arg2_name, arg2_val);
851 } 924 }
852 925
926 template <class ARG1_CONVERTABLE_TYPE>
853 static inline void AddMetadataEvent( 927 static inline void AddMetadataEvent(
854 const unsigned char* category_group_enabled, 928 const unsigned char* category_group_enabled,
855 const char* event_name, 929 const char* event_name,
856 const char* arg_name, 930 const char* arg_name,
857 scoped_refptr<base::trace_event::ConvertableToTraceFormat> arg_value) { 931 scoped_ptr<ARG1_CONVERTABLE_TYPE> arg_value) {
858 const char* arg_names[1] = {arg_name}; 932 const char* arg_names[1] = {arg_name};
859 scoped_refptr<base::trace_event::ConvertableToTraceFormat>
860 convertable_values[1] = {arg_value};
861 unsigned char arg_types[1] = {TRACE_VALUE_TYPE_CONVERTABLE}; 933 unsigned char arg_types[1] = {TRACE_VALUE_TYPE_CONVERTABLE};
934 scoped_ptr<base::trace_event::ConvertableToTraceFormat>
935 convertable_values[1] = {std::move(arg_value)};
862 base::trace_event::TraceLog::GetInstance()->AddMetadataEvent( 936 base::trace_event::TraceLog::GetInstance()->AddMetadataEvent(
863 category_group_enabled, event_name, 937 category_group_enabled, event_name,
864 1, // num_args 938 1, // num_args
865 arg_names, arg_types, 939 arg_names, arg_types,
866 nullptr, // arg_values 940 nullptr, // arg_values
867 convertable_values, TRACE_EVENT_FLAG_NONE); 941 convertable_values, TRACE_EVENT_FLAG_NONE);
868 } 942 }
869 943
870 template <class ARG1_TYPE> 944 template <class ARG1_TYPE>
871 static void AddMetadataEvent(const unsigned char* category_group_enabled, 945 static void AddMetadataEvent(const unsigned char* category_group_enabled,
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
999 const char* name_; 1073 const char* name_;
1000 IDType id_; 1074 IDType id_;
1001 1075
1002 DISALLOW_COPY_AND_ASSIGN(TraceScopedTrackableObject); 1076 DISALLOW_COPY_AND_ASSIGN(TraceScopedTrackableObject);
1003 }; 1077 };
1004 1078
1005 } // namespace trace_event 1079 } // namespace trace_event
1006 } // namespace base 1080 } // namespace base
1007 1081
1008 #endif // BASE_TRACE_EVENT_TRACE_EVENT_H_ 1082 #endif // BASE_TRACE_EVENT_TRACE_EVENT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698