OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "platform/PartitionAllocMemoryDumpProvider.h" | 5 #include "platform/PartitionAllocMemoryDumpProvider.h" |
6 | 6 |
7 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
8 #include "base/trace_event/heap_profiler_allocation_context.h" | 8 #include "base/trace_event/heap_profiler_allocation_context.h" |
9 #include "base/trace_event/heap_profiler_allocation_context_tracker.h" | 9 #include "base/trace_event/heap_profiler_allocation_context_tracker.h" |
10 #include "base/trace_event/heap_profiler_allocation_register.h" | 10 #include "base/trace_event/heap_profiler_allocation_register.h" |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 } | 148 } |
149 memoryDump->DumpHeapUsage(metricsByContext, overhead, "partition_alloc"); | 149 memoryDump->DumpHeapUsage(metricsByContext, overhead, "partition_alloc"); |
150 } | 150 } |
151 | 151 |
152 PartitionStatsDumperImpl partitionStatsDumper(memoryDump, levelOfDetail); | 152 PartitionStatsDumperImpl partitionStatsDumper(memoryDump, levelOfDetail); |
153 | 153 |
154 base::trace_event::MemoryAllocatorDump* partitionsDump = | 154 base::trace_event::MemoryAllocatorDump* partitionsDump = |
155 memoryDump->CreateAllocatorDump(base::StringPrintf( | 155 memoryDump->CreateAllocatorDump(base::StringPrintf( |
156 "%s/%s", kPartitionAllocDumpName, kPartitionsDumpName)); | 156 "%s/%s", kPartitionAllocDumpName, kPartitionsDumpName)); |
157 | 157 |
158 // This method calls memoryStats.partitionsDumpBucketStats with memory statist
ics. | 158 // This method calls memoryStats.partitionsDumpBucketStats with memory |
| 159 // statistics. |
159 WTF::Partitions::dumpMemoryStats( | 160 WTF::Partitions::dumpMemoryStats( |
160 levelOfDetail != MemoryDumpLevelOfDetail::DETAILED, | 161 levelOfDetail != MemoryDumpLevelOfDetail::DETAILED, |
161 &partitionStatsDumper); | 162 &partitionStatsDumper); |
162 | 163 |
163 base::trace_event::MemoryAllocatorDump* allocatedObjectsDump = | 164 base::trace_event::MemoryAllocatorDump* allocatedObjectsDump = |
164 memoryDump->CreateAllocatorDump(Partitions::kAllocatedObjectPoolName); | 165 memoryDump->CreateAllocatorDump(Partitions::kAllocatedObjectPoolName); |
165 allocatedObjectsDump->AddScalar("size", "bytes", | 166 allocatedObjectsDump->AddScalar("size", "bytes", |
166 partitionStatsDumper.totalActiveBytes()); | 167 partitionStatsDumper.totalActiveBytes()); |
167 memoryDump->AddOwnershipEdge(allocatedObjectsDump->guid(), | 168 memoryDump->AddOwnershipEdge(allocatedObjectsDump->guid(), |
168 partitionsDump->guid()); | 169 partitionsDump->guid()); |
169 | 170 |
170 return true; | 171 return true; |
171 } | 172 } |
172 | 173 |
173 // |m_allocationRegister| should be initialized only when necessary to avoid was
te of memory. | 174 // |m_allocationRegister| should be initialized only when necessary to avoid |
| 175 // waste of memory. |
174 PartitionAllocMemoryDumpProvider::PartitionAllocMemoryDumpProvider() | 176 PartitionAllocMemoryDumpProvider::PartitionAllocMemoryDumpProvider() |
175 : m_allocationRegister(nullptr), m_isHeapProfilingEnabled(false) {} | 177 : m_allocationRegister(nullptr), m_isHeapProfilingEnabled(false) {} |
176 | 178 |
177 PartitionAllocMemoryDumpProvider::~PartitionAllocMemoryDumpProvider() {} | 179 PartitionAllocMemoryDumpProvider::~PartitionAllocMemoryDumpProvider() {} |
178 | 180 |
179 void PartitionAllocMemoryDumpProvider::OnHeapProfilingEnabled(bool enabled) { | 181 void PartitionAllocMemoryDumpProvider::OnHeapProfilingEnabled(bool enabled) { |
180 if (enabled) { | 182 if (enabled) { |
181 { | 183 { |
182 MutexLocker locker(m_allocationRegisterMutex); | 184 MutexLocker locker(m_allocationRegisterMutex); |
183 if (!m_allocationRegister) | 185 if (!m_allocationRegister) |
(...skipping 20 matching lines...) Expand all Loading... |
204 m_allocationRegister->Insert(address, size, context); | 206 m_allocationRegister->Insert(address, size, context); |
205 } | 207 } |
206 | 208 |
207 void PartitionAllocMemoryDumpProvider::remove(void* address) { | 209 void PartitionAllocMemoryDumpProvider::remove(void* address) { |
208 MutexLocker locker(m_allocationRegisterMutex); | 210 MutexLocker locker(m_allocationRegisterMutex); |
209 if (m_allocationRegister) | 211 if (m_allocationRegister) |
210 m_allocationRegister->Remove(address); | 212 m_allocationRegister->Remove(address); |
211 } | 213 } |
212 | 214 |
213 } // namespace blink | 215 } // namespace blink |
OLD | NEW |