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

Side by Side Diff: content/common/host_discardable_shared_memory_manager.cc

Issue 1430743002: content: Always run EnforceMemoryPolicy() callbacks on the same thread. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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
OLDNEW
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 8
9 #include "base/atomic_sequence_num.h" 9 #include "base/atomic_sequence_num.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 std::min(base::SysInfo::AmountOfPhysicalMemory() / 4, 116 std::min(base::SysInfo::AmountOfPhysicalMemory() / 4,
117 base::SysInfo::IsLowEndDevice() 117 base::SysInfo::IsLowEndDevice()
118 ? 118 ?
119 // Use 1/8th of discardable memory on low-end devices. 119 // Use 1/8th of discardable memory on low-end devices.
120 kMaxDefaultMemoryLimit / 8 120 kMaxDefaultMemoryLimit / 8
121 : kMaxDefaultMemoryLimit)), 121 : kMaxDefaultMemoryLimit)),
122 bytes_allocated_(0), 122 bytes_allocated_(0),
123 memory_pressure_listener_(new base::MemoryPressureListener( 123 memory_pressure_listener_(new base::MemoryPressureListener(
124 base::Bind(&HostDiscardableSharedMemoryManager::OnMemoryPressure, 124 base::Bind(&HostDiscardableSharedMemoryManager::OnMemoryPressure,
125 base::Unretained(this)))), 125 base::Unretained(this)))),
126 // Current thread might not have a task runner in tests.
127 enforce_memory_policy_task_runner_(
128 base::ThreadTaskRunnerHandle::IsSet()
129 ? base::ThreadTaskRunnerHandle::Get()
130 : nullptr),
126 enforce_memory_policy_pending_(false), 131 enforce_memory_policy_pending_(false),
127 weak_ptr_factory_(this) { 132 weak_ptr_factory_(this) {
128 DCHECK_NE(memory_limit_, 0u); 133 DCHECK_NE(memory_limit_, 0u);
134 enforce_memory_policy_callback_ =
135 base::Bind(&HostDiscardableSharedMemoryManager::EnforceMemoryPolicy,
136 weak_ptr_factory_.GetWeakPtr());
129 base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( 137 base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
130 this); 138 this);
131 } 139 }
132 140
133 HostDiscardableSharedMemoryManager::~HostDiscardableSharedMemoryManager() { 141 HostDiscardableSharedMemoryManager::~HostDiscardableSharedMemoryManager() {
134 base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider( 142 base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider(
135 this); 143 this);
136 } 144 }
137 145
138 HostDiscardableSharedMemoryManager* 146 HostDiscardableSharedMemoryManager*
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 return base::Time::Now(); 487 return base::Time::Now();
480 } 488 }
481 489
482 void HostDiscardableSharedMemoryManager::ScheduleEnforceMemoryPolicy() { 490 void HostDiscardableSharedMemoryManager::ScheduleEnforceMemoryPolicy() {
483 lock_.AssertAcquired(); 491 lock_.AssertAcquired();
484 492
485 if (enforce_memory_policy_pending_) 493 if (enforce_memory_policy_pending_)
486 return; 494 return;
487 495
488 enforce_memory_policy_pending_ = true; 496 enforce_memory_policy_pending_ = true;
489 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 497 DCHECK(enforce_memory_policy_task_runner_);
490 FROM_HERE, 498 enforce_memory_policy_task_runner_->PostDelayedTask(
491 base::Bind(&HostDiscardableSharedMemoryManager::EnforceMemoryPolicy, 499 FROM_HERE, enforce_memory_policy_callback_,
492 weak_ptr_factory_.GetWeakPtr()),
493 base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs)); 500 base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs));
494 } 501 }
495 502
496 } // namespace content 503 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698