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

Unified Diff: base/trace_event/trace_log.cc

Issue 2667513003: Remove some LazyInstance use in base/ (Closed)
Patch Set: no message_window Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/time/time_win.cc ('k') | base/win/scoped_handle.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/trace_event/trace_log.cc
diff --git a/base/trace_event/trace_log.cc b/base/trace_event/trace_log.cc
index edfd6488bb5c35a7afb48025d3fb0b4a84e4c02d..54e4cfeeae1332d5d31aa549d35dbb8477a7ae27 100644
--- a/base/trace_event/trace_log.cc
+++ b/base/trace_event/trace_log.cc
@@ -13,7 +13,6 @@
#include "base/bind.h"
#include "base/command_line.h"
#include "base/debug/leak_annotations.h"
-#include "base/lazy_instance.h"
#include "base/location.h"
#include "base/macros.h"
#include "base/memory/ptr_util.h"
@@ -89,14 +88,10 @@ const int kThreadFlushTimeoutMs = 3000;
#define MAX_TRACE_EVENT_FILTERS 32
// List of TraceEventFilter objects from the most recent tracing session.
-base::LazyInstance<std::vector<std::unique_ptr<TraceEventFilter>>>::Leaky
- g_category_group_filters = LAZY_INSTANCE_INITIALIZER;
-
-// The name of the current thread. This is used to decide if the current
-// thread name has changed. We combine all the seen thread names into the
-// output name for the thread.
-LazyInstance<ThreadLocalPointer<const char>>::Leaky g_current_thread_name =
- LAZY_INSTANCE_INITIALIZER;
+std::vector<std::unique_ptr<TraceEventFilter>>& GetCategoryGroupFilters() {
+ static auto filters = new std::vector<std::unique_ptr<TraceEventFilter>>();
Primiano Tucci (use gerrit) 2017/02/07 16:20:36 Nice, this one seems to have caused a 5% improveme
+ return *filters;
+}
ThreadTicks ThreadNow() {
return ThreadTicks::IsSupported() ? ThreadTicks::Now() : ThreadTicks();
@@ -169,8 +164,8 @@ void ForEachCategoryFilter(const unsigned char* category_group_enabled,
CategoryRegistry::GetCategoryByStatePtr(category_group_enabled);
uint32_t filter_bitmap = category->enabled_filters();
for (int index = 0; filter_bitmap != 0; filter_bitmap >>= 1, index++) {
- if (filter_bitmap & 1 && g_category_group_filters.Get()[index])
- filter_fn(g_category_group_filters.Get()[index].get());
+ if (filter_bitmap & 1 && GetCategoryGroupFilters()[index])
+ filter_fn(GetCategoryGroupFilters()[index].get());
}
}
@@ -473,7 +468,7 @@ void TraceLog::UpdateCategoryState(TraceCategory* category) {
for (const auto& event_filter : enabled_event_filters_) {
if (event_filter.IsCategoryGroupEnabled(category->name())) {
state_flags |= TraceCategory::ENABLED_FOR_FILTERING;
- DCHECK(g_category_group_filters.Get()[index]);
+ DCHECK(GetCategoryGroupFilters()[index]);
enabled_filters_bitmap |= 1 << index;
}
if (index++ >= MAX_TRACE_EVENT_FILTERS) {
@@ -499,11 +494,11 @@ void TraceLog::CreateFiltersForTraceConfig() {
// Filters were already added and tracing could be enabled. Filters list
// cannot be changed when trace events are using them.
- if (g_category_group_filters.Get().size())
+ if (GetCategoryGroupFilters().size())
return;
for (auto& filter_config : enabled_event_filters_) {
- if (g_category_group_filters.Get().size() >= MAX_TRACE_EVENT_FILTERS) {
+ if (GetCategoryGroupFilters().size() >= MAX_TRACE_EVENT_FILTERS) {
NOTREACHED()
<< "Too many trace event filters installed in the current session";
break;
@@ -522,7 +517,7 @@ void TraceLog::CreateFiltersForTraceConfig() {
new_filter = filter_factory_for_testing_(predicate_name);
CHECK(new_filter) << "Unknown trace filter " << predicate_name;
}
- g_category_group_filters.Get().push_back(std::move(new_filter));
+ GetCategoryGroupFilters().push_back(std::move(new_filter));
}
}
@@ -589,7 +584,7 @@ void TraceLog::SetEnabled(const TraceConfig& trace_config,
// cleared at the end of tracing because some threads which hit trace event
// when disabling, could try to use the filters.
if (!enabled_modes_)
- g_category_group_filters.Get().clear();
+ GetCategoryGroupFilters().clear();
// Update trace config for recording.
const bool already_recording = enabled_modes_ & RECORDING_MODE;
@@ -1220,9 +1215,9 @@ TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp(
// call (if any), but don't bother if the new name is empty. Note this will
// not detect a thread name change within the same char* buffer address: we
// favor common case performance over corner case correctness.
- if (new_name != g_current_thread_name.Get().Get() && new_name &&
- *new_name) {
- g_current_thread_name.Get().Set(new_name);
+ static auto current_thread_name = new ThreadLocalPointer<const char>();
+ if (new_name != current_thread_name->Get() && new_name && *new_name) {
+ current_thread_name->Set(new_name);
AutoLock thread_info_lock(thread_info_lock_);
« no previous file with comments | « base/time/time_win.cc ('k') | base/win/scoped_handle.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698