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 958fa82554efecf5d9c4dee25bb6206cf7e891c9..fe3912cad2fc599afe9bfd468a63bad06e584e45 100644 |
| --- a/content/common/discardable_shared_memory_heap.cc |
| +++ b/content/common/discardable_shared_memory_heap.cc |
| @@ -60,6 +60,24 @@ bool DiscardableSharedMemoryHeap::ScopedMemorySegment::IsResident() const { |
| return heap_->IsMemoryResident(shared_memory_.get()); |
| } |
| +base::trace_event::MemoryAllocatorDump* |
| +DiscardableSharedMemoryHeap::ScopedMemorySegment::CreateMemoryAllocatorDump( |
| + Span* span, |
| + const char* name, |
| + base::trace_event::ProcessMemoryDump* pmd) const { |
| + if (shared_memory_ != span->shared_memory()) |
| + return nullptr; |
| + |
| + base::trace_event::MemoryAllocatorDump* dump = pmd->CreateAllocatorDump(name); |
| + dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize, |
| + base::trace_event::MemoryAllocatorDump::kUnitsBytes, |
| + static_cast<uint64_t>(span->length())); |
| + |
| + pmd->AddSuballocation(dump->guid(), |
| + base::StringPrintf("discardable/segment_%d", id_)); |
| + return dump; |
| +} |
| + |
| void DiscardableSharedMemoryHeap::ScopedMemorySegment::OnMemoryDump( |
| base::trace_event::ProcessMemoryDump* pmd) const { |
| heap_->OnMemoryDump(shared_memory_.get(), size_, id_, pmd); |
| @@ -398,4 +416,27 @@ DiscardableSharedMemoryHeap::GetSegmentGUIDForTracing(uint64 tracing_process_id, |
| "discardable-x-process/%" PRIx64 "/%d", tracing_process_id, segment_id)); |
| } |
| +base::trace_event::MemoryAllocatorDump* |
| +DiscardableSharedMemoryHeap::CreateMemoryAllocatorDump( |
| + Span* span, |
| + const char* name, |
| + base::trace_event::ProcessMemoryDump* pmd) const { |
| + if (span->shared_memory() == nullptr) |
|
reveman
2015/08/21 18:05:24
nit: !span->shared_memory()
ssid
2015/08/24 14:52:10
Done.
|
| + return nullptr; |
| + |
| + base::trace_event::MemoryAllocatorDump* allocator_dump; |
| + std::for_each( |
|
reveman
2015/08/21 18:05:24
can you instead do a std:::find_if for span->share
ssid
2015/08/21 19:02:30
I cannot do it because I have to match the span->s
reveman
2015/08/22 14:21:16
How about adding a "bool ScopedMemorySegment::Cont
ssid
2015/08/22 14:50:19
Yes I planned that at first, but I also need to ad
reveman
2015/08/22 15:04:07
I was thinking you could use the ScopedMemorySegme
ssid
2015/08/22 15:13:00
Ah sorry, I see what you meant now, sounds good, t
ssid
2015/08/24 14:52:10
Done.
|
| + memory_segments_.begin(), memory_segments_.end(), |
| + [span, name, pmd, &allocator_dump](const ScopedMemorySegment* segment) { |
| + base::trace_event::MemoryAllocatorDump* dump = |
| + segment->CreateMemoryAllocatorDump(span, name, pmd); |
| + if (dump != nullptr) |
| + allocator_dump = dump; |
| + }); |
| + |
| + // Span with a shared memory should be found in some segment. |
| + DCHECK(allocator_dump != nullptr); |
| + return allocator_dump; |
| +} |
| + |
| } // namespace content |