| Index: components/discardable_memory/client/client_discardable_shared_memory_manager.cc
|
| diff --git a/content/child/child_discardable_shared_memory_manager.cc b/components/discardable_memory/client/client_discardable_shared_memory_manager.cc
|
| similarity index 84%
|
| rename from content/child/child_discardable_shared_memory_manager.cc
|
| rename to components/discardable_memory/client/client_discardable_shared_memory_manager.cc
|
| index 1d1aa4c4591f0ba2aaacf3050aeb3e08ba6c4dc4..22239e13869644b0243684a01e7a3c60eea03de1 100644
|
| --- a/content/child/child_discardable_shared_memory_manager.cc
|
| +++ b/components/discardable_memory/client/client_discardable_shared_memory_manager.cc
|
| @@ -2,7 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "content/child/child_discardable_shared_memory_manager.h"
|
| +#include "components/discardable_memory/client/client_discardable_shared_memory_manager.h"
|
|
|
| #include <inttypes.h>
|
|
|
| @@ -24,9 +24,8 @@
|
| #include "base/threading/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"
|
|
|
| -namespace content {
|
| +namespace discardable_memory {
|
| namespace {
|
|
|
| // Default allocation size.
|
| @@ -37,7 +36,7 @@ base::StaticAtomicSequenceNumber g_next_discardable_shared_memory_id;
|
|
|
| class DiscardableMemoryImpl : public base::DiscardableMemory {
|
| public:
|
| - DiscardableMemoryImpl(ChildDiscardableSharedMemoryManager* manager,
|
| + DiscardableMemoryImpl(ClientDiscardableSharedMemoryManager* manager,
|
| std::unique_ptr<DiscardableSharedMemoryHeap::Span> span)
|
| : manager_(manager), span_(std::move(span)), is_locked_(true) {}
|
|
|
| @@ -76,7 +75,7 @@ class DiscardableMemoryImpl : public base::DiscardableMemory {
|
| }
|
|
|
| private:
|
| - ChildDiscardableSharedMemoryManager* const manager_;
|
| + ClientDiscardableSharedMemoryManager* const manager_;
|
| std::unique_ptr<DiscardableSharedMemoryHeap::Span> span_;
|
| bool is_locked_;
|
|
|
| @@ -84,22 +83,22 @@ class DiscardableMemoryImpl : public base::DiscardableMemory {
|
| };
|
|
|
| void SendDeletedDiscardableSharedMemoryMessage(
|
| - scoped_refptr<ThreadSafeSender> sender,
|
| + ClientDiscardableSharedMemoryManager::Delegate* delegate,
|
| DiscardableSharedMemoryId id) {
|
| - sender->Send(new ChildProcessHostMsg_DeletedDiscardableSharedMemory(id));
|
| + delegate->DeletedDiscardableSharedMemory(id);
|
| }
|
|
|
| } // namespace
|
|
|
| -ChildDiscardableSharedMemoryManager::ChildDiscardableSharedMemoryManager(
|
| - ThreadSafeSender* sender)
|
| - : heap_(base::GetPageSize()), sender_(sender) {
|
| +ClientDiscardableSharedMemoryManager::ClientDiscardableSharedMemoryManager(
|
| + Delegate* delegate)
|
| + : heap_(base::GetPageSize()), delegate_(delegate) {
|
| base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
|
| - this, "ChildDiscardableSharedMemoryManager",
|
| + this, "ClientDiscardableSharedMemoryManager",
|
| base::ThreadTaskRunnerHandle::Get());
|
| }
|
|
|
| -ChildDiscardableSharedMemoryManager::~ChildDiscardableSharedMemoryManager() {
|
| +ClientDiscardableSharedMemoryManager::~ClientDiscardableSharedMemoryManager() {
|
| base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider(
|
| this);
|
| // TODO(reveman): Determine if this DCHECK can be enabled. crbug.com/430533
|
| @@ -109,14 +108,15 @@ ChildDiscardableSharedMemoryManager::~ChildDiscardableSharedMemoryManager() {
|
| }
|
|
|
| std::unique_ptr<base::DiscardableMemory>
|
| -ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
|
| +ClientDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
|
| size_t size) {
|
| base::AutoLock lock(lock_);
|
|
|
| DCHECK_NE(size, 0u);
|
|
|
| + auto size_in_kb = static_cast<base::HistogramBase::Sample>(size / 1024);
|
| UMA_HISTOGRAM_CUSTOM_COUNTS("Memory.DiscardableAllocationSize",
|
| - size / 1024, // In KB
|
| + size_in_kb, // In KB
|
| 1,
|
| 4 * 1024 * 1024, // 4 GB
|
| 50);
|
| @@ -189,9 +189,10 @@ ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
|
| AllocateLockedDiscardableSharedMemory(allocation_size_in_bytes, new_id));
|
|
|
| // Create span for allocated memory.
|
| - std::unique_ptr<DiscardableSharedMemoryHeap::Span> new_span(heap_.Grow(
|
| - std::move(shared_memory), allocation_size_in_bytes, new_id,
|
| - base::Bind(&SendDeletedDiscardableSharedMemoryMessage, sender_, new_id)));
|
| + std::unique_ptr<DiscardableSharedMemoryHeap::Span> new_span(
|
| + heap_.Grow(std::move(shared_memory), allocation_size_in_bytes, new_id,
|
| + base::Bind(&SendDeletedDiscardableSharedMemoryMessage,
|
| + delegate_, new_id)));
|
| new_span->set_is_locked(true);
|
|
|
| // Unlock and insert any left over memory into free lists.
|
| @@ -211,7 +212,7 @@ ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
|
| return base::MakeUnique<DiscardableMemoryImpl>(this, std::move(new_span));
|
| }
|
|
|
| -bool ChildDiscardableSharedMemoryManager::OnMemoryDump(
|
| +bool ClientDiscardableSharedMemoryManager::OnMemoryDump(
|
| const base::trace_event::MemoryDumpArgs& args,
|
| base::trace_event::ProcessMemoryDump* pmd) {
|
| base::AutoLock lock(lock_);
|
| @@ -235,8 +236,8 @@ bool ChildDiscardableSharedMemoryManager::OnMemoryDump(
|
| return heap_.OnMemoryDump(pmd);
|
| }
|
|
|
| -ChildDiscardableSharedMemoryManager::Statistics
|
| -ChildDiscardableSharedMemoryManager::GetStatistics() const {
|
| +ClientDiscardableSharedMemoryManager::Statistics
|
| +ClientDiscardableSharedMemoryManager::GetStatistics() const {
|
| base::AutoLock lock(lock_);
|
| Statistics stats;
|
| stats.total_size = heap_.GetSize();
|
| @@ -244,7 +245,7 @@ ChildDiscardableSharedMemoryManager::GetStatistics() const {
|
| return stats;
|
| }
|
|
|
| -void ChildDiscardableSharedMemoryManager::ReleaseFreeMemory() {
|
| +void ClientDiscardableSharedMemoryManager::ReleaseFreeMemory() {
|
| base::AutoLock lock(lock_);
|
|
|
| size_t heap_size_prior_to_releasing_memory = heap_.GetSize();
|
| @@ -257,7 +258,7 @@ void ChildDiscardableSharedMemoryManager::ReleaseFreeMemory() {
|
| MemoryUsageChanged(heap_.GetSize(), heap_.GetSizeOfFreeLists());
|
| }
|
|
|
| -bool ChildDiscardableSharedMemoryManager::LockSpan(
|
| +bool ClientDiscardableSharedMemoryManager::LockSpan(
|
| DiscardableSharedMemoryHeap::Span* span) {
|
| base::AutoLock lock(lock_);
|
|
|
| @@ -265,7 +266,7 @@ bool ChildDiscardableSharedMemoryManager::LockSpan(
|
| return false;
|
|
|
| size_t offset = span->start() * base::GetPageSize() -
|
| - reinterpret_cast<size_t>(span->shared_memory()->memory());
|
| + reinterpret_cast<size_t>(span->shared_memory()->memory());
|
| size_t length = span->length() * base::GetPageSize();
|
|
|
| switch (span->shared_memory()->Lock(offset, length)) {
|
| @@ -284,20 +285,20 @@ bool ChildDiscardableSharedMemoryManager::LockSpan(
|
| return false;
|
| }
|
|
|
| -void ChildDiscardableSharedMemoryManager::UnlockSpan(
|
| +void ClientDiscardableSharedMemoryManager::UnlockSpan(
|
| DiscardableSharedMemoryHeap::Span* span) {
|
| base::AutoLock lock(lock_);
|
|
|
| DCHECK(span->shared_memory());
|
| size_t offset = span->start() * base::GetPageSize() -
|
| - reinterpret_cast<size_t>(span->shared_memory()->memory());
|
| + reinterpret_cast<size_t>(span->shared_memory()->memory());
|
| size_t length = span->length() * base::GetPageSize();
|
|
|
| span->set_is_locked(false);
|
| return span->shared_memory()->Unlock(offset, length);
|
| }
|
|
|
| -void ChildDiscardableSharedMemoryManager::ReleaseSpan(
|
| +void ClientDiscardableSharedMemoryManager::ReleaseSpan(
|
| std::unique_ptr<DiscardableSharedMemoryHeap::Span> span) {
|
| base::AutoLock lock(lock_);
|
|
|
| @@ -312,7 +313,7 @@ void ChildDiscardableSharedMemoryManager::ReleaseSpan(
|
| }
|
|
|
| base::trace_event::MemoryAllocatorDump*
|
| -ChildDiscardableSharedMemoryManager::CreateMemoryAllocatorDump(
|
| +ClientDiscardableSharedMemoryManager::CreateMemoryAllocatorDump(
|
| DiscardableSharedMemoryHeap::Span* span,
|
| const char* name,
|
| base::trace_event::ProcessMemoryDump* pmd) const {
|
| @@ -321,18 +322,16 @@ ChildDiscardableSharedMemoryManager::CreateMemoryAllocatorDump(
|
| }
|
|
|
| std::unique_ptr<base::DiscardableSharedMemory>
|
| -ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableSharedMemory(
|
| +ClientDiscardableSharedMemoryManager::AllocateLockedDiscardableSharedMemory(
|
| size_t size,
|
| DiscardableSharedMemoryId id) {
|
| TRACE_EVENT2("renderer",
|
| - "ChildDiscardableSharedMemoryManager::"
|
| + "ClientDiscardableSharedMemoryManager::"
|
| "AllocateLockedDiscardableSharedMemory",
|
| "size", size, "id", id);
|
|
|
| base::SharedMemoryHandle handle = base::SharedMemory::NULLHandle();
|
| - sender_->Send(
|
| - new ChildProcessHostMsg_SyncAllocateLockedDiscardableSharedMemory(
|
| - size, id, &handle));
|
| + delegate_->AllocateLockedDiscardableSharedMemory(size, id, &handle);
|
| std::unique_ptr<base::DiscardableSharedMemory> memory(
|
| new base::DiscardableSharedMemory(handle));
|
| if (!memory->Map(size))
|
| @@ -340,7 +339,7 @@ ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableSharedMemory(
|
| return memory;
|
| }
|
|
|
| -void ChildDiscardableSharedMemoryManager::MemoryUsageChanged(
|
| +void ClientDiscardableSharedMemoryManager::MemoryUsageChanged(
|
| size_t new_bytes_total,
|
| size_t new_bytes_free) const {
|
| static const char kDiscardableMemoryAllocatedKey[] =
|
| @@ -353,4 +352,4 @@ void ChildDiscardableSharedMemoryManager::MemoryUsageChanged(
|
| base::Uint64ToString(new_bytes_free));
|
| }
|
|
|
| -} // namespace content
|
| +} // namespace discardable_memory
|
|
|