| 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..1069fa7242cdf58264d71d7017f7797c9331cb6f 100644
|
| --- a/content/child/child_discardable_shared_memory_manager.cc
|
| +++ b/content/child/child_discardable_shared_memory_manager.cc
|
| @@ -149,6 +149,8 @@ ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
|
| continue;
|
| }
|
|
|
| + free_span->set_is_locked(true);
|
| +
|
| // Memory usage is guaranteed to have changed after having removed
|
| // at least one span from the free lists.
|
| MemoryUsageChanged(heap_.GetSize(), heap_.GetSizeOfFreeLists());
|
| @@ -179,6 +181,7 @@ ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
|
| scoped_ptr<DiscardableSharedMemoryHeap::Span> new_span(heap_.Grow(
|
| shared_memory.Pass(), allocation_size_in_bytes, new_id,
|
| base::Bind(&SendDeletedDiscardableSharedMemoryMessage, sender_, new_id)));
|
| + new_span->set_is_locked(true);
|
|
|
| // Unlock and insert any left over memory into free lists.
|
| if (pages < pages_to_allocate) {
|
| @@ -188,6 +191,7 @@ ChildDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
|
| leftover->start() * base::GetPageSize() -
|
| reinterpret_cast<size_t>(leftover->shared_memory()->memory()),
|
| leftover->length() * base::GetPageSize());
|
| + leftover->set_is_locked(false);
|
| heap_.MergeIntoFreeLists(leftover.Pass());
|
| }
|
|
|
| @@ -229,9 +233,11 @@ bool ChildDiscardableSharedMemoryManager::LockSpan(
|
|
|
| switch (span->shared_memory()->Lock(offset, length)) {
|
| case base::DiscardableSharedMemory::SUCCESS:
|
| + span->set_is_locked(true);
|
| return true;
|
| case base::DiscardableSharedMemory::PURGED:
|
| span->shared_memory()->Unlock(offset, length);
|
| + span->set_is_locked(false);
|
| return false;
|
| case base::DiscardableSharedMemory::FAILED:
|
| return false;
|
| @@ -250,6 +256,7 @@ void ChildDiscardableSharedMemoryManager::UnlockSpan(
|
| reinterpret_cast<size_t>(span->shared_memory()->memory());
|
| size_t length = span->length() * base::GetPageSize();
|
|
|
| + span->set_is_locked(false);
|
| return span->shared_memory()->Unlock(offset, length);
|
| }
|
|
|
|
|