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

Unified Diff: content/common/discardable_shared_memory_heap.cc

Issue 1009203004: content: Add DeletedDiscardableSharedMemory IPC. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase 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/common/discardable_shared_memory_heap.cc
diff --git a/content/common/discardable_shared_memory_heap.cc b/content/common/discardable_shared_memory_heap.cc
index b444b0d7b02e64e5aade115e858d5dfa38f3fd15..36ee632255329506570831c90bc23287cad00580 100644
--- a/content/common/discardable_shared_memory_heap.cc
+++ b/content/common/discardable_shared_memory_heap.cc
@@ -34,14 +34,17 @@ DiscardableSharedMemoryHeap::Span::~Span() {
DiscardableSharedMemoryHeap::ScopedMemorySegment::ScopedMemorySegment(
DiscardableSharedMemoryHeap* heap,
scoped_ptr<base::DiscardableSharedMemory> shared_memory,
- size_t size)
- : heap_(heap), shared_memory_(shared_memory.Pass()), size_(size) {
+ size_t size,
+ const base::Closure& deleted_callback)
+ : heap_(heap),
+ shared_memory_(shared_memory.Pass()),
+ size_(size),
+ deleted_callback_(deleted_callback) {
}
DiscardableSharedMemoryHeap::ScopedMemorySegment::~ScopedMemorySegment() {
heap_->ReleaseMemory(shared_memory_.get(), size_);
- // Purge memory. This has no effect if already purged.
- shared_memory_->Purge(base::Time::Now());
+ deleted_callback_.Run();
}
bool DiscardableSharedMemoryHeap::ScopedMemorySegment::IsUsed() const {
@@ -71,7 +74,8 @@ DiscardableSharedMemoryHeap::~DiscardableSharedMemoryHeap() {
scoped_ptr<DiscardableSharedMemoryHeap::Span> DiscardableSharedMemoryHeap::Grow(
scoped_ptr<base::DiscardableSharedMemory> shared_memory,
- size_t size) {
+ size_t size,
+ const base::Closure& deleted_callback) {
// Memory must be aligned to block size.
DCHECK_EQ(
reinterpret_cast<size_t>(shared_memory->memory()) & (block_size_ - 1),
@@ -89,8 +93,8 @@ scoped_ptr<DiscardableSharedMemoryHeap::Span> DiscardableSharedMemoryHeap::Grow(
num_blocks_ += span->length_;
// Start tracking if segment is resident by adding it to |memory_segments_|.
- memory_segments_.push_back(
- new ScopedMemorySegment(this, shared_memory.Pass(), size));
+ memory_segments_.push_back(new ScopedMemorySegment(this, shared_memory.Pass(),
+ size, deleted_callback));
return span.Pass();
}
« no previous file with comments | « content/common/discardable_shared_memory_heap.h ('k') | content/common/discardable_shared_memory_heap_perftest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698