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

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

Issue 1544293002: Convert Pass()→std::move() in //content (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 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
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 #include <utility>
8 9
9 #include "base/atomic_sequence_num.h" 10 #include "base/atomic_sequence_num.h"
10 #include "base/bind.h" 11 #include "base/bind.h"
11 #include "base/callback.h" 12 #include "base/callback.h"
12 #include "base/debug/crash_logging.h" 13 #include "base/debug/crash_logging.h"
13 #include "base/lazy_instance.h" 14 #include "base/lazy_instance.h"
14 #include "base/macros.h" 15 #include "base/macros.h"
15 #include "base/memory/discardable_memory.h" 16 #include "base/memory/discardable_memory.h"
16 #include "base/numerics/safe_math.h" 17 #include "base/numerics/safe_math.h"
17 #include "base/strings/string_number_conversions.h" 18 #include "base/strings/string_number_conversions.h"
18 #include "base/strings/stringprintf.h" 19 #include "base/strings/stringprintf.h"
19 #include "base/sys_info.h" 20 #include "base/sys_info.h"
20 #include "base/thread_task_runner_handle.h" 21 #include "base/thread_task_runner_handle.h"
21 #include "base/trace_event/memory_allocator_dump.h" 22 #include "base/trace_event/memory_allocator_dump.h"
22 #include "base/trace_event/memory_dump_manager.h" 23 #include "base/trace_event/memory_dump_manager.h"
23 #include "base/trace_event/process_memory_dump.h" 24 #include "base/trace_event/process_memory_dump.h"
24 #include "base/trace_event/trace_event.h" 25 #include "base/trace_event/trace_event.h"
25 #include "build/build_config.h" 26 #include "build/build_config.h"
26 #include "content/common/child_process_host_impl.h" 27 #include "content/common/child_process_host_impl.h"
27 #include "content/common/discardable_shared_memory_heap.h" 28 #include "content/common/discardable_shared_memory_heap.h"
28 #include "content/public/common/child_process_host.h" 29 #include "content/public/common/child_process_host.h"
29 30
30 namespace content { 31 namespace content {
31 namespace { 32 namespace {
32 33
33 class DiscardableMemoryImpl : public base::DiscardableMemory { 34 class DiscardableMemoryImpl : public base::DiscardableMemory {
34 public: 35 public:
35 DiscardableMemoryImpl(scoped_ptr<base::DiscardableSharedMemory> shared_memory, 36 DiscardableMemoryImpl(scoped_ptr<base::DiscardableSharedMemory> shared_memory,
36 const base::Closure& deleted_callback) 37 const base::Closure& deleted_callback)
37 : shared_memory_(shared_memory.Pass()), 38 : shared_memory_(std::move(shared_memory)),
38 deleted_callback_(deleted_callback), 39 deleted_callback_(deleted_callback),
39 is_locked_(true) {} 40 is_locked_(true) {}
40 41
41 ~DiscardableMemoryImpl() override { 42 ~DiscardableMemoryImpl() override {
42 if (is_locked_) 43 if (is_locked_)
43 shared_memory_->Unlock(0, 0); 44 shared_memory_->Unlock(0, 0);
44 45
45 deleted_callback_.Run(); 46 deleted_callback_.Run();
46 } 47 }
47 48
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 100
100 const int kEnforceMemoryPolicyDelayMs = 1000; 101 const int kEnforceMemoryPolicyDelayMs = 1000;
101 102
102 // Global atomic to generate unique discardable shared memory IDs. 103 // Global atomic to generate unique discardable shared memory IDs.
103 base::StaticAtomicSequenceNumber g_next_discardable_shared_memory_id; 104 base::StaticAtomicSequenceNumber g_next_discardable_shared_memory_id;
104 105
105 } // namespace 106 } // namespace
106 107
107 HostDiscardableSharedMemoryManager::MemorySegment::MemorySegment( 108 HostDiscardableSharedMemoryManager::MemorySegment::MemorySegment(
108 scoped_ptr<base::DiscardableSharedMemory> memory) 109 scoped_ptr<base::DiscardableSharedMemory> memory)
109 : memory_(memory.Pass()) { 110 : memory_(std::move(memory)) {}
110 }
111 111
112 HostDiscardableSharedMemoryManager::MemorySegment::~MemorySegment() { 112 HostDiscardableSharedMemoryManager::MemorySegment::~MemorySegment() {
113 } 113 }
114 114
115 HostDiscardableSharedMemoryManager::HostDiscardableSharedMemoryManager() 115 HostDiscardableSharedMemoryManager::HostDiscardableSharedMemoryManager()
116 : memory_limit_( 116 : memory_limit_(
117 // Allow 25% of physical memory to be used for discardable memory. 117 // Allow 25% of physical memory to be used for discardable memory.
118 std::min(base::SysInfo::AmountOfPhysicalMemory() / 4, 118 std::min(base::SysInfo::AmountOfPhysicalMemory() / 4,
119 base::SysInfo::IsLowEndDevice() 119 base::SysInfo::IsLowEndDevice()
120 ? 120 ?
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 AllocateLockedDiscardableSharedMemory(current_process_handle, 160 AllocateLockedDiscardableSharedMemory(current_process_handle,
161 ChildProcessHost::kInvalidUniqueID, 161 ChildProcessHost::kInvalidUniqueID,
162 size, new_id, &handle); 162 size, new_id, &handle);
163 CHECK(base::SharedMemory::IsHandleValid(handle)); 163 CHECK(base::SharedMemory::IsHandleValid(handle));
164 scoped_ptr<base::DiscardableSharedMemory> memory( 164 scoped_ptr<base::DiscardableSharedMemory> memory(
165 new base::DiscardableSharedMemory(handle)); 165 new base::DiscardableSharedMemory(handle));
166 CHECK(memory->Map(size)); 166 CHECK(memory->Map(size));
167 // Close file descriptor to avoid running out. 167 // Close file descriptor to avoid running out.
168 memory->Close(); 168 memory->Close();
169 return make_scoped_ptr(new DiscardableMemoryImpl( 169 return make_scoped_ptr(new DiscardableMemoryImpl(
170 memory.Pass(), 170 std::move(memory),
171 base::Bind( 171 base::Bind(
172 &HostDiscardableSharedMemoryManager::DeletedDiscardableSharedMemory, 172 &HostDiscardableSharedMemoryManager::DeletedDiscardableSharedMemory,
173 base::Unretained(this), new_id, ChildProcessHost::kInvalidUniqueID))); 173 base::Unretained(this), new_id, ChildProcessHost::kInvalidUniqueID)));
174 } 174 }
175 175
176 bool HostDiscardableSharedMemoryManager::OnMemoryDump( 176 bool HostDiscardableSharedMemoryManager::OnMemoryDump(
177 const base::trace_event::MemoryDumpArgs& args, 177 const base::trace_event::MemoryDumpArgs& args,
178 base::trace_event::ProcessMemoryDump* pmd) { 178 base::trace_event::ProcessMemoryDump* pmd) {
179 base::AutoLock lock(lock_); 179 base::AutoLock lock(lock_);
180 for (const auto& process_entry : processes_) { 180 for (const auto& process_entry : processes_) {
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 base::CheckedNumeric<size_t> checked_bytes_allocated = bytes_allocated_; 339 base::CheckedNumeric<size_t> checked_bytes_allocated = bytes_allocated_;
340 checked_bytes_allocated += memory->mapped_size(); 340 checked_bytes_allocated += memory->mapped_size();
341 if (!checked_bytes_allocated.IsValid()) { 341 if (!checked_bytes_allocated.IsValid()) {
342 *shared_memory_handle = base::SharedMemory::NULLHandle(); 342 *shared_memory_handle = base::SharedMemory::NULLHandle();
343 return; 343 return;
344 } 344 }
345 345
346 bytes_allocated_ = checked_bytes_allocated.ValueOrDie(); 346 bytes_allocated_ = checked_bytes_allocated.ValueOrDie();
347 BytesAllocatedChanged(bytes_allocated_); 347 BytesAllocatedChanged(bytes_allocated_);
348 348
349 scoped_refptr<MemorySegment> segment(new MemorySegment(memory.Pass())); 349 scoped_refptr<MemorySegment> segment(new MemorySegment(std::move(memory)));
350 process_segments[id] = segment.get(); 350 process_segments[id] = segment.get();
351 segments_.push_back(segment.get()); 351 segments_.push_back(segment.get());
352 std::push_heap(segments_.begin(), segments_.end(), CompareMemoryUsageTime); 352 std::push_heap(segments_.begin(), segments_.end(), CompareMemoryUsageTime);
353 353
354 if (bytes_allocated_ > memory_limit_) 354 if (bytes_allocated_ > memory_limit_)
355 ScheduleEnforceMemoryPolicy(); 355 ScheduleEnforceMemoryPolicy();
356 } 356 }
357 357
358 void HostDiscardableSharedMemoryManager::DeletedDiscardableSharedMemory( 358 void HostDiscardableSharedMemoryManager::DeletedDiscardableSharedMemory(
359 DiscardableSharedMemoryId id, 359 DiscardableSharedMemoryId id,
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 return; 494 return;
495 495
496 enforce_memory_policy_pending_ = true; 496 enforce_memory_policy_pending_ = true;
497 DCHECK(enforce_memory_policy_task_runner_); 497 DCHECK(enforce_memory_policy_task_runner_);
498 enforce_memory_policy_task_runner_->PostDelayedTask( 498 enforce_memory_policy_task_runner_->PostDelayedTask(
499 FROM_HERE, enforce_memory_policy_callback_, 499 FROM_HERE, enforce_memory_policy_callback_,
500 base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs)); 500 base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs));
501 } 501 }
502 502
503 } // namespace content 503 } // namespace content
OLDNEW
« no previous file with comments | « content/common/gpu/media/gpu_video_encode_accelerator.cc ('k') | content/common/host_shared_bitmap_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698