Index: base/tracked_objects.h |
diff --git a/base/tracked_objects.h b/base/tracked_objects.h |
index 36caec3c6e45ea0984cba1bfa8551c4c7f1af565..8cb771e83ff857c755a785051081ec6f2f32d248 100644 |
--- a/base/tracked_objects.h |
+++ b/base/tracked_objects.h |
@@ -21,7 +21,6 @@ |
#include "base/debug/debugging_flags.h" |
#include "base/debug/thread_heap_usage_tracker.h" |
#include "base/gtest_prod_util.h" |
-#include "base/lazy_instance.h" |
#include "base/location.h" |
#include "base/macros.h" |
#include "base/process/process_handle.h" |
@@ -126,7 +125,7 @@ struct TrackingInfo; |
// ThreadData instance has a pointer to the next one. A static member of |
// ThreadData provides a pointer to the first item on this global list, and |
// access via that all_thread_data_list_head_ item requires the use of the |
-// list_lock_. |
+// ListLock(). |
// |
// When new ThreadData instances are added to the global list, they are pre- |
// pended, which ensures that any prior acquisition of the list is valid (i.e., |
@@ -716,28 +715,31 @@ class BASE_EXPORT ThreadData { |
// Linked list of ThreadData instances that were associated with threads that |
// have been terminated and that have not been associated with a new thread |
- // since then. This is only accessed while |list_lock_| is held. |
+ // since then. This is only accessed while |ListLock()| is held. |
static ThreadData* first_retired_thread_data_; |
// Link to the most recently created instance (starts a null terminated list). |
// The list is traversed by about:profiler when it needs to snapshot data. |
- // This is only accessed while list_lock_ is held. |
+ // This is only accessed while ListLock() is held. |
static ThreadData* all_thread_data_list_head_; |
// The number of times TLS has called us back to cleanup a ThreadData |
- // instance. This is only accessed while list_lock_ is held. |
+ // instance. This is only accessed while ListLock() is held. |
static int cleanup_count_; |
// Incarnation sequence number, indicating how many times (during unittests) |
// we've either transitioned out of UNINITIALIZED, or into that state. This |
- // value is only accessed while the list_lock_ is held. |
+ // value is only accessed while the ListLock() is held. |
static int incarnation_counter_; |
// Protection for access to all_thread_data_list_head_, and to |
// unregistered_thread_data_pool_. This lock is leaked at shutdown. |
// The lock is very infrequently used, so we can afford to just make a lazy |
// instance and be safe. |
- static base::LazyInstance<base::Lock>::Leaky list_lock_; |
+ static base::Lock* ListLock() { |
+ static auto lock = new base::Lock(); |
+ return lock; |
+ } |
// We set status_ to SHUTDOWN when we shut down the tracking service. |
static base::subtle::Atomic32 status_; |