1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/memory/discardable_memory_malloc.h" 6 7 #include "base/logging.h" 8 9 namespace base { 10 namespace internal { 11 DiscardableMemoryMalloc(size_t size)12DiscardableMemoryMalloc::DiscardableMemoryMalloc(size_t size) : size_(size) { 13 } 14 ~DiscardableMemoryMalloc()15DiscardableMemoryMalloc::~DiscardableMemoryMalloc() { 16 } 17 Initialize()18bool DiscardableMemoryMalloc::Initialize() { 19 return Lock() != DISCARDABLE_MEMORY_LOCK_STATUS_FAILED; 20 } 21 Lock()22DiscardableMemoryLockStatus DiscardableMemoryMalloc::Lock() { 23 DCHECK(!memory_); 24 25 memory_.reset(static_cast<uint8*>(malloc(size_))); 26 if (!memory_) 27 return DISCARDABLE_MEMORY_LOCK_STATUS_FAILED; 28 29 return DISCARDABLE_MEMORY_LOCK_STATUS_PURGED; 30 } 31 Unlock()32void DiscardableMemoryMalloc::Unlock() { 33 DCHECK(memory_); 34 memory_.reset(); 35 } 36 Memory() const37void* DiscardableMemoryMalloc::Memory() const { 38 DCHECK(memory_); 39 return memory_.get(); 40 } 41 42 } // namespace internal 43 } // namespace base 44