Index: content/child/web_process_memory_dump_impl.cc |
diff --git a/content/child/web_process_memory_dump_impl.cc b/content/child/web_process_memory_dump_impl.cc |
deleted file mode 100644 |
index c96c3f2b544807dac10db4a14b59783d01ff0d1b..0000000000000000000000000000000000000000 |
--- a/content/child/web_process_memory_dump_impl.cc |
+++ /dev/null |
@@ -1,186 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "content/child/web_process_memory_dump_impl.h" |
- |
-#include <stddef.h> |
- |
-#include "base/memory/discardable_memory.h" |
-#include "base/strings/stringprintf.h" |
-#include "base/trace_event/heap_profiler_heap_dump_writer.h" |
-#include "base/trace_event/process_memory_dump.h" |
-#include "base/trace_event/trace_event_argument.h" |
-#include "base/trace_event/trace_event_memory_overhead.h" |
-#include "content/child/web_memory_allocator_dump_impl.h" |
-#include "skia/ext/skia_trace_memory_dump_impl.h" |
- |
-namespace content { |
- |
-WebProcessMemoryDumpImpl::WebProcessMemoryDumpImpl() |
- : owned_process_memory_dump_( |
- new base::trace_event::ProcessMemoryDump(nullptr)), |
- process_memory_dump_(owned_process_memory_dump_.get()), |
- level_of_detail_(base::trace_event::MemoryDumpLevelOfDetail::DETAILED) {} |
- |
-WebProcessMemoryDumpImpl::WebProcessMemoryDumpImpl( |
- base::trace_event::MemoryDumpLevelOfDetail level_of_detail, |
- base::trace_event::ProcessMemoryDump* process_memory_dump) |
- : process_memory_dump_(process_memory_dump), |
- level_of_detail_(level_of_detail) {} |
- |
-WebProcessMemoryDumpImpl::~WebProcessMemoryDumpImpl() { |
-} |
- |
-blink::WebMemoryAllocatorDump* |
-WebProcessMemoryDumpImpl::createMemoryAllocatorDump( |
- const blink::WebString& absolute_name) { |
- // Get a MemoryAllocatorDump from the base/ object. |
- base::trace_event::MemoryAllocatorDump* memory_allocator_dump = |
- process_memory_dump_->CreateAllocatorDump(absolute_name.utf8()); |
- |
- return createWebMemoryAllocatorDump(memory_allocator_dump); |
-} |
- |
-blink::WebMemoryAllocatorDump* |
-WebProcessMemoryDumpImpl::createMemoryAllocatorDump( |
- const blink::WebString& absolute_name, |
- blink::WebMemoryAllocatorDumpGuid guid) { |
- // Get a MemoryAllocatorDump from the base/ object with given guid. |
- base::trace_event::MemoryAllocatorDump* memory_allocator_dump = |
- process_memory_dump_->CreateAllocatorDump( |
- absolute_name.utf8(), |
- base::trace_event::MemoryAllocatorDumpGuid(guid)); |
- return createWebMemoryAllocatorDump(memory_allocator_dump); |
-} |
- |
-blink::WebMemoryAllocatorDump* |
-WebProcessMemoryDumpImpl::createWebMemoryAllocatorDump( |
- base::trace_event::MemoryAllocatorDump* memory_allocator_dump) { |
- if (!memory_allocator_dump) |
- return nullptr; |
- |
- // Wrap it and return to blink. |
- WebMemoryAllocatorDumpImpl* web_memory_allocator_dump_impl = |
- new WebMemoryAllocatorDumpImpl(memory_allocator_dump); |
- |
- // memory_allocator_dumps_ will take ownership of |
- // |web_memory_allocator_dumpd_impl|. |
- memory_allocator_dumps_.set(memory_allocator_dump, |
- make_scoped_ptr(web_memory_allocator_dump_impl)); |
- return web_memory_allocator_dump_impl; |
-} |
- |
-blink::WebMemoryAllocatorDump* WebProcessMemoryDumpImpl::getMemoryAllocatorDump( |
- const blink::WebString& absolute_name) const { |
- // Retrieve the base MemoryAllocatorDump object and then reverse lookup |
- // its wrapper. |
- base::trace_event::MemoryAllocatorDump* memory_allocator_dump = |
- process_memory_dump_->GetAllocatorDump(absolute_name.utf8()); |
- if (!memory_allocator_dump) |
- return nullptr; |
- |
- // The only case of (memory_allocator_dump && !web_memory_allocator_dump) |
- // is something from blink trying to get a MAD that was created from chromium, |
- // which is an odd use case. |
- blink::WebMemoryAllocatorDump* web_memory_allocator_dump = |
- memory_allocator_dumps_.get(memory_allocator_dump); |
- DCHECK(web_memory_allocator_dump); |
- return web_memory_allocator_dump; |
-} |
- |
-void WebProcessMemoryDumpImpl::clear() { |
- // Clear all the WebMemoryAllocatorDump wrappers. |
- memory_allocator_dumps_.clear(); |
- |
- // Clear the actual MemoryAllocatorDump objects from the underlying PMD. |
- process_memory_dump_->Clear(); |
-} |
- |
-void WebProcessMemoryDumpImpl::takeAllDumpsFrom( |
- blink::WebProcessMemoryDump* other) { |
- auto other_impl = static_cast<WebProcessMemoryDumpImpl*>(other); |
- // WebProcessMemoryDumpImpl is a container of WebMemoryAllocatorDump(s) which |
- // in turn are wrappers of base::trace_event::MemoryAllocatorDump(s). |
- // In order to expose the move and ownership transfer semantics of the |
- // underlying ProcessMemoryDump, we need to: |
- |
- // 1) Move and transfer the ownership of the wrapped |
- // base::trace_event::MemoryAllocatorDump(s) instances. |
- process_memory_dump_->TakeAllDumpsFrom(other_impl->process_memory_dump_); |
- |
- // 2) Move and transfer the ownership of the WebMemoryAllocatorDump wrappers. |
- const size_t expected_final_size = memory_allocator_dumps_.size() + |
- other_impl->memory_allocator_dumps_.size(); |
- while (!other_impl->memory_allocator_dumps_.empty()) { |
- auto first_entry = other_impl->memory_allocator_dumps_.begin(); |
- base::trace_event::MemoryAllocatorDump* memory_allocator_dump = |
- first_entry->first; |
- memory_allocator_dumps_.set( |
- memory_allocator_dump, |
- other_impl->memory_allocator_dumps_.take_and_erase(first_entry)); |
- } |
- DCHECK_EQ(expected_final_size, memory_allocator_dumps_.size()); |
- DCHECK(other_impl->memory_allocator_dumps_.empty()); |
-} |
- |
-void WebProcessMemoryDumpImpl::addOwnershipEdge( |
- blink::WebMemoryAllocatorDumpGuid source, |
- blink::WebMemoryAllocatorDumpGuid target, |
- int importance) { |
- process_memory_dump_->AddOwnershipEdge( |
- base::trace_event::MemoryAllocatorDumpGuid(source), |
- base::trace_event::MemoryAllocatorDumpGuid(target), importance); |
-} |
- |
-void WebProcessMemoryDumpImpl::addOwnershipEdge( |
- blink::WebMemoryAllocatorDumpGuid source, |
- blink::WebMemoryAllocatorDumpGuid target) { |
- process_memory_dump_->AddOwnershipEdge( |
- base::trace_event::MemoryAllocatorDumpGuid(source), |
- base::trace_event::MemoryAllocatorDumpGuid(target)); |
-} |
- |
-void WebProcessMemoryDumpImpl::addSuballocation( |
- blink::WebMemoryAllocatorDumpGuid source, |
- const blink::WebString& target_node_name) { |
- process_memory_dump_->AddSuballocation( |
- base::trace_event::MemoryAllocatorDumpGuid(source), |
- target_node_name.utf8()); |
-} |
- |
-SkTraceMemoryDump* WebProcessMemoryDumpImpl::createDumpAdapterForSkia( |
- const blink::WebString& dump_name_prefix) { |
- sk_trace_dump_list_.push_back(new skia::SkiaTraceMemoryDumpImpl( |
- dump_name_prefix.utf8(), level_of_detail_, process_memory_dump_)); |
- return sk_trace_dump_list_.back(); |
-} |
- |
-blink::WebMemoryAllocatorDump* |
-WebProcessMemoryDumpImpl::CreateDiscardableMemoryAllocatorDump( |
- const std::string& name, |
- base::DiscardableMemory* discardable) { |
- base::trace_event::MemoryAllocatorDump* dump = |
- discardable->CreateMemoryAllocatorDump(name.c_str(), |
- process_memory_dump_); |
- return createWebMemoryAllocatorDump(dump); |
-} |
- |
-void WebProcessMemoryDumpImpl::dumpHeapUsage( |
- const base::hash_map<base::trace_event::AllocationContext, size_t>& |
- bytes_by_context, |
- base::trace_event::TraceEventMemoryOverhead& overhead, |
- const char* allocator_name) { |
- scoped_refptr<base::trace_event::MemoryDumpSessionState> session_state = |
- process_memory_dump_->session_state(); |
- scoped_refptr<base::trace_event::TracedValue> heap_dump = ExportHeapDump( |
- bytes_by_context, |
- session_state->stack_frame_deduplicator(), |
- session_state->type_name_deduplicator()); |
- process_memory_dump_->AddHeapDump(allocator_name, heap_dump); |
- std::string base_name = base::StringPrintf("tracing/heap_profiler_%s", |
- allocator_name); |
- overhead.DumpInto(base_name.c_str(), process_memory_dump_); |
-} |
- |
-} // namespace content |