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