Chromium Code Reviews| Index: content/common/discardable_shared_memory_heap.cc |
| diff --git a/content/common/discardable_shared_memory_heap.cc b/content/common/discardable_shared_memory_heap.cc |
| index 36ee632255329506570831c90bc23287cad00580..0ce039f872b72270e05dc0ffbfc7711899786956 100644 |
| --- a/content/common/discardable_shared_memory_heap.cc |
| +++ b/content/common/discardable_shared_memory_heap.cc |
| @@ -7,6 +7,7 @@ |
| #include <algorithm> |
| #include "base/memory/discardable_shared_memory.h" |
| +#include "base/strings/stringprintf.h" |
| namespace content { |
| namespace { |
| @@ -212,6 +213,37 @@ size_t DiscardableSharedMemoryHeap::GetSizeOfFreeLists() const { |
| return num_free_blocks_ * block_size_; |
| } |
| +bool DiscardableSharedMemoryHeap::DumpMemoryStatisticsInto( |
| + base::trace_event::ProcessMemoryDump* pmd) { |
| + for (size_t segment = 0; segment < memory_segments_.size(); segment++) { |
|
reveman
2015/04/24 14:19:36
Would be nice to do something c++-ish like Release
ssid
2015/04/27 11:19:20
Thanks done.
|
| + std::string segment_id = base::StringPrintf("segment_%zu", segment); |
|
reveman
2015/04/24 14:19:36
nit: maybe move "segment" string to a kMemoryAlloc
ssid
2015/04/27 11:19:20
Done.
|
| + base::trace_event::MemoryAllocatorDump* segment_dump = |
| + pmd->CreateAllocatorDump("discardable", segment_id.c_str()); |
|
reveman
2015/04/24 14:19:36
nit: and maybe move this string to a kMemoryAlloca
ssid
2015/04/27 11:19:20
Done.
|
| + |
| + size_t num_of_objects = 0; |
|
reveman
2015/04/24 14:19:36
nit: allocated_objects_count
Might as well keep t
ssid
2015/04/27 11:19:20
Done.
|
| + size_t used_size = 0; |
|
reveman
2015/04/24 14:19:36
nit: allocated_objects_size_in_bytes
ssid
2015/04/27 11:19:20
Done.
|
| + size_t offset = reinterpret_cast<size_t>( |
| + memory_segments_[segment]->shared_memory_->memory()) / |
| + block_size_; |
| + size_t end = offset + memory_segments_[segment]->size_ / block_size_; |
| + while (offset < end) { |
| + Span* span = spans_[offset]; |
| + if (!IsInFreeList(span)) { |
| + num_of_objects++; |
| + used_size += span->length_; |
| + } |
| + offset += span->length_; |
| + } |
| + |
| + segment_dump->set_physical_size_in_bytes( |
| + static_cast<int>(memory_segments_[segment]->size_)); |
| + segment_dump->set_allocated_objects_count(static_cast<int>(num_of_objects)); |
| + segment_dump->set_allocated_objects_size_in_bytes( |
| + static_cast<int>(used_size)); |
| + } |
| + return true; |
| +} |
| + |
| void DiscardableSharedMemoryHeap::InsertIntoFreeList( |
| scoped_ptr<DiscardableSharedMemoryHeap::Span> span) { |
| DCHECK(!IsInFreeList(span.get())); |