| OLD | NEW |
| 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 <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 // ECHO_TO_CONSOLE needs a small buffer to hold the unfinished COMPLETE events. | 82 // ECHO_TO_CONSOLE needs a small buffer to hold the unfinished COMPLETE events. |
| 83 const size_t kEchoToConsoleTraceEventBufferChunks = 256; | 83 const size_t kEchoToConsoleTraceEventBufferChunks = 256; |
| 84 | 84 |
| 85 const size_t kTraceEventBufferSizeInBytes = 100 * 1024; | 85 const size_t kTraceEventBufferSizeInBytes = 100 * 1024; |
| 86 const int kThreadFlushTimeoutMs = 3000; | 86 const int kThreadFlushTimeoutMs = 3000; |
| 87 | 87 |
| 88 #define MAX_TRACE_EVENT_FILTERS 32 | 88 #define MAX_TRACE_EVENT_FILTERS 32 |
| 89 | 89 |
| 90 // List of TraceEventFilter objects from the most recent tracing session. | 90 // List of TraceEventFilter objects from the most recent tracing session. |
| 91 std::vector<std::unique_ptr<TraceEventFilter>>& GetCategoryGroupFilters() { | 91 std::vector<std::unique_ptr<TraceEventFilter>>& GetCategoryGroupFilters() { |
| 92 static auto filters = new std::vector<std::unique_ptr<TraceEventFilter>>(); | 92 static auto* filters = new std::vector<std::unique_ptr<TraceEventFilter>>(); |
| 93 return *filters; | 93 return *filters; |
| 94 } | 94 } |
| 95 | 95 |
| 96 ThreadTicks ThreadNow() { | 96 ThreadTicks ThreadNow() { |
| 97 return ThreadTicks::IsSupported() ? ThreadTicks::Now() : ThreadTicks(); | 97 return ThreadTicks::IsSupported() ? ThreadTicks::Now() : ThreadTicks(); |
| 98 } | 98 } |
| 99 | 99 |
| 100 template <typename T> | 100 template <typename T> |
| 101 void InitializeMetadataEvent(TraceEvent* trace_event, | 101 void InitializeMetadataEvent(TraceEvent* trace_event, |
| 102 int thread_id, | 102 int thread_id, |
| (...skipping 1109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1212 | 1212 |
| 1213 // Check and update the current thread name only if the event is for the | 1213 // Check and update the current thread name only if the event is for the |
| 1214 // current thread to avoid locks in most cases. | 1214 // current thread to avoid locks in most cases. |
| 1215 if (thread_id == static_cast<int>(PlatformThread::CurrentId())) { | 1215 if (thread_id == static_cast<int>(PlatformThread::CurrentId())) { |
| 1216 const char* new_name = | 1216 const char* new_name = |
| 1217 ThreadIdNameManager::GetInstance()->GetName(thread_id); | 1217 ThreadIdNameManager::GetInstance()->GetName(thread_id); |
| 1218 // Check if the thread name has been set or changed since the previous | 1218 // Check if the thread name has been set or changed since the previous |
| 1219 // call (if any), but don't bother if the new name is empty. Note this will | 1219 // call (if any), but don't bother if the new name is empty. Note this will |
| 1220 // not detect a thread name change within the same char* buffer address: we | 1220 // not detect a thread name change within the same char* buffer address: we |
| 1221 // favor common case performance over corner case correctness. | 1221 // favor common case performance over corner case correctness. |
| 1222 static auto current_thread_name = new ThreadLocalPointer<const char>(); | 1222 static auto* current_thread_name = new ThreadLocalPointer<const char>(); |
| 1223 if (new_name != current_thread_name->Get() && new_name && *new_name) { | 1223 if (new_name != current_thread_name->Get() && new_name && *new_name) { |
| 1224 current_thread_name->Set(new_name); | 1224 current_thread_name->Set(new_name); |
| 1225 | 1225 |
| 1226 AutoLock thread_info_lock(thread_info_lock_); | 1226 AutoLock thread_info_lock(thread_info_lock_); |
| 1227 | 1227 |
| 1228 hash_map<int, std::string>::iterator existing_name = | 1228 hash_map<int, std::string>::iterator existing_name = |
| 1229 thread_names_.find(thread_id); | 1229 thread_names_.find(thread_id); |
| 1230 if (existing_name == thread_names_.end()) { | 1230 if (existing_name == thread_names_.end()) { |
| 1231 // This is a new thread id, and a new name. | 1231 // This is a new thread id, and a new name. |
| 1232 thread_names_[thread_id] = new_name; | 1232 thread_names_[thread_id] = new_name; |
| (...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1721 } | 1721 } |
| 1722 | 1722 |
| 1723 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { | 1723 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { |
| 1724 if (*category_group_enabled_) { | 1724 if (*category_group_enabled_) { |
| 1725 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_, | 1725 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_, |
| 1726 event_handle_); | 1726 event_handle_); |
| 1727 } | 1727 } |
| 1728 } | 1728 } |
| 1729 | 1729 |
| 1730 } // namespace trace_event_internal | 1730 } // namespace trace_event_internal |
| OLD | NEW |