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

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

Issue 1124493002: Cleanup: given that TLS slot can't fail to initialize, remove bool return values (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@parchild
Patch Set: Created 5 years, 7 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_event_memory.h" 5 #include "base/trace_event/trace_event_memory.h"
6 6
7 #include "base/debug/leak_annotations.h" 7 #include "base/debug/leak_annotations.h"
8 #include "base/lazy_instance.h" 8 #include "base/lazy_instance.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 63
64 // Pointer to a TraceMemoryStack per thread. 64 // Pointer to a TraceMemoryStack per thread.
65 base::ThreadLocalStorage::StaticSlot tls_trace_memory_stack = TLS_INITIALIZER; 65 base::ThreadLocalStorage::StaticSlot tls_trace_memory_stack = TLS_INITIALIZER;
66 66
67 // Clean up memory pointed to by our thread-local storage. 67 // Clean up memory pointed to by our thread-local storage.
68 void DeleteStackOnThreadCleanup(void* value) { 68 void DeleteStackOnThreadCleanup(void* value) {
69 TraceMemoryStack* stack = static_cast<TraceMemoryStack*>(value); 69 TraceMemoryStack* stack = static_cast<TraceMemoryStack*>(value);
70 delete stack; 70 delete stack;
71 } 71 }
72 72
73 // Initializes the thread-local TraceMemoryStack pointer. Returns true on 73 // Initializes the thread-local TraceMemoryStack pointer.
74 // success or if it is already initialized. 74 void InitThreadLocalStorage() {
75 bool InitThreadLocalStorage() {
76 if (tls_trace_memory_stack.initialized()) 75 if (tls_trace_memory_stack.initialized())
77 return true; 76 return;
78 // Initialize the thread-local storage key, returning true on success. 77 // Initialize the thread-local storage key.
79 return tls_trace_memory_stack.Initialize(&DeleteStackOnThreadCleanup); 78 tls_trace_memory_stack.Initialize(&DeleteStackOnThreadCleanup);
80 } 79 }
81 80
82 // Clean up thread-local-storage in the main thread. 81 // Clean up thread-local-storage in the main thread.
83 void CleanupThreadLocalStorage() { 82 void CleanupThreadLocalStorage() {
84 if (!tls_trace_memory_stack.initialized()) 83 if (!tls_trace_memory_stack.initialized())
85 return; 84 return;
86 TraceMemoryStack* stack = 85 TraceMemoryStack* stack =
87 static_cast<TraceMemoryStack*>(tls_trace_memory_stack.Get()); 86 static_cast<TraceMemoryStack*>(tls_trace_memory_stack.Get());
88 delete stack; 87 delete stack;
89 tls_trace_memory_stack.Set(NULL); 88 tls_trace_memory_stack.Set(NULL);
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 FROM_HERE, 188 FROM_HERE,
190 base::Bind(&TraceMemoryController::StopProfiling, 189 base::Bind(&TraceMemoryController::StopProfiling,
191 weak_factory_.GetWeakPtr())); 190 weak_factory_.GetWeakPtr()));
192 } 191 }
193 192
194 void TraceMemoryController::StartProfiling() { 193 void TraceMemoryController::StartProfiling() {
195 // Watch for the tracing framework sending enabling more than once. 194 // Watch for the tracing framework sending enabling more than once.
196 if (dump_timer_.IsRunning()) 195 if (dump_timer_.IsRunning())
197 return; 196 return;
198 DVLOG(1) << "Starting trace memory"; 197 DVLOG(1) << "Starting trace memory";
199 if (!InitThreadLocalStorage()) 198 InitThreadLocalStorage();
200 return;
201 ScopedTraceMemory::set_enabled(true); 199 ScopedTraceMemory::set_enabled(true);
202 // Call ::HeapProfilerWithPseudoStackStart(). 200 // Call ::HeapProfilerWithPseudoStackStart().
203 heap_profiler_start_function_(&GetPseudoStack); 201 heap_profiler_start_function_(&GetPseudoStack);
204 const int kDumpIntervalSeconds = 5; 202 const int kDumpIntervalSeconds = 5;
205 dump_timer_.Start(FROM_HERE, 203 dump_timer_.Start(FROM_HERE,
206 TimeDelta::FromSeconds(kDumpIntervalSeconds), 204 TimeDelta::FromSeconds(kDumpIntervalSeconds),
207 base::Bind(&TraceMemoryController::DumpMemoryProfile, 205 base::Bind(&TraceMemoryController::DumpMemoryProfile,
208 weak_factory_.GetWeakPtr())); 206 weak_factory_.GetWeakPtr()));
209 } 207 }
210 208
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 if (!base::HexStringToUInt64(hex_address, &address)) 429 if (!base::HexStringToUInt64(hex_address, &address))
432 return "error"; 430 return "error";
433 if (!address) 431 if (!address)
434 return "null"; 432 return "null";
435 // Note that this cast handles 64-bit to 32-bit conversion if necessary. 433 // Note that this cast handles 64-bit to 32-bit conversion if necessary.
436 return reinterpret_cast<const char*>(address); 434 return reinterpret_cast<const char*>(address);
437 } 435 }
438 436
439 } // namespace trace_event 437 } // namespace trace_event
440 } // namespace base 438 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698