| 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(
|
|
|