Index: base/memory/discardable_memory_shmem.cc |
diff --git a/base/memory/discardable_memory_shmem.cc b/base/memory/discardable_memory_shmem.cc |
index 9056279492f4a2544904b3f38c63d52386df1774..059d84ca6111a86deef41162ee6129fe41f5a77a 100644 |
--- a/base/memory/discardable_memory_shmem.cc |
+++ b/base/memory/discardable_memory_shmem.cc |
@@ -11,7 +11,10 @@ namespace base { |
namespace internal { |
DiscardableMemoryShmem::DiscardableMemoryShmem(size_t bytes) |
- : bytes_(bytes), is_locked_(false) { |
+ : chunk_(DiscardableMemoryShmemAllocator::GetInstance() |
+ ->AllocateLockedDiscardableMemory(bytes)), |
+ is_locked_(true) { |
+ DCHECK(chunk_); |
} |
DiscardableMemoryShmem::~DiscardableMemoryShmem() { |
@@ -19,37 +22,27 @@ DiscardableMemoryShmem::~DiscardableMemoryShmem() { |
Unlock(); |
} |
-bool DiscardableMemoryShmem::Initialize() { |
- return Lock() != DISCARDABLE_MEMORY_LOCK_STATUS_FAILED; |
-} |
- |
-DiscardableMemoryLockStatus DiscardableMemoryShmem::Lock() { |
+bool DiscardableMemoryShmem::Lock() { |
DCHECK(!is_locked_); |
+ DCHECK(chunk_); |
- if (chunk_ && chunk_->Lock()) { |
- is_locked_ = true; |
- return DISCARDABLE_MEMORY_LOCK_STATUS_SUCCESS; |
+ if (!chunk_->Lock()) { |
+ chunk_.reset(); |
+ return false; |
} |
- chunk_ = DiscardableMemoryShmemAllocator::GetInstance() |
- ->AllocateLockedDiscardableMemory(bytes_); |
- if (!chunk_) |
- return DISCARDABLE_MEMORY_LOCK_STATUS_FAILED; |
- |
is_locked_ = true; |
- return DISCARDABLE_MEMORY_LOCK_STATUS_PURGED; |
+ return true; |
} |
void DiscardableMemoryShmem::Unlock() { |
DCHECK(is_locked_); |
- DCHECK(chunk_); |
chunk_->Unlock(); |
is_locked_ = false; |
} |
void* DiscardableMemoryShmem::Memory() const { |
DCHECK(is_locked_); |
- DCHECK(chunk_); |
return chunk_->Memory(); |
} |