| Index: content/child/child_discardable_shared_memory_manager.cc
|
| diff --git a/content/child/child_discardable_shared_memory_manager.cc b/content/child/child_discardable_shared_memory_manager.cc
|
| index 961733170d578d2a5e23057504a4f822be513589..f3533dad37d97c2a036c8a4241bc6ce22b8621b5 100644
|
| --- a/content/child/child_discardable_shared_memory_manager.cc
|
| +++ b/content/child/child_discardable_shared_memory_manager.cc
|
| @@ -13,6 +13,8 @@
|
| #include "base/process/memory.h"
|
| #include "base/process/process_metrics.h"
|
| #include "base/strings/string_number_conversions.h"
|
| +#include "base/thread_task_runner_handle.h"
|
| +#include "base/trace_event/memory_dump_manager.h"
|
| #include "base/trace_event/trace_event.h"
|
| #include "content/common/child_process_messages.h"
|
|
|
| @@ -27,6 +29,8 @@ const size_t kAllocationSize = 32 * 1024 * 1024;
|
| const size_t kAllocationSize = 4 * 1024 * 1024;
|
| #endif
|
|
|
| +const char kMemoryDumperFriendlyName[] = "Discardable";
|
| +
|
| // Global atomic to generate unique discardable shared memory IDs.
|
| base::StaticAtomicSequenceNumber g_next_discardable_shared_memory_id;
|
|
|
| @@ -82,10 +86,16 @@ void SendDeletedDiscardableSharedMemoryMessage(
|
|
|
| ChildDiscardableSharedMemoryManager::ChildDiscardableSharedMemoryManager(
|
| ThreadSafeSender* sender)
|
| - : heap_(base::GetPageSize()), sender_(sender) {
|
| + : MemoryDumpProvider(base::ThreadTaskRunnerHandle::Get()),
|
| + heap_(base::GetPageSize()),
|
| + sender_(sender) {
|
| + base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
|
| + this);
|
| }
|
|
|
| ChildDiscardableSharedMemoryManager::~ChildDiscardableSharedMemoryManager() {
|
| + base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider(
|
| + this);
|
| // TODO(reveman): Determine if this DCHECK can be enabled. crbug.com/430533
|
| // DCHECK_EQ(heap_.GetSize(), heap_.GetSizeOfFreeLists());
|
| if (heap_.GetSize())
|
| @@ -189,6 +199,15 @@ ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
|
| return make_scoped_ptr(new DiscardableMemoryImpl(this, new_span.Pass()));
|
| }
|
|
|
| +bool ChildDiscardableSharedMemoryManager::DumpInto(
|
| + base::trace_event::ProcessMemoryDump* pmd) {
|
| + return heap_.DumpMemoryStatisticsInto(pmd);
|
| +}
|
| +
|
| +const char* ChildDiscardableSharedMemoryManager::GetFriendlyName() const {
|
| + return kMemoryDumperFriendlyName;
|
| +}
|
| +
|
| void ChildDiscardableSharedMemoryManager::ReleaseFreeMemory() {
|
| base::AutoLock lock(lock_);
|
|
|
|
|