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

Side by Side Diff: base/trace_event/trace_log.cc

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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #include "base/trace_event/trace_log.h" 5 #include "base/trace_event/trace_log.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 1017 matching lines...) Expand 10 before | Expand all | Expand 10 after
1028 TraceEventHandle TraceLog::AddTraceEvent( 1028 TraceEventHandle TraceLog::AddTraceEvent(
1029 char phase, 1029 char phase,
1030 const unsigned char* category_group_enabled, 1030 const unsigned char* category_group_enabled,
1031 const char* name, 1031 const char* name,
1032 const char* scope, 1032 const char* scope,
1033 unsigned long long id, 1033 unsigned long long id,
1034 int num_args, 1034 int num_args,
1035 const char** arg_names, 1035 const char** arg_names,
1036 const unsigned char* arg_types, 1036 const unsigned char* arg_types,
1037 const unsigned long long* arg_values, 1037 const unsigned long long* arg_values,
1038 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, 1038 scoped_ptr<ConvertableToTraceFormat>* convertable_values,
1039 unsigned int flags) { 1039 unsigned int flags) {
1040 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); 1040 int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
1041 base::TimeTicks now = base::TimeTicks::Now(); 1041 base::TimeTicks now = base::TimeTicks::Now();
1042 return AddTraceEventWithThreadIdAndTimestamp( 1042 return AddTraceEventWithThreadIdAndTimestamp(
1043 phase, 1043 phase,
1044 category_group_enabled, 1044 category_group_enabled,
1045 name, 1045 name,
1046 scope, 1046 scope,
1047 id, 1047 id,
1048 trace_event_internal::kNoId, // bind_id 1048 trace_event_internal::kNoId, // bind_id
(...skipping 11 matching lines...) Expand all
1060 char phase, 1060 char phase,
1061 const unsigned char* category_group_enabled, 1061 const unsigned char* category_group_enabled,
1062 const char* name, 1062 const char* name,
1063 const char* scope, 1063 const char* scope,
1064 unsigned long long id, 1064 unsigned long long id,
1065 unsigned long long bind_id, 1065 unsigned long long bind_id,
1066 int num_args, 1066 int num_args,
1067 const char** arg_names, 1067 const char** arg_names,
1068 const unsigned char* arg_types, 1068 const unsigned char* arg_types,
1069 const unsigned long long* arg_values, 1069 const unsigned long long* arg_values,
1070 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, 1070 scoped_ptr<ConvertableToTraceFormat>* convertable_values,
1071 unsigned int flags) { 1071 unsigned int flags) {
1072 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); 1072 int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
1073 base::TimeTicks now = base::TimeTicks::Now(); 1073 base::TimeTicks now = base::TimeTicks::Now();
1074 return AddTraceEventWithThreadIdAndTimestamp( 1074 return AddTraceEventWithThreadIdAndTimestamp(
1075 phase, 1075 phase,
1076 category_group_enabled, 1076 category_group_enabled,
1077 name, 1077 name,
1078 scope, 1078 scope,
1079 id, 1079 id,
1080 bind_id, 1080 bind_id,
(...skipping 11 matching lines...) Expand all
1092 char phase, 1092 char phase,
1093 const unsigned char* category_group_enabled, 1093 const unsigned char* category_group_enabled,
1094 const char* name, 1094 const char* name,
1095 const char* scope, 1095 const char* scope,
1096 unsigned long long id, 1096 unsigned long long id,
1097 int process_id, 1097 int process_id,
1098 int num_args, 1098 int num_args,
1099 const char** arg_names, 1099 const char** arg_names,
1100 const unsigned char* arg_types, 1100 const unsigned char* arg_types,
1101 const unsigned long long* arg_values, 1101 const unsigned long long* arg_values,
1102 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, 1102 scoped_ptr<ConvertableToTraceFormat>* convertable_values,
1103 unsigned int flags) { 1103 unsigned int flags) {
1104 base::TimeTicks now = base::TimeTicks::Now(); 1104 base::TimeTicks now = base::TimeTicks::Now();
1105 return AddTraceEventWithThreadIdAndTimestamp( 1105 return AddTraceEventWithThreadIdAndTimestamp(
1106 phase, 1106 phase,
1107 category_group_enabled, 1107 category_group_enabled,
1108 name, 1108 name,
1109 scope, 1109 scope,
1110 id, 1110 id,
1111 trace_event_internal::kNoId, // bind_id 1111 trace_event_internal::kNoId, // bind_id
1112 process_id, 1112 process_id,
(...skipping 13 matching lines...) Expand all
1126 const unsigned char* category_group_enabled, 1126 const unsigned char* category_group_enabled,
1127 const char* name, 1127 const char* name,
1128 const char* scope, 1128 const char* scope,
1129 unsigned long long id, 1129 unsigned long long id,
1130 int thread_id, 1130 int thread_id,
1131 const TimeTicks& timestamp, 1131 const TimeTicks& timestamp,
1132 int num_args, 1132 int num_args,
1133 const char** arg_names, 1133 const char** arg_names,
1134 const unsigned char* arg_types, 1134 const unsigned char* arg_types,
1135 const unsigned long long* arg_values, 1135 const unsigned long long* arg_values,
1136 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, 1136 scoped_ptr<ConvertableToTraceFormat>* convertable_values,
1137 unsigned int flags) { 1137 unsigned int flags) {
1138 return AddTraceEventWithThreadIdAndTimestamp( 1138 return AddTraceEventWithThreadIdAndTimestamp(
1139 phase, 1139 phase,
1140 category_group_enabled, 1140 category_group_enabled,
1141 name, 1141 name,
1142 scope, 1142 scope,
1143 id, 1143 id,
1144 trace_event_internal::kNoId, // bind_id 1144 trace_event_internal::kNoId, // bind_id
1145 thread_id, 1145 thread_id,
1146 timestamp, 1146 timestamp,
(...skipping 11 matching lines...) Expand all
1158 const char* name, 1158 const char* name,
1159 const char* scope, 1159 const char* scope,
1160 unsigned long long id, 1160 unsigned long long id,
1161 unsigned long long bind_id, 1161 unsigned long long bind_id,
1162 int thread_id, 1162 int thread_id,
1163 const TimeTicks& timestamp, 1163 const TimeTicks& timestamp,
1164 int num_args, 1164 int num_args,
1165 const char** arg_names, 1165 const char** arg_names,
1166 const unsigned char* arg_types, 1166 const unsigned char* arg_types,
1167 const unsigned long long* arg_values, 1167 const unsigned long long* arg_values,
1168 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, 1168 scoped_ptr<ConvertableToTraceFormat>* convertable_values,
1169 unsigned int flags) { 1169 unsigned int flags) {
1170 TraceEventHandle handle = {0, 0, 0}; 1170 TraceEventHandle handle = {0, 0, 0};
1171 if (!*category_group_enabled) 1171 if (!*category_group_enabled)
1172 return handle; 1172 return handle;
1173 1173
1174 // Avoid re-entrance of AddTraceEvent. This may happen in GPU process when 1174 // Avoid re-entrance of AddTraceEvent. This may happen in GPU process when
1175 // ECHO_TO_CONSOLE is enabled: AddTraceEvent -> LOG(ERROR) -> 1175 // ECHO_TO_CONSOLE is enabled: AddTraceEvent -> LOG(ERROR) ->
1176 // GpuProcessLogMessageHandler -> PostPendingTask -> TRACE_EVENT ... 1176 // GpuProcessLogMessageHandler -> PostPendingTask -> TRACE_EVENT ...
1177 if (thread_is_in_trace_event_.Get()) 1177 if (thread_is_in_trace_event_.Get())
1178 return handle; 1178 return handle;
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
1330 return handle; 1330 return handle;
1331 } 1331 }
1332 1332
1333 void TraceLog::AddMetadataEvent( 1333 void TraceLog::AddMetadataEvent(
1334 const unsigned char* category_group_enabled, 1334 const unsigned char* category_group_enabled,
1335 const char* name, 1335 const char* name,
1336 int num_args, 1336 int num_args,
1337 const char** arg_names, 1337 const char** arg_names,
1338 const unsigned char* arg_types, 1338 const unsigned char* arg_types,
1339 const unsigned long long* arg_values, 1339 const unsigned long long* arg_values,
1340 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, 1340 scoped_ptr<ConvertableToTraceFormat>* convertable_values,
1341 unsigned int flags) { 1341 unsigned int flags) {
1342 scoped_ptr<TraceEvent> trace_event(new TraceEvent); 1342 scoped_ptr<TraceEvent> trace_event(new TraceEvent);
1343 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); 1343 int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
1344 ThreadTicks thread_now = ThreadNow(); 1344 ThreadTicks thread_now = ThreadNow();
1345 TimeTicks now = OffsetNow(); 1345 TimeTicks now = OffsetNow();
1346 AutoLock lock(lock_); 1346 AutoLock lock(lock_);
1347 trace_event->Initialize( 1347 trace_event->Initialize(
1348 thread_id, now, thread_now, TRACE_EVENT_PHASE_METADATA, 1348 thread_id, now, thread_now, TRACE_EVENT_PHASE_METADATA,
1349 category_group_enabled, name, 1349 category_group_enabled, name,
1350 trace_event_internal::kGlobalScope, // scope 1350 trace_event_internal::kGlobalScope, // scope
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
1485 watch_event_callback_.Reset(); 1485 watch_event_callback_.Reset();
1486 } 1486 }
1487 1487
1488 uint64_t TraceLog::MangleEventId(uint64_t id) { 1488 uint64_t TraceLog::MangleEventId(uint64_t id) {
1489 return id ^ process_id_hash_; 1489 return id ^ process_id_hash_;
1490 } 1490 }
1491 1491
1492 void TraceLog::AddMetadataEventsWhileLocked() { 1492 void TraceLog::AddMetadataEventsWhileLocked() {
1493 lock_.AssertAcquired(); 1493 lock_.AssertAcquired();
1494 1494
1495 // Copy metadata added by |AddMetadataEvent| into the trace log. 1495 // Move metadata added by |AddMetadataEvent| into the trace log.
1496 for (const scoped_ptr<TraceEvent>& event : metadata_events_) 1496 while (!metadata_events_.empty()) {
1497 AddEventToThreadSharedChunkWhileLocked(nullptr, false)->CopyFrom(*event); 1497 TraceEvent* event = AddEventToThreadSharedChunkWhileLocked(nullptr, false);
1498 event->MoveFrom(std::move(metadata_events_.back()));
1499 metadata_events_.pop_back();
1500 }
1498 1501
1499 #if !defined(OS_NACL) // NaCl shouldn't expose the process id. 1502 #if !defined(OS_NACL) // NaCl shouldn't expose the process id.
1500 InitializeMetadataEvent(AddEventToThreadSharedChunkWhileLocked(NULL, false), 1503 InitializeMetadataEvent(AddEventToThreadSharedChunkWhileLocked(NULL, false),
1501 0, "num_cpus", "number", 1504 0, "num_cpus", "number",
1502 base::SysInfo::NumberOfProcessors()); 1505 base::SysInfo::NumberOfProcessors());
1503 #endif 1506 #endif
1504 1507
1505 int current_thread_id = static_cast<int>(base::PlatformThread::CurrentId()); 1508 int current_thread_id = static_cast<int>(base::PlatformThread::CurrentId());
1506 if (process_sort_index_ != 0) { 1509 if (process_sort_index_ != 0) {
1507 InitializeMetadataEvent(AddEventToThreadSharedChunkWhileLocked(NULL, false), 1510 InitializeMetadataEvent(AddEventToThreadSharedChunkWhileLocked(NULL, false),
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
1730 } 1733 }
1731 1734
1732 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { 1735 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() {
1733 if (*category_group_enabled_) { 1736 if (*category_group_enabled_) {
1734 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_, 1737 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_,
1735 event_handle_); 1738 event_handle_);
1736 } 1739 }
1737 } 1740 }
1738 1741
1739 } // namespace trace_event_internal 1742 } // namespace trace_event_internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698