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

Unified Diff: content/child/child_discardable_shared_memory_manager.cc

Issue 1100073004: Adding discardable memory dump provider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing tests. Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
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..e4bc5a0fe8bd5101f491ed8196cf7e0665adb965 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())
@@ -170,7 +180,7 @@ ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
// Create span for allocated memory.
scoped_ptr<DiscardableSharedMemoryHeap::Span> new_span(heap_.Grow(
- shared_memory.Pass(), allocation_size_in_bytes,
+ shared_memory.Pass(), allocation_size_in_bytes, new_id,
base::Bind(&SendDeletedDiscardableSharedMemoryMessage, sender_, new_id)));
// Unlock and insert any left over memory into free lists.
@@ -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_.DumpInto(pmd);
+}
+
+const char* ChildDiscardableSharedMemoryManager::GetFriendlyName() const {
+ return kMemoryDumperFriendlyName;
+}
+
void ChildDiscardableSharedMemoryManager::ReleaseFreeMemory() {
base::AutoLock lock(lock_);

Powered by Google App Engine
This is Rietveld 408576698