Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 "content/common/host_discardable_shared_memory_manager.h" | 5 #include "content/common/host_discardable_shared_memory_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/atomic_sequence_num.h" | 10 #include "base/atomic_sequence_num.h" |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 157 } // namespace | 157 } // namespace |
| 158 | 158 |
| 159 HostDiscardableSharedMemoryManager::MemorySegment::MemorySegment( | 159 HostDiscardableSharedMemoryManager::MemorySegment::MemorySegment( |
| 160 std::unique_ptr<base::DiscardableSharedMemory> memory) | 160 std::unique_ptr<base::DiscardableSharedMemory> memory) |
| 161 : memory_(std::move(memory)) {} | 161 : memory_(std::move(memory)) {} |
| 162 | 162 |
| 163 HostDiscardableSharedMemoryManager::MemorySegment::~MemorySegment() { | 163 HostDiscardableSharedMemoryManager::MemorySegment::~MemorySegment() { |
| 164 } | 164 } |
| 165 | 165 |
| 166 HostDiscardableSharedMemoryManager::HostDiscardableSharedMemoryManager() | 166 HostDiscardableSharedMemoryManager::HostDiscardableSharedMemoryManager() |
| 167 : memory_limit_(GetDefaultMemoryLimit()), | 167 : default_memory_limit_(GetDefaultMemoryLimit()), |
|
bashi
2016/10/04 03:13:10
Though GetDefaultMemoryLimit() could be dynamicall
| |
| 168 memory_limit_(default_memory_limit_), | |
| 168 bytes_allocated_(0), | 169 bytes_allocated_(0), |
| 169 memory_pressure_listener_(new base::MemoryPressureListener( | 170 memory_pressure_listener_(new base::MemoryPressureListener( |
| 170 base::Bind(&HostDiscardableSharedMemoryManager::OnMemoryPressure, | 171 base::Bind(&HostDiscardableSharedMemoryManager::OnMemoryPressure, |
| 171 base::Unretained(this)))), | 172 base::Unretained(this)))), |
| 172 // Current thread might not have a task runner in tests. | 173 // Current thread might not have a task runner in tests. |
| 173 enforce_memory_policy_task_runner_(base::ThreadTaskRunnerHandle::Get()), | 174 enforce_memory_policy_task_runner_(base::ThreadTaskRunnerHandle::Get()), |
| 174 enforce_memory_policy_pending_(false), | 175 enforce_memory_policy_pending_(false), |
| 175 weak_ptr_factory_(this) { | 176 weak_ptr_factory_(this) { |
| 176 DCHECK_NE(memory_limit_, 0u); | 177 DCHECK_NE(memory_limit_, 0u); |
| 177 enforce_memory_policy_callback_ = | 178 enforce_memory_policy_callback_ = |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 345 size_t HostDiscardableSharedMemoryManager::GetBytesAllocated() { | 346 size_t HostDiscardableSharedMemoryManager::GetBytesAllocated() { |
| 346 base::AutoLock lock(lock_); | 347 base::AutoLock lock(lock_); |
| 347 | 348 |
| 348 return bytes_allocated_; | 349 return bytes_allocated_; |
| 349 } | 350 } |
| 350 | 351 |
| 351 void HostDiscardableSharedMemoryManager::OnMemoryStateChange( | 352 void HostDiscardableSharedMemoryManager::OnMemoryStateChange( |
| 352 base::MemoryState state) { | 353 base::MemoryState state) { |
| 353 switch (state) { | 354 switch (state) { |
| 354 case base::MemoryState::NORMAL: | 355 case base::MemoryState::NORMAL: |
| 355 SetMemoryLimit(GetDefaultMemoryLimit()); | 356 SetMemoryLimit(default_memory_limit_); |
| 356 break; | 357 break; |
| 357 case base::MemoryState::THROTTLED: | 358 case base::MemoryState::THROTTLED: |
| 358 SetMemoryLimit(0); | 359 SetMemoryLimit(0); |
| 359 break; | 360 break; |
| 360 case base::MemoryState::SUSPENDED: | 361 case base::MemoryState::SUSPENDED: |
| 361 // Note that SUSPENDED never occurs in the main browser process so far. | 362 // Note that SUSPENDED never occurs in the main browser process so far. |
| 362 // Fall through. | 363 // Fall through. |
| 363 case base::MemoryState::UNKNOWN: | 364 case base::MemoryState::UNKNOWN: |
| 364 NOTREACHED(); | 365 NOTREACHED(); |
| 365 break; | 366 break; |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 570 return; | 571 return; |
| 571 | 572 |
| 572 enforce_memory_policy_pending_ = true; | 573 enforce_memory_policy_pending_ = true; |
| 573 DCHECK(enforce_memory_policy_task_runner_); | 574 DCHECK(enforce_memory_policy_task_runner_); |
| 574 enforce_memory_policy_task_runner_->PostDelayedTask( | 575 enforce_memory_policy_task_runner_->PostDelayedTask( |
| 575 FROM_HERE, enforce_memory_policy_callback_, | 576 FROM_HERE, enforce_memory_policy_callback_, |
| 576 base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs)); | 577 base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs)); |
| 577 } | 578 } |
| 578 | 579 |
| 579 } // namespace content | 580 } // namespace content |
| OLD | NEW |