Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(380)

Unified Diff: components/discardable_memory/common/discardable_shared_memory_manager.cc

Issue 2459733002: Move discardable memory to //components from //content (Closed)
Patch Set: Fix build error Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/discardable_memory/common/discardable_shared_memory_manager.cc
diff --git a/content/common/host_discardable_shared_memory_manager.cc b/components/discardable_memory/common/discardable_shared_memory_manager.cc
similarity index 86%
rename from content/common/host_discardable_shared_memory_manager.cc
rename to components/discardable_memory/common/discardable_shared_memory_manager.cc
index e349fca4171c1a32a1daf1ef22f50913e1d7c89f..a50d193fcc8b89cba0d9ecc7790f4e0575bc9b79 100644
--- a/content/common/host_discardable_shared_memory_manager.cc
+++ b/components/discardable_memory/common/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/common/host_discardable_shared_memory_manager.h"
+#include "components/discardable_memory/common/discardable_shared_memory_manager.h"
#include <algorithm>
#include <utility>
@@ -27,9 +27,7 @@
#include "base/trace_event/process_memory_dump.h"
#include "base/trace_event/trace_event.h"
#include "build/build_config.h"
-#include "content/common/child_process_host_impl.h"
-#include "content/common/discardable_shared_memory_heap.h"
-#include "content/public/common/child_process_host.h"
+#include "components/discardable_memory/common/discardable_shared_memory_heap.h"
#if defined(OS_LINUX)
#include "base/files/file_path.h"
@@ -37,9 +35,16 @@
#include "base/metrics/histogram_macros.h"
#endif
-namespace content {
+namespace discardable_memory {
namespace {
+const int kInvalidUniqueClientID = -1;
+
+uint64_t ClientIdToClientTracingId(int client_id) {
reveman 2016/11/01 17:18:38 nit: ClientProcessUniqueIdToTracingProcessId
Peng 2016/11/01 18:38:30 Done.
+ // TODO(penghuang): Using a meaningful tracing id.
+ return client_id;
reveman 2016/11/01 17:18:38 This needs to work properly for chrome as we rely
Peng 2016/11/01 18:38:30 Done. BTW for mojo, I don't think we can get proc
+}
+
class DiscardableMemoryImpl : public base::DiscardableMemory {
public:
DiscardableMemoryImpl(
@@ -146,7 +151,7 @@ int64_t GetDefaultMemoryLimit() {
base::SysInfo::AmountOfPhysicalMemory() / 4);
}
-base::LazyInstance<HostDiscardableSharedMemoryManager>
+base::LazyInstance<DiscardableSharedMemoryManager>
g_discardable_shared_memory_manager = LAZY_INSTANCE_INITIALIZER;
const int kEnforceMemoryPolicyDelayMs = 1000;
@@ -156,19 +161,18 @@ base::StaticAtomicSequenceNumber g_next_discardable_shared_memory_id;
} // namespace
-HostDiscardableSharedMemoryManager::MemorySegment::MemorySegment(
+DiscardableSharedMemoryManager::MemorySegment::MemorySegment(
std::unique_ptr<base::DiscardableSharedMemory> memory)
: memory_(std::move(memory)) {}
-HostDiscardableSharedMemoryManager::MemorySegment::~MemorySegment() {
-}
+DiscardableSharedMemoryManager::MemorySegment::~MemorySegment() {}
-HostDiscardableSharedMemoryManager::HostDiscardableSharedMemoryManager()
+DiscardableSharedMemoryManager::DiscardableSharedMemoryManager()
: default_memory_limit_(GetDefaultMemoryLimit()),
memory_limit_(default_memory_limit_),
bytes_allocated_(0),
memory_pressure_listener_(new base::MemoryPressureListener(
- base::Bind(&HostDiscardableSharedMemoryManager::OnMemoryPressure,
+ base::Bind(&DiscardableSharedMemoryManager::OnMemoryPressure,
base::Unretained(this)))),
// Current thread might not have a task runner in tests.
enforce_memory_policy_task_runner_(base::ThreadTaskRunnerHandle::Get()),
@@ -176,27 +180,25 @@ HostDiscardableSharedMemoryManager::HostDiscardableSharedMemoryManager()
weak_ptr_factory_(this) {
DCHECK_NE(memory_limit_, 0u);
enforce_memory_policy_callback_ =
- base::Bind(&HostDiscardableSharedMemoryManager::EnforceMemoryPolicy,
+ base::Bind(&DiscardableSharedMemoryManager::EnforceMemoryPolicy,
weak_ptr_factory_.GetWeakPtr());
base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
- this, "HostDiscardableSharedMemoryManager",
+ this, "DiscardableSharedMemoryManager",
base::ThreadTaskRunnerHandle::Get());
base::MemoryCoordinatorClientRegistry::GetInstance()->Register(this);
}
-HostDiscardableSharedMemoryManager::~HostDiscardableSharedMemoryManager() {
+DiscardableSharedMemoryManager::~DiscardableSharedMemoryManager() {
base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider(
this);
}
-HostDiscardableSharedMemoryManager*
-HostDiscardableSharedMemoryManager::current() {
+DiscardableSharedMemoryManager* DiscardableSharedMemoryManager::current() {
return g_discardable_shared_memory_manager.Pointer();
}
std::unique_ptr<base::DiscardableMemory>
-HostDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
- size_t size) {
+DiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(size_t size) {
DCHECK_NE(size, 0u);
DiscardableSharedMemoryId new_id =
@@ -206,9 +208,8 @@ HostDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
// Note: Use DiscardableSharedMemoryHeap for in-process allocation
// of discardable memory if the cost of each allocation is too high.
base::SharedMemoryHandle handle;
- AllocateLockedDiscardableSharedMemory(current_process_handle,
- ChildProcessHost::kInvalidUniqueID,
- size, new_id, &handle);
+ AllocateLockedDiscardableSharedMemory(
+ current_process_handle, kInvalidUniqueClientID, size, new_id, &handle);
std::unique_ptr<base::DiscardableSharedMemory> memory(
new base::DiscardableSharedMemory(handle));
if (!memory->Map(size))
@@ -218,11 +219,11 @@ HostDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
return base::MakeUnique<DiscardableMemoryImpl>(
std::move(memory),
base::Bind(
- &HostDiscardableSharedMemoryManager::DeletedDiscardableSharedMemory,
- base::Unretained(this), new_id, ChildProcessHost::kInvalidUniqueID));
+ &DiscardableSharedMemoryManager::DeletedDiscardableSharedMemory,
+ base::Unretained(this), new_id, kInvalidUniqueClientID));
}
-bool HostDiscardableSharedMemoryManager::OnMemoryDump(
+bool DiscardableSharedMemoryManager::OnMemoryDump(
const base::trace_event::MemoryDumpArgs& args,
base::trace_event::ProcessMemoryDump* pmd) {
if (args.level_of_detail ==
@@ -266,8 +267,7 @@ bool HostDiscardableSharedMemoryManager::OnMemoryDump(
// double-count them in tracing. If, instead, no other process will emit a
// dump with the same guid, the segment will be accounted to the browser.
const uint64_t child_tracing_process_id =
reveman 2016/11/01 17:18:38 nit: s/child/client/
Peng 2016/11/01 18:38:30 Done.
- ChildProcessHostImpl::ChildProcessUniqueIdToTracingProcessId(
- child_process_id);
+ ClientIdToClientTracingId(child_process_id);
base::trace_event::MemoryAllocatorDumpGuid shared_segment_guid =
DiscardableSharedMemoryHeap::GetSegmentGUIDForTracing(
child_tracing_process_id, segment_id);
@@ -294,7 +294,7 @@ bool HostDiscardableSharedMemoryManager::OnMemoryDump(
return true;
}
-void HostDiscardableSharedMemoryManager::
+void DiscardableSharedMemoryManager::
AllocateLockedDiscardableSharedMemoryForChild(
base::ProcessHandle process_handle,
int child_process_id,
reveman 2016/11/01 17:18:38 nit: s/child/client/
Peng 2016/11/01 18:38:30 Done.
@@ -305,13 +305,13 @@ void HostDiscardableSharedMemoryManager::
id, shared_memory_handle);
}
-void HostDiscardableSharedMemoryManager::ChildDeletedDiscardableSharedMemory(
+void DiscardableSharedMemoryManager::ChildDeletedDiscardableSharedMemory(
DiscardableSharedMemoryId id,
int child_process_id) {
reveman 2016/11/01 17:18:38 nit: s/child/client/
Peng 2016/11/01 18:38:30 Done.
DeletedDiscardableSharedMemory(id, child_process_id);
}
-void HostDiscardableSharedMemoryManager::ProcessRemoved(int child_process_id) {
+void DiscardableSharedMemoryManager::ProcessRemoved(int child_process_id) {
reveman 2016/11/01 17:18:38 nit: s/child/client/
Peng 2016/11/01 18:38:30 Done.
base::AutoLock lock(lock_);
ProcessMap::iterator process_it = processes_.find(child_process_id);
@@ -329,27 +329,27 @@ void HostDiscardableSharedMemoryManager::ProcessRemoved(int child_process_id) {
BytesAllocatedChanged(bytes_allocated_);
}
-void HostDiscardableSharedMemoryManager::SetMemoryLimit(size_t limit) {
+void DiscardableSharedMemoryManager::SetMemoryLimit(size_t limit) {
base::AutoLock lock(lock_);
memory_limit_ = limit;
ReduceMemoryUsageUntilWithinMemoryLimit();
}
-void HostDiscardableSharedMemoryManager::EnforceMemoryPolicy() {
+void DiscardableSharedMemoryManager::EnforceMemoryPolicy() {
base::AutoLock lock(lock_);
enforce_memory_policy_pending_ = false;
ReduceMemoryUsageUntilWithinMemoryLimit();
}
-size_t HostDiscardableSharedMemoryManager::GetBytesAllocated() {
+size_t DiscardableSharedMemoryManager::GetBytesAllocated() {
base::AutoLock lock(lock_);
return bytes_allocated_;
}
-void HostDiscardableSharedMemoryManager::OnMemoryStateChange(
+void DiscardableSharedMemoryManager::OnMemoryStateChange(
base::MemoryState state) {
switch (state) {
case base::MemoryState::NORMAL:
@@ -359,15 +359,15 @@ void HostDiscardableSharedMemoryManager::OnMemoryStateChange(
SetMemoryLimit(0);
break;
case base::MemoryState::SUSPENDED:
- // Note that SUSPENDED never occurs in the main browser process so far.
- // Fall through.
+ // Note that SUSPENDED never occurs in the main browser process so far.
+ // Fall through.
case base::MemoryState::UNKNOWN:
NOTREACHED();
break;
}
}
-void HostDiscardableSharedMemoryManager::AllocateLockedDiscardableSharedMemory(
+void DiscardableSharedMemoryManager::AllocateLockedDiscardableSharedMemory(
base::ProcessHandle process_handle,
int client_process_id,
size_t size,
@@ -432,7 +432,7 @@ void HostDiscardableSharedMemoryManager::AllocateLockedDiscardableSharedMemory(
ScheduleEnforceMemoryPolicy();
}
-void HostDiscardableSharedMemoryManager::DeletedDiscardableSharedMemory(
+void DiscardableSharedMemoryManager::DeletedDiscardableSharedMemory(
DiscardableSharedMemoryId id,
int client_process_id) {
base::AutoLock lock(lock_);
@@ -455,7 +455,7 @@ void HostDiscardableSharedMemoryManager::DeletedDiscardableSharedMemory(
BytesAllocatedChanged(bytes_allocated_);
}
-void HostDiscardableSharedMemoryManager::OnMemoryPressure(
+void DiscardableSharedMemoryManager::OnMemoryPressure(
base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) {
base::AutoLock lock(lock_);
@@ -473,8 +473,7 @@ void HostDiscardableSharedMemoryManager::OnMemoryPressure(
}
}
-void
-HostDiscardableSharedMemoryManager::ReduceMemoryUsageUntilWithinMemoryLimit() {
+void DiscardableSharedMemoryManager::ReduceMemoryUsageUntilWithinMemoryLimit() {
lock_.AssertAcquired();
if (bytes_allocated_ <= memory_limit_)
@@ -485,13 +484,12 @@ HostDiscardableSharedMemoryManager::ReduceMemoryUsageUntilWithinMemoryLimit() {
ScheduleEnforceMemoryPolicy();
}
-void HostDiscardableSharedMemoryManager::ReduceMemoryUsageUntilWithinLimit(
+void DiscardableSharedMemoryManager::ReduceMemoryUsageUntilWithinLimit(
size_t limit) {
TRACE_EVENT1("renderer_host",
- "HostDiscardableSharedMemoryManager::"
+ "DiscardableSharedMemoryManager::"
"ReduceMemoryUsageUntilWithinLimit",
- "bytes_allocated",
- bytes_allocated_);
+ "bytes_allocated", bytes_allocated_);
// Usage time of currently locked segments are updated to this time and
// we stop eviction attempts as soon as we come across a segment that we've
@@ -534,7 +532,7 @@ void HostDiscardableSharedMemoryManager::ReduceMemoryUsageUntilWithinLimit(
BytesAllocatedChanged(bytes_allocated_);
}
-void HostDiscardableSharedMemoryManager::ReleaseMemory(
+void DiscardableSharedMemoryManager::ReleaseMemory(
base::DiscardableSharedMemory* memory) {
lock_.AssertAcquired();
@@ -552,7 +550,7 @@ void HostDiscardableSharedMemoryManager::ReleaseMemory(
memory->Close();
}
-void HostDiscardableSharedMemoryManager::BytesAllocatedChanged(
+void DiscardableSharedMemoryManager::BytesAllocatedChanged(
size_t new_bytes_allocated) const {
static const char kTotalDiscardableMemoryAllocatedKey[] =
"total-discardable-memory-allocated";
@@ -560,11 +558,11 @@ void HostDiscardableSharedMemoryManager::BytesAllocatedChanged(
base::Uint64ToString(new_bytes_allocated));
}
-base::Time HostDiscardableSharedMemoryManager::Now() const {
+base::Time DiscardableSharedMemoryManager::Now() const {
return base::Time::Now();
}
-void HostDiscardableSharedMemoryManager::ScheduleEnforceMemoryPolicy() {
+void DiscardableSharedMemoryManager::ScheduleEnforceMemoryPolicy() {
lock_.AssertAcquired();
if (enforce_memory_policy_pending_)
@@ -577,4 +575,4 @@ void HostDiscardableSharedMemoryManager::ScheduleEnforceMemoryPolicy() {
base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs));
}
-} // namespace content
+} // namespace discardable_memory

Powered by Google App Engine
This is Rietveld 408576698