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

Unified Diff: content/child/child_discardable_shared_memory_manager.cc

Issue 1001873002: base: Rename discardable memory allocator interface and remove unnecessary class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@remove-dm-types
Patch Set: fix child process DiscardableMemoryImpl Created 5 years, 9 months 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: content/child/child_discardable_shared_memory_manager.cc
diff --git a/content/child/child_discardable_shared_memory_manager.cc b/content/child/child_discardable_shared_memory_manager.cc
index d91bd15c95a0881fb74f488d5e4cefa1b3c3b734..d94eb3e550c5a7c2a5f9a7e84a2f2575b2830001 100644
--- a/content/child/child_discardable_shared_memory_manager.cc
+++ b/content/child/child_discardable_shared_memory_manager.cc
@@ -7,6 +7,7 @@
#include "base/atomic_sequence_num.h"
#include "base/bind.h"
#include "base/debug/crash_logging.h"
+#include "base/memory/discardable_memory.h"
#include "base/memory/discardable_shared_memory.h"
#include "base/metrics/histogram.h"
#include "base/process/process_metrics.h"
@@ -28,29 +29,46 @@ const size_t kAllocationSize = 4 * 1024 * 1024;
// Global atomic to generate unique discardable shared memory IDs.
base::StaticAtomicSequenceNumber g_next_discardable_shared_memory_id;
-class DiscardableMemoryShmemChunkImpl
- : public base::DiscardableMemoryShmemChunk {
+class DiscardableMemoryImpl : public base::DiscardableMemory {
public:
- DiscardableMemoryShmemChunkImpl(
- ChildDiscardableSharedMemoryManager* manager,
- scoped_ptr<DiscardableSharedMemoryHeap::Span> span)
- : manager_(manager), span_(span.Pass()) {}
- ~DiscardableMemoryShmemChunkImpl() override {
+ DiscardableMemoryImpl(ChildDiscardableSharedMemoryManager* manager,
+ scoped_ptr<DiscardableSharedMemoryHeap::Span> span)
+ : manager_(manager), span_(span.Pass()), is_locked_(true) {}
+
+ ~DiscardableMemoryImpl() override {
+ if (is_locked_)
+ manager_->UnlockSpan(span_.get());
+
manager_->ReleaseSpan(span_.Pass());
}
- // Overridden from DiscardableMemoryShmemChunk:
- bool Lock() override { return manager_->LockSpan(span_.get()); }
- void Unlock() override { manager_->UnlockSpan(span_.get()); }
+ // Overridden from base::DiscardableMemory:
+ bool Lock() override {
+ DCHECK(!is_locked_);
+
+ if (!manager_->LockSpan(span_.get()))
+ return false;
+
+ is_locked_ = true;
+ return true;
+ }
+ void Unlock() override {
+ DCHECK(is_locked_);
+
+ manager_->UnlockSpan(span_.get());
+ is_locked_ = false;
+ }
void* Memory() const override {
+ DCHECK(is_locked_);
return reinterpret_cast<void*>(span_->start() * base::GetPageSize());
}
private:
- ChildDiscardableSharedMemoryManager* manager_;
+ ChildDiscardableSharedMemoryManager* const manager_;
scoped_ptr<DiscardableSharedMemoryHeap::Span> span_;
+ bool is_locked_;
- DISALLOW_COPY_AND_ASSIGN(DiscardableMemoryShmemChunkImpl);
+ DISALLOW_COPY_AND_ASSIGN(DiscardableMemoryImpl);
};
void DeletedDiscardableSharedMemory(scoped_refptr<ThreadSafeSender> sender,
@@ -72,7 +90,7 @@ ChildDiscardableSharedMemoryManager::~ChildDiscardableSharedMemoryManager() {
MemoryUsageChanged(0, 0);
}
-scoped_ptr<base::DiscardableMemoryShmemChunk>
+scoped_ptr<base::DiscardableMemory>
ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
size_t size) {
base::AutoLock lock(lock_);
@@ -126,8 +144,7 @@ ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
// at least one span from the free lists.
MemoryUsageChanged(heap_.GetSize(), heap_.GetSizeOfFreeLists());
- return make_scoped_ptr(
- new DiscardableMemoryShmemChunkImpl(this, free_span.Pass()));
+ return make_scoped_ptr(new DiscardableMemoryImpl(this, free_span.Pass()));
}
// Release purged memory to free up the address space before we attempt to
@@ -167,8 +184,7 @@ ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
MemoryUsageChanged(heap_.GetSize(), heap_.GetSizeOfFreeLists());
- return make_scoped_ptr(
- new DiscardableMemoryShmemChunkImpl(this, new_span.Pass()));
+ return make_scoped_ptr(new DiscardableMemoryImpl(this, new_span.Pass()));
}
void ChildDiscardableSharedMemoryManager::ReleaseFreeMemory() {

Powered by Google App Engine
This is Rietveld 408576698