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 56cc9023a8191174801dd6686b4999639eb3b992..35b27d9a03a0a0212b0f807e83068881f3d4395b 100644 |
--- a/base/trace_event/memory_dump_manager.cc |
+++ b/base/trace_event/memory_dump_manager.cc |
@@ -11,6 +11,7 @@ |
#include "base/base_switches.h" |
#include "base/command_line.h" |
#include "base/compiler_specific.h" |
+#include "base/memory/ptr_util.h" |
#include "base/thread_task_runner_handle.h" |
#include "base/threading/thread.h" |
#include "base/trace_event/heap_profiler_allocation_context_tracker.h" |
@@ -81,7 +82,7 @@ void OnGlobalDumpDone(MemoryDumpCallback wrapped_callback, |
// Proxy class which wraps a ConvertableToTraceFormat owned by the |
// |session_state| into a proxy object that can be added to the trace event log. |
// This is to solve the problem that the MemoryDumpSessionState is refcounted |
-// but the tracing subsystem wants a scoped_ptr<ConvertableToTraceFormat>. |
+// but the tracing subsystem wants a std::unique_ptr<ConvertableToTraceFormat>. |
template <typename T> |
struct SessionStateConvertableProxy : public ConvertableToTraceFormat { |
using GetterFunctPtr = T* (MemoryDumpSessionState::*)() const; |
@@ -267,14 +268,14 @@ void MemoryDumpManager::UnregisterDumpProvider(MemoryDumpProvider* mdp) { |
} |
void MemoryDumpManager::UnregisterAndDeleteDumpProviderSoon( |
- scoped_ptr<MemoryDumpProvider> mdp) { |
+ std::unique_ptr<MemoryDumpProvider> mdp) { |
UnregisterDumpProviderInternal(mdp.release(), true /* delete_async */); |
} |
void MemoryDumpManager::UnregisterDumpProviderInternal( |
MemoryDumpProvider* mdp, |
bool take_mdp_ownership_and_delete_async) { |
- scoped_ptr<MemoryDumpProvider> owned_mdp; |
+ std::unique_ptr<MemoryDumpProvider> owned_mdp; |
if (take_mdp_ownership_and_delete_async) |
owned_mdp.reset(mdp); |
@@ -370,7 +371,7 @@ void MemoryDumpManager::CreateProcessDump(const MemoryDumpRequestArgs& args, |
TRACE_EVENT_NESTABLE_ASYNC_BEGIN0(kTraceCategory, "ProcessMemoryDump", |
TRACE_ID_MANGLE(args.dump_guid)); |
- scoped_ptr<ProcessMemoryDumpAsyncState> pmd_async_state; |
+ std::unique_ptr<ProcessMemoryDumpAsyncState> pmd_async_state; |
{ |
AutoLock lock(lock_); |
// |dump_thread_| can be nullptr is tracing was disabled before reaching |
@@ -400,7 +401,7 @@ void MemoryDumpManager::CreateProcessDump(const MemoryDumpRequestArgs& args, |
// |lock_| is used in these functions purely to ensure consistency w.r.t. |
// (un)registrations of |dump_providers_|. |
void MemoryDumpManager::SetupNextMemoryDump( |
- scoped_ptr<ProcessMemoryDumpAsyncState> pmd_async_state) { |
+ std::unique_ptr<ProcessMemoryDumpAsyncState> pmd_async_state) { |
// Initalizes the ThreadLocalEventBuffer to guarantee that the TRACE_EVENTs |
// in the PostTask below don't end up registering their own dump providers |
// (for discounting trace memory overhead) while holding the |lock_|. |
@@ -482,7 +483,7 @@ void MemoryDumpManager::InvokeOnMemoryDump( |
// Unfortunately, PostTask() destroys the scoped_ptr arguments upon failure |
// to prevent accidental leaks. Using a scoped_ptr would prevent us to to |
// skip the hop and move on. Hence the manual naked -> scoped ptr juggling. |
- auto pmd_async_state = make_scoped_ptr(owned_pmd_async_state); |
+ auto pmd_async_state = WrapUnique(owned_pmd_async_state); |
owned_pmd_async_state = nullptr; |
// Read MemoryDumpProviderInfo thread safety considerations in |
@@ -535,7 +536,7 @@ void MemoryDumpManager::InvokeOnMemoryDump( |
// static |
void MemoryDumpManager::FinalizeDumpAndAddToTrace( |
- scoped_ptr<ProcessMemoryDumpAsyncState> pmd_async_state) { |
+ std::unique_ptr<ProcessMemoryDumpAsyncState> pmd_async_state) { |
DCHECK(pmd_async_state->pending_dump_providers.empty()); |
const uint64_t dump_guid = pmd_async_state->req_args.dump_guid; |
if (!pmd_async_state->callback_task_runner->BelongsToCurrentThread()) { |
@@ -554,7 +555,7 @@ void MemoryDumpManager::FinalizeDumpAndAddToTrace( |
for (const auto& kv : pmd_async_state->process_dumps) { |
ProcessId pid = kv.first; // kNullProcessId for the current process. |
ProcessMemoryDump* process_memory_dump = kv.second.get(); |
- scoped_ptr<TracedValue> traced_value(new TracedValue); |
+ std::unique_ptr<TracedValue> traced_value(new TracedValue); |
process_memory_dump->AsValueInto(traced_value.get()); |
traced_value->SetString("level_of_detail", |
MemoryDumpLevelOfDetailToString( |
@@ -562,7 +563,8 @@ void MemoryDumpManager::FinalizeDumpAndAddToTrace( |
const char* const event_name = |
MemoryDumpTypeToString(pmd_async_state->req_args.dump_type); |
- scoped_ptr<ConvertableToTraceFormat> event_value(std::move(traced_value)); |
+ std::unique_ptr<ConvertableToTraceFormat> event_value( |
+ std::move(traced_value)); |
TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_PROCESS_ID( |
TRACE_EVENT_PHASE_MEMORY_DUMP, |
TraceLog::GetCategoryGroupEnabled(kTraceCategory), event_name, |
@@ -598,7 +600,7 @@ void MemoryDumpManager::OnTraceLogEnabled() { |
TraceLog::GetInstance()->InitializeThreadLocalEventBufferIfSupported(); |
// Spin-up the thread used to invoke unbound dump providers. |
- scoped_ptr<Thread> dump_thread(new Thread("MemoryInfra")); |
+ std::unique_ptr<Thread> dump_thread(new Thread("MemoryInfra")); |
if (!dump_thread->Start()) { |
LOG(ERROR) << "Failed to start the memory-infra thread for tracing"; |
return; |
@@ -614,15 +616,15 @@ void MemoryDumpManager::OnTraceLogEnabled() { |
// deduplicator will be in use. Add a metadata events to write the frames |
// and type IDs. |
session_state_->SetStackFrameDeduplicator( |
- make_scoped_ptr(new StackFrameDeduplicator)); |
+ WrapUnique(new StackFrameDeduplicator)); |
session_state_->SetTypeNameDeduplicator( |
- make_scoped_ptr(new TypeNameDeduplicator)); |
+ WrapUnique(new TypeNameDeduplicator)); |
TRACE_EVENT_API_ADD_METADATA_EVENT( |
TraceLog::GetCategoryGroupEnabled("__metadata"), "stackFrames", |
"stackFrames", |
- make_scoped_ptr( |
+ WrapUnique( |
new SessionStateConvertableProxy<StackFrameDeduplicator>( |
session_state_, |
&MemoryDumpSessionState::stack_frame_deduplicator))); |
@@ -630,7 +632,7 @@ void MemoryDumpManager::OnTraceLogEnabled() { |
TRACE_EVENT_API_ADD_METADATA_EVENT( |
TraceLog::GetCategoryGroupEnabled("__metadata"), "typeNames", |
"typeNames", |
- make_scoped_ptr(new SessionStateConvertableProxy<TypeNameDeduplicator>( |
+ WrapUnique(new SessionStateConvertableProxy<TypeNameDeduplicator>( |
session_state_, &MemoryDumpSessionState::type_name_deduplicator))); |
} |
@@ -682,7 +684,7 @@ void MemoryDumpManager::OnTraceLogDisabled() { |
// ensure that the MDM state which depends on the tracing enabled / disabled |
// state is always accessed by the dumping methods holding the |lock_|. |
subtle::NoBarrier_Store(&memory_tracing_enabled_, 0); |
- scoped_ptr<Thread> dump_thread; |
+ std::unique_ptr<Thread> dump_thread; |
{ |
AutoLock lock(lock_); |
dump_thread = std::move(dump_thread_); |
@@ -749,7 +751,8 @@ ProcessMemoryDump* MemoryDumpManager::ProcessMemoryDumpAsyncState:: |
GetOrCreateMemoryDumpContainerForProcess(ProcessId pid) { |
auto iter = process_dumps.find(pid); |
if (iter == process_dumps.end()) { |
- scoped_ptr<ProcessMemoryDump> new_pmd(new ProcessMemoryDump(session_state)); |
+ std::unique_ptr<ProcessMemoryDump> new_pmd( |
+ new ProcessMemoryDump(session_state)); |
iter = process_dumps.insert(std::make_pair(pid, std::move(new_pmd))).first; |
} |
return iter->second.get(); |