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 9namespace base { 10namespace internal { 11 12DiscardableMemoryMalloc::DiscardableMemoryMalloc(size_t size) : size_(size) { 13} 14 15DiscardableMemoryMalloc::~DiscardableMemoryMalloc() { 16} 17 18bool DiscardableMemoryMalloc::Initialize() { 19 return Lock() != DISCARDABLE_MEMORY_LOCK_STATUS_FAILED; 20} 21 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 32void DiscardableMemoryMalloc::Unlock() { 33 DCHECK(memory_); 34 memory_.reset(); 35} 36 37void* DiscardableMemoryMalloc::Memory() const { 38 DCHECK(memory_); 39 return memory_.get(); 40} 41 42} // namespace internal 43} // namespace base 44