Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(451)

Side by Side Diff: base/memory/discardable_memory_emulated.cc

Issue 195863005: Use DiscardableMemoryManager on Android. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix DiscardableMemoryAshmem + enable unit test on Android that exposes the bug Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/memory/discardable_memory_emulated.h" 5 #include "base/memory/discardable_memory_emulated.h"
6 6
7 #include "base/lazy_instance.h" 7 #include "base/lazy_instance.h"
8 #include "base/memory/discardable_memory_manager.h" 8 #include "base/memory/discardable_memory_manager.h"
9 9
10 namespace base { 10 namespace base {
11 namespace { 11 namespace {
12 12
13 base::LazyInstance<internal::DiscardableMemoryManager>::Leaky g_manager = 13 base::LazyInstance<internal::DiscardableMemoryManager>::Leaky g_manager =
14 LAZY_INSTANCE_INITIALIZER; 14 LAZY_INSTANCE_INITIALIZER;
15 15
16 } // namespace 16 } // namespace
17 17
18 namespace internal { 18 namespace internal {
19 19
20 DiscardableMemoryEmulated::DiscardableMemoryEmulated(size_t size) 20 DiscardableMemoryEmulated::DiscardableMemoryEmulated(size_t bytes)
21 : is_locked_(false) { 21 : bytes_(bytes),
22 g_manager.Pointer()->Register(this, size); 22 is_locked_(false) {
23 g_manager.Pointer()->Register(this, bytes);
23 } 24 }
24 25
25 DiscardableMemoryEmulated::~DiscardableMemoryEmulated() { 26 DiscardableMemoryEmulated::~DiscardableMemoryEmulated() {
26 if (is_locked_) 27 if (is_locked_)
27 Unlock(); 28 Unlock();
28 g_manager.Pointer()->Unregister(this); 29 g_manager.Pointer()->Unregister(this);
29 } 30 }
30 31
31 // static 32 // static
32 void DiscardableMemoryEmulated::RegisterMemoryPressureListeners() { 33 void DiscardableMemoryEmulated::RegisterMemoryPressureListeners() {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 g_manager.Pointer()->ReleaseLock(this); 65 g_manager.Pointer()->ReleaseLock(this);
65 is_locked_ = false; 66 is_locked_ = false;
66 } 67 }
67 68
68 void* DiscardableMemoryEmulated::Memory() const { 69 void* DiscardableMemoryEmulated::Memory() const {
69 DCHECK(is_locked_); 70 DCHECK(is_locked_);
70 DCHECK(memory_); 71 DCHECK(memory_);
71 return memory_.get(); 72 return memory_.get();
72 } 73 }
73 74
74 bool DiscardableMemoryEmulated::AllocateAndAcquireLock(size_t bytes) { 75 bool DiscardableMemoryEmulated::AllocateAndAcquireLock() {
75 if (memory_) 76 if (memory_)
76 return true; 77 return true;
77 78
78 memory_.reset(new uint8[bytes]); 79 memory_.reset(new uint8[bytes_]);
79 return false; 80 return false;
80 } 81 }
81 82
82 void DiscardableMemoryEmulated::Purge() { 83 void DiscardableMemoryEmulated::Purge() {
83 memory_.reset(); 84 memory_.reset();
84 } 85 }
85 86
86 } // namespace internal 87 } // namespace internal
87 } // namespace base 88 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698