Index: trunk/src/base/memory/discardable_memory_provider.cc |
=================================================================== |
--- trunk/src/base/memory/discardable_memory_provider.cc (revision 244277) |
+++ trunk/src/base/memory/discardable_memory_provider.cc (working copy) |
@@ -29,7 +29,10 @@ |
bytes_allocated_(0), |
discardable_memory_limit_(kDefaultDiscardableMemoryLimit), |
bytes_to_reclaim_under_moderate_pressure_( |
- kDefaultBytesToReclaimUnderModeratePressure) { |
+ kDefaultBytesToReclaimUnderModeratePressure), |
+ memory_pressure_listener_( |
+ base::Bind(&DiscardableMemoryProvider::NotifyMemoryPressure, |
+ Unretained(this))) { |
} |
DiscardableMemoryProvider::~DiscardableMemoryProvider() { |
@@ -37,20 +40,18 @@ |
DCHECK_EQ(0u, bytes_allocated_); |
} |
-void DiscardableMemoryProvider::RegisterMemoryPressureListener() { |
- AutoLock lock(lock_); |
- DCHECK(base::MessageLoop::current()); |
- DCHECK(!memory_pressure_listener_); |
- memory_pressure_listener_.reset( |
- new MemoryPressureListener( |
- base::Bind(&DiscardableMemoryProvider::OnMemoryPressure, |
- Unretained(this)))); |
-} |
+void DiscardableMemoryProvider::NotifyMemoryPressure( |
+ MemoryPressureListener::MemoryPressureLevel pressure_level) { |
+ switch (pressure_level) { |
+ case MemoryPressureListener::MEMORY_PRESSURE_MODERATE: |
+ Purge(); |
+ return; |
+ case MemoryPressureListener::MEMORY_PRESSURE_CRITICAL: |
+ PurgeAll(); |
+ return; |
+ } |
-void DiscardableMemoryProvider::UnregisterMemoryPressureListener() { |
- AutoLock lock(lock_); |
- DCHECK(memory_pressure_listener_); |
- memory_pressure_listener_.reset(); |
+ NOTREACHED(); |
} |
void DiscardableMemoryProvider::SetDiscardableMemoryLimit(size_t bytes) { |
@@ -68,9 +69,6 @@ |
void DiscardableMemoryProvider::Register( |
const DiscardableMemory* discardable, size_t bytes) { |
AutoLock lock(lock_); |
- // A registered memory listener is currently required. This DCHECK can be |
- // moved or removed if we decide that it's useful to relax this condition. |
- DCHECK(memory_pressure_listener_); |
DCHECK(allocations_.Peek(discardable) == allocations_.end()); |
allocations_.Put(discardable, Allocation(bytes)); |
} |
@@ -171,20 +169,6 @@ |
return bytes_allocated_; |
} |
-void DiscardableMemoryProvider::OnMemoryPressure( |
- MemoryPressureListener::MemoryPressureLevel pressure_level) { |
- switch (pressure_level) { |
- case MemoryPressureListener::MEMORY_PRESSURE_MODERATE: |
- Purge(); |
- return; |
- case MemoryPressureListener::MEMORY_PRESSURE_CRITICAL: |
- PurgeAll(); |
- return; |
- } |
- |
- NOTREACHED(); |
-} |
- |
void DiscardableMemoryProvider::Purge() { |
AutoLock lock(lock_); |