Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / base / memory / discardable_memory_malloc.cc
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
12 DiscardableMemoryMalloc::DiscardableMemoryMalloc(size_t size) : size_(size) {
13 }
14
15 DiscardableMemoryMalloc::~DiscardableMemoryMalloc() {
16 }
17
18 bool DiscardableMemoryMalloc::Initialize() {
19   return Lock() == DISCARDABLE_MEMORY_LOCK_STATUS_PURGED;
20 }
21
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
32 void DiscardableMemoryMalloc::Unlock() {
33   DCHECK(memory_);
34   memory_.reset();
35 }
36
37 void* DiscardableMemoryMalloc::Memory() const {
38   DCHECK(memory_);
39   return memory_.get();
40 }
41
42 }  // namespace internal
43 }  // namespace base