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 cbe069a27cb011318629a84669ef22ec83331aa7..011f2d43cd35f17b13befd3d8c6889e41a1c1c44 100644 |
--- a/content/child/child_discardable_shared_memory_manager.cc |
+++ b/content/child/child_discardable_shared_memory_manager.cc |
@@ -31,10 +31,10 @@ class DiscardableMemoryImpl : public base::DiscardableMemory { |
public: |
DiscardableMemoryImpl(ChildDiscardableSharedMemoryManager* manager, |
scoped_ptr<DiscardableSharedMemoryHeap::Span> span) |
- : manager_(manager), span_(span.Pass()), is_locked_(true) {} |
+ : manager_(manager), span_(span.Pass()) {} |
~DiscardableMemoryImpl() override { |
- if (is_locked_) |
+ if (span_->is_locked()) |
manager_->UnlockSpan(span_.get()); |
manager_->ReleaseSpan(span_.Pass()); |
@@ -42,22 +42,20 @@ class DiscardableMemoryImpl : public base::DiscardableMemory { |
// Overridden from base::DiscardableMemory: |
bool Lock() override { |
- DCHECK(!is_locked_); |
+ DCHECK(!span_->is_locked()); |
if (!manager_->LockSpan(span_.get())) |
return false; |
- is_locked_ = true; |
return true; |
} |
void Unlock() override { |
- DCHECK(is_locked_); |
+ DCHECK(span_->is_locked()); |
manager_->UnlockSpan(span_.get()); |
- is_locked_ = false; |
} |
void* data() const override { |
- DCHECK(is_locked_); |
+ DCHECK(span_->is_locked()); |
return reinterpret_cast<void*>(span_->start() * base::GetPageSize()); |
} |
@@ -70,7 +68,6 @@ class DiscardableMemoryImpl : public base::DiscardableMemory { |
private: |
ChildDiscardableSharedMemoryManager* const manager_; |
scoped_ptr<DiscardableSharedMemoryHeap::Span> span_; |
- bool is_locked_; |
DISALLOW_COPY_AND_ASSIGN(DiscardableMemoryImpl); |
}; |
@@ -137,12 +134,9 @@ ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory( |
// Attempt to lock |free_span|. Delete span and search free lists again |
// if locking failed. |
- if (free_span->shared_memory()->Lock( |
- free_span->start() * base::GetPageSize() - |
- reinterpret_cast<size_t>(free_span->shared_memory()->memory()), |
- free_span->length() * base::GetPageSize()) == |
+ if (free_span->Lock(base::GetPageSize()) == |
base::DiscardableSharedMemory::FAILED) { |
- DCHECK(!free_span->shared_memory()->IsMemoryResident()); |
+ DCHECK(!free_span->IsMemoryResident()); |
// We have to release purged memory before |free_span| can be destroyed. |
heap_.ReleasePurgedMemory(); |
DCHECK(!free_span->shared_memory()); |
@@ -184,10 +178,7 @@ ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory( |
if (pages < pages_to_allocate) { |
scoped_ptr<DiscardableSharedMemoryHeap::Span> leftover = |
heap_.Split(new_span.get(), pages); |
- leftover->shared_memory()->Unlock( |
- leftover->start() * base::GetPageSize() - |
- reinterpret_cast<size_t>(leftover->shared_memory()->memory()), |
- leftover->length() * base::GetPageSize()); |
+ leftover->Unlock(base::GetPageSize()); |
heap_.MergeIntoFreeLists(leftover.Pass()); |
} |
@@ -223,15 +214,11 @@ bool ChildDiscardableSharedMemoryManager::LockSpan( |
if (!span->shared_memory()) |
return false; |
- size_t offset = span->start() * base::GetPageSize() - |
- reinterpret_cast<size_t>(span->shared_memory()->memory()); |
- size_t length = span->length() * base::GetPageSize(); |
- |
- switch (span->shared_memory()->Lock(offset, length)) { |
+ switch (span->Lock(base::GetPageSize())) { |
case base::DiscardableSharedMemory::SUCCESS: |
return true; |
case base::DiscardableSharedMemory::PURGED: |
- span->shared_memory()->Unlock(offset, length); |
+ span->Unlock(base::GetPageSize()); |
return false; |
case base::DiscardableSharedMemory::FAILED: |
return false; |
@@ -246,11 +233,8 @@ void ChildDiscardableSharedMemoryManager::UnlockSpan( |
base::AutoLock lock(lock_); |
DCHECK(span->shared_memory()); |
- size_t offset = span->start() * base::GetPageSize() - |
- reinterpret_cast<size_t>(span->shared_memory()->memory()); |
- size_t length = span->length() * base::GetPageSize(); |
- return span->shared_memory()->Unlock(offset, length); |
+ return span->Unlock(base::GetPageSize()); |
} |
void ChildDiscardableSharedMemoryManager::ReleaseSpan( |