| Index: base/memory/discardable_memory_ashmem.cc
|
| diff --git a/base/memory/discardable_memory_malloc.cc b/base/memory/discardable_memory_ashmem.cc
|
| similarity index 37%
|
| copy from base/memory/discardable_memory_malloc.cc
|
| copy to base/memory/discardable_memory_ashmem.cc
|
| index be9d1576783f72d2a4ec22d88a20cb9bcb8334cb..63719cdbf5435f410e49786d2dd480278af55541 100644
|
| --- a/base/memory/discardable_memory_malloc.cc
|
| +++ b/base/memory/discardable_memory_ashmem.cc
|
| @@ -2,41 +2,50 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "base/memory/discardable_memory_malloc.h"
|
| +#include "base/memory/discardable_memory_ashmem.h"
|
|
|
| #include "base/logging.h"
|
|
|
| namespace base {
|
| namespace internal {
|
|
|
| -DiscardableMemoryMalloc::DiscardableMemoryMalloc(size_t size) : size_(size) {
|
| +DiscardableMemoryAshmem::DiscardableMemoryAshmem(
|
| + DiscardableMemoryManager* manager,
|
| + size_t size)
|
| + : manager_(manager),
|
| + allocation_id_(manager->Register(size)),
|
| + memory_(NULL) {
|
| }
|
|
|
| -DiscardableMemoryMalloc::~DiscardableMemoryMalloc() {
|
| +DiscardableMemoryAshmem::~DiscardableMemoryAshmem() {
|
| + manager_->Unregister(allocation_id_);
|
| }
|
|
|
| -bool DiscardableMemoryMalloc::Initialize() {
|
| +bool DiscardableMemoryAshmem::Initialize() {
|
| return Lock() == DISCARDABLE_MEMORY_LOCK_STATUS_PURGED;
|
| }
|
|
|
| -DiscardableMemoryLockStatus DiscardableMemoryMalloc::Lock() {
|
| +DiscardableMemoryLockStatus DiscardableMemoryAshmem::Lock() {
|
| DCHECK(!memory_);
|
|
|
| - memory_.reset(static_cast<uint8*>(malloc(size_)));
|
| + bool purged = false;
|
| + memory_ = manager_->Lock(allocation_id_, &purged);
|
| if (!memory_)
|
| return DISCARDABLE_MEMORY_LOCK_STATUS_FAILED;
|
|
|
| - return DISCARDABLE_MEMORY_LOCK_STATUS_PURGED;
|
| + return purged ? DISCARDABLE_MEMORY_LOCK_STATUS_PURGED
|
| + : DISCARDABLE_MEMORY_LOCK_STATUS_SUCCESS;
|
| }
|
|
|
| -void DiscardableMemoryMalloc::Unlock() {
|
| +void DiscardableMemoryAshmem::Unlock() {
|
| DCHECK(memory_);
|
| - memory_.reset();
|
| + manager_->Unlock(allocation_id_);
|
| + memory_ = NULL;
|
| }
|
|
|
| -void* DiscardableMemoryMalloc::Memory() const {
|
| +void* DiscardableMemoryAshmem::Memory() const {
|
| DCHECK(memory_);
|
| - return memory_.get();
|
| + return memory_;
|
| }
|
|
|
| } // namespace internal
|
|
|