| Index: base/memory/discardable_memory_emulated.cc
|
| diff --git a/base/memory/discardable_memory_emulated.cc b/base/memory/discardable_memory_emulated.cc
|
| index 82f887f55d33d967995dc0e68f8f8a69b383c9ab..c9effe6d2ff7e8439e6dc94245e7914da2ea4aa8 100644
|
| --- a/base/memory/discardable_memory_emulated.cc
|
| +++ b/base/memory/discardable_memory_emulated.cc
|
| @@ -8,7 +8,6 @@
|
| #include "base/memory/discardable_memory_manager.h"
|
|
|
| namespace base {
|
| -
|
| namespace {
|
|
|
| base::LazyInstance<internal::DiscardableMemoryManager>::Leaky g_manager =
|
| @@ -52,8 +51,7 @@ DiscardableMemoryLockStatus DiscardableMemoryEmulated::Lock() {
|
| DCHECK(!is_locked_);
|
|
|
| bool purged = false;
|
| - memory_ = g_manager.Pointer()->Acquire(this, &purged);
|
| - if (!memory_)
|
| + if (!g_manager.Pointer()->AcquireLock(this, &purged))
|
| return DISCARDABLE_MEMORY_LOCK_STATUS_FAILED;
|
|
|
| is_locked_ = true;
|
| @@ -63,14 +61,27 @@ DiscardableMemoryLockStatus DiscardableMemoryEmulated::Lock() {
|
|
|
| void DiscardableMemoryEmulated::Unlock() {
|
| DCHECK(is_locked_);
|
| - g_manager.Pointer()->Release(this, memory_.Pass());
|
| + g_manager.Pointer()->ReleaseLock(this);
|
| is_locked_ = false;
|
| }
|
|
|
| void* DiscardableMemoryEmulated::Memory() const {
|
| + DCHECK(is_locked_);
|
| DCHECK(memory_);
|
| return memory_.get();
|
| }
|
|
|
| +bool DiscardableMemoryEmulated::AllocateAndAcquireLock(size_t bytes) {
|
| + if (memory_)
|
| + return true;
|
| +
|
| + memory_.reset(new uint8[bytes]);
|
| + return false;
|
| +}
|
| +
|
| +void DiscardableMemoryEmulated::Purge() {
|
| + memory_.reset();
|
| +}
|
| +
|
| } // namespace internal
|
| } // namespace base
|
|
|