Chromium Code Reviews| Index: components/discardable_memory/service/discardable_shared_memory_manager.cc |
| diff --git a/components/discardable_memory/service/discardable_shared_memory_manager.cc b/components/discardable_memory/service/discardable_shared_memory_manager.cc |
| index a974b2d9e27d8f35d1a59a9fcc7a5e8fdfc6e0e0..f79c18f0910d5d591d197017ab68f23a930a7a7c 100644 |
| --- a/components/discardable_memory/service/discardable_shared_memory_manager.cc |
| +++ b/components/discardable_memory/service/discardable_shared_memory_manager.cc |
| @@ -405,12 +405,14 @@ size_t DiscardableSharedMemoryManager::GetBytesAllocated() { |
| void DiscardableSharedMemoryManager::OnMemoryStateChange( |
| base::MemoryState state) { |
| + // Don't use SetMemoryLimit() as it free up existing allocations. |
|
bashi
2017/02/07 02:42:22
As noted in https://cs.chromium.org/chromium/src/b
reveman
2017/02/07 03:34:07
nit: s/free/frees/
maybe also mention here that O
bashi
2017/02/07 04:31:35
Done.
|
| + base::AutoLock lock(lock_); |
| switch (state) { |
| case base::MemoryState::NORMAL: |
| - SetMemoryLimit(default_memory_limit_); |
| + memory_limit_ = default_memory_limit_; |
| break; |
| case base::MemoryState::THROTTLED: |
| - SetMemoryLimit(0); |
| + memory_limit_ = 0; |
| break; |
| case base::MemoryState::SUSPENDED: |
| // Note that SUSPENDED never occurs in the main browser process so far. |
| @@ -421,6 +423,11 @@ void DiscardableSharedMemoryManager::OnMemoryStateChange( |
| } |
| } |
| +void DiscardableSharedMemoryManager::OnPurgeMemory() { |
| + base::AutoLock lock(lock_); |
| + ReduceMemoryUsageUntilWithinLimit(0); |
| +} |
| + |
| void DiscardableSharedMemoryManager::AllocateLockedDiscardableSharedMemory( |
| int client_id, |
| size_t size, |