Chromium Code Reviews| Index: base/trace_event/memory_dump_manager.cc |
| diff --git a/base/trace_event/memory_dump_manager.cc b/base/trace_event/memory_dump_manager.cc |
| index 31016f970e3155cd18d749595d5dc432d38c5486..536b21aae0defd11c30e76d1cee2515ef0846ae4 100644 |
| --- a/base/trace_event/memory_dump_manager.cc |
| +++ b/base/trace_event/memory_dump_manager.cc |
| @@ -155,9 +155,7 @@ void MemoryDumpManager::SetInstanceForTesting(MemoryDumpManager* instance) { |
| } |
| MemoryDumpManager::MemoryDumpManager() |
| - : delegate_(nullptr), |
| - is_coordinator_(false), |
| - memory_tracing_enabled_(0), |
| + : memory_tracing_enabled_(0), |
| tracing_process_id_(kInvalidTracingProcessId), |
| dumper_registrations_ignored_for_testing_(false), |
| heap_profiling_enabled_(false) { |
| @@ -214,14 +212,13 @@ void MemoryDumpManager::EnableHeapProfilingIfNeeded() { |
| heap_profiling_enabled_ = true; |
| } |
| -void MemoryDumpManager::Initialize(MemoryDumpManagerDelegate* delegate, |
| - bool is_coordinator) { |
| +void MemoryDumpManager::Initialize( |
| + std::unique_ptr<MemoryDumpManagerDelegate> delegate) { |
| { |
| AutoLock lock(lock_); |
| DCHECK(delegate); |
| DCHECK(!delegate_); |
| - delegate_ = delegate; |
| - is_coordinator_ = is_coordinator; |
| + delegate_.swap(delegate); |
|
Primiano Tucci (use gerrit)
2017/03/13 21:31:10
delegate_ = std::move(delegate) is the new, sexy,
chiniforooshan
2017/03/14 16:06:36
Done.
|
| EnableHeapProfilingIfNeeded(); |
| } |
| @@ -460,21 +457,10 @@ void MemoryDumpManager::RequestGlobalDump( |
| TRACE_ID_MANGLE(guid)); |
| MemoryDumpCallback wrapped_callback = Bind(&OnGlobalDumpDone, callback); |
| - // Technically there is no need to grab the |lock_| here as the delegate is |
| - // long-lived and can only be set by Initialize(), which is locked and |
| - // necessarily happens before memory_tracing_enabled_ == true. |
| - // Not taking the |lock_|, though, is lakely make TSan barf and, at this point |
| - // (memory-infra is enabled) we're not in the fast-path anymore. |
| - MemoryDumpManagerDelegate* delegate; |
| - { |
| - AutoLock lock(lock_); |
| - delegate = delegate_; |
| - } |
| - |
| // The delegate will coordinate the IPC broadcast and at some point invoke |
| // CreateProcessDump() to get a dump for the current process. |
| MemoryDumpRequestArgs args = {guid, dump_type, level_of_detail}; |
| - delegate->RequestGlobalMemoryDump(args, wrapped_callback); |
| + delegate_->RequestGlobalMemoryDump(args, wrapped_callback); |
| } |
| void MemoryDumpManager::RequestGlobalDump( |
| @@ -862,7 +848,7 @@ void MemoryDumpManager::OnTraceLogEnabled() { |
| dump_scheduler_->NotifyPollingSupported(); |
| // Only coordinator process triggers periodic global memory dumps. |
| - if (is_coordinator_) |
| + if (delegate_->IsCoordinator()) |
| dump_scheduler_->NotifyPeriodicTriggerSupported(); |
| } |
| @@ -907,10 +893,6 @@ bool MemoryDumpManager::IsDumpModeAllowed(MemoryDumpLevelOfDetail dump_mode) { |
| return session_state_->IsDumpModeAllowed(dump_mode); |
| } |
| -uint64_t MemoryDumpManager::GetTracingProcessId() const { |
| - return delegate_->GetTracingProcessId(); |
| -} |
| - |
| MemoryDumpManager::MemoryDumpProviderInfo::MemoryDumpProviderInfo( |
| MemoryDumpProvider* dump_provider, |
| const char* name, |