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

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

Issue 129963002: Re-land: base: Fix registering of memory pressure listeners used when emulating discardable memory. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Temporarily disable memory_pressure_listener DCHECK Created 6 years, 11 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_provider.h" 8 #include "base/memory/discardable_memory_provider.h"
9 9
10 namespace base { 10 namespace base {
(...skipping 11 matching lines...) Expand all
22 : is_locked_(false) { 22 : is_locked_(false) {
23 g_provider.Pointer()->Register(this, size); 23 g_provider.Pointer()->Register(this, size);
24 } 24 }
25 25
26 DiscardableMemoryEmulated::~DiscardableMemoryEmulated() { 26 DiscardableMemoryEmulated::~DiscardableMemoryEmulated() {
27 if (is_locked_) 27 if (is_locked_)
28 Unlock(); 28 Unlock();
29 g_provider.Pointer()->Unregister(this); 29 g_provider.Pointer()->Unregister(this);
30 } 30 }
31 31
32 // static
33 void DiscardableMemoryEmulated::RegisterMemoryPressureListeners() {
34 g_provider.Pointer()->RegisterMemoryPressureListener();
35 }
36
37 // static
38 void DiscardableMemoryEmulated::UnregisterMemoryPressureListeners() {
39 g_provider.Pointer()->UnregisterMemoryPressureListener();
40 }
41
42 // static
43 void DiscardableMemoryEmulated::PurgeForTesting() {
44 g_provider.Pointer()->PurgeAll();
45 }
46
32 bool DiscardableMemoryEmulated::Initialize() { 47 bool DiscardableMemoryEmulated::Initialize() {
33 return Lock() == DISCARDABLE_MEMORY_LOCK_STATUS_PURGED; 48 return Lock() == DISCARDABLE_MEMORY_LOCK_STATUS_PURGED;
34 } 49 }
35 50
36 DiscardableMemoryLockStatus DiscardableMemoryEmulated::Lock() { 51 DiscardableMemoryLockStatus DiscardableMemoryEmulated::Lock() {
37 DCHECK(!is_locked_); 52 DCHECK(!is_locked_);
38 53
39 bool purged = false; 54 bool purged = false;
40 memory_ = g_provider.Pointer()->Acquire(this, &purged); 55 memory_ = g_provider.Pointer()->Acquire(this, &purged);
41 if (!memory_) 56 if (!memory_)
42 return DISCARDABLE_MEMORY_LOCK_STATUS_FAILED; 57 return DISCARDABLE_MEMORY_LOCK_STATUS_FAILED;
43 58
44 is_locked_ = true; 59 is_locked_ = true;
45 return purged ? DISCARDABLE_MEMORY_LOCK_STATUS_PURGED 60 return purged ? DISCARDABLE_MEMORY_LOCK_STATUS_PURGED
46 : DISCARDABLE_MEMORY_LOCK_STATUS_SUCCESS; 61 : DISCARDABLE_MEMORY_LOCK_STATUS_SUCCESS;
47 } 62 }
48 63
49 void DiscardableMemoryEmulated::Unlock() { 64 void DiscardableMemoryEmulated::Unlock() {
50 DCHECK(is_locked_); 65 DCHECK(is_locked_);
51 g_provider.Pointer()->Release(this, memory_.Pass()); 66 g_provider.Pointer()->Release(this, memory_.Pass());
52 is_locked_ = false; 67 is_locked_ = false;
53 } 68 }
54 69
55 void* DiscardableMemoryEmulated::Memory() const { 70 void* DiscardableMemoryEmulated::Memory() const {
56 DCHECK(memory_); 71 DCHECK(memory_);
57 return memory_.get(); 72 return memory_.get();
58 } 73 }
59 74
60 // static
61 void DiscardableMemoryEmulated::PurgeForTesting() {
62 g_provider.Pointer()->PurgeAll();
63 }
64
65 } // namespace internal 75 } // namespace internal
66 } // namespace base 76 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698