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

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

Issue 1001873002: base: Rename discardable memory allocator interface and remove unnecessary class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@remove-dm-types
Patch Set: rebase Created 5 years, 9 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 8
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/debug/crash_logging.h" 10 #include "base/debug/crash_logging.h"
11 #include "base/lazy_instance.h" 11 #include "base/lazy_instance.h"
12 #include "base/memory/discardable_memory.h"
12 #include "base/numerics/safe_math.h" 13 #include "base/numerics/safe_math.h"
13 #include "base/profiler/scoped_tracker.h" 14 #include "base/profiler/scoped_tracker.h"
14 #include "base/strings/string_number_conversions.h" 15 #include "base/strings/string_number_conversions.h"
15 #include "base/sys_info.h" 16 #include "base/sys_info.h"
16 #include "base/trace_event/trace_event.h" 17 #include "base/trace_event/trace_event.h"
17 18
18 namespace content { 19 namespace content {
19 namespace { 20 namespace {
20 21
21 class DiscardableMemoryShmemChunkImpl 22 class DiscardableMemoryImpl : public base::DiscardableMemory {
22 : public base::DiscardableMemoryShmemChunk {
23 public: 23 public:
24 explicit DiscardableMemoryShmemChunkImpl( 24 explicit DiscardableMemoryImpl(
25 scoped_ptr<base::DiscardableSharedMemory> shared_memory) 25 scoped_ptr<base::DiscardableSharedMemory> shared_memory)
26 : shared_memory_(shared_memory.Pass()), is_locked_(true) {} 26 : shared_memory_(shared_memory.Pass()), is_locked_(true) {}
27 ~DiscardableMemoryShmemChunkImpl() override { 27 ~DiscardableMemoryImpl() override {
28 if (is_locked_) 28 if (is_locked_)
29 shared_memory_->Unlock(0, 0); 29 shared_memory_->Unlock(0, 0);
30 shared_memory_->Purge(base::Time::Now()); 30 shared_memory_->Purge(base::Time::Now());
31 } 31 }
32 32
33 // Overridden from base::DiscardableMemoryShmemChunk: 33 // Overridden from base::DiscardableMemory:
34 bool Lock() override { 34 bool Lock() override {
35 DCHECK(!is_locked_); 35 DCHECK(!is_locked_);
36 36
37 if (shared_memory_->Lock(0, 0) != base::DiscardableSharedMemory::SUCCESS) 37 if (shared_memory_->Lock(0, 0) != base::DiscardableSharedMemory::SUCCESS)
38 return false; 38 return false;
39 39
40 is_locked_ = true; 40 is_locked_ = true;
41 return true; 41 return true;
42 } 42 }
43 void Unlock() override { 43 void Unlock() override {
44 DCHECK(is_locked_); 44 DCHECK(is_locked_);
45 45
46 shared_memory_->Unlock(0, 0); 46 shared_memory_->Unlock(0, 0);
47 is_locked_ = false; 47 is_locked_ = false;
48 } 48 }
49 void* Memory() const override { 49 void* Memory() const override {
50 DCHECK(is_locked_); 50 DCHECK(is_locked_);
51 return shared_memory_->memory(); 51 return shared_memory_->memory();
52 } 52 }
53 53
54 private: 54 private:
55 scoped_ptr<base::DiscardableSharedMemory> shared_memory_; 55 scoped_ptr<base::DiscardableSharedMemory> shared_memory_;
56 bool is_locked_; 56 bool is_locked_;
57 57
58 DISALLOW_COPY_AND_ASSIGN(DiscardableMemoryShmemChunkImpl); 58 DISALLOW_COPY_AND_ASSIGN(DiscardableMemoryImpl);
59 }; 59 };
60 60
61 base::LazyInstance<HostDiscardableSharedMemoryManager> 61 base::LazyInstance<HostDiscardableSharedMemoryManager>
62 g_discardable_shared_memory_manager = LAZY_INSTANCE_INITIALIZER; 62 g_discardable_shared_memory_manager = LAZY_INSTANCE_INITIALIZER;
63 63
64 const int64_t kMaxDefaultMemoryLimit = 512 * 1024 * 1024; 64 const int64_t kMaxDefaultMemoryLimit = 512 * 1024 * 1024;
65 65
66 const int kEnforceMemoryPolicyDelayMs = 1000; 66 const int kEnforceMemoryPolicyDelayMs = 1000;
67 67
68 } // namespace 68 } // namespace
(...skipping 22 matching lines...) Expand all
91 } 91 }
92 92
93 HostDiscardableSharedMemoryManager::~HostDiscardableSharedMemoryManager() { 93 HostDiscardableSharedMemoryManager::~HostDiscardableSharedMemoryManager() {
94 } 94 }
95 95
96 HostDiscardableSharedMemoryManager* 96 HostDiscardableSharedMemoryManager*
97 HostDiscardableSharedMemoryManager::current() { 97 HostDiscardableSharedMemoryManager::current() {
98 return g_discardable_shared_memory_manager.Pointer(); 98 return g_discardable_shared_memory_manager.Pointer();
99 } 99 }
100 100
101 scoped_ptr<base::DiscardableMemoryShmemChunk> 101 scoped_ptr<base::DiscardableMemory>
102 HostDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory( 102 HostDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(
103 size_t size) { 103 size_t size) {
104 // Note: Use DiscardableSharedMemoryHeap for in-process allocation 104 // Note: Use DiscardableSharedMemoryHeap for in-process allocation
105 // of discardable memory if the cost of each allocation is too high. 105 // of discardable memory if the cost of each allocation is too high.
106 base::SharedMemoryHandle handle; 106 base::SharedMemoryHandle handle;
107 AllocateLockedDiscardableSharedMemory(base::GetCurrentProcessHandle(), size, 107 AllocateLockedDiscardableSharedMemory(base::GetCurrentProcessHandle(), size,
108 &handle); 108 &handle);
109 CHECK(base::SharedMemory::IsHandleValid(handle)); 109 CHECK(base::SharedMemory::IsHandleValid(handle));
110 scoped_ptr<base::DiscardableSharedMemory> memory( 110 scoped_ptr<base::DiscardableSharedMemory> memory(
111 new base::DiscardableSharedMemory(handle)); 111 new base::DiscardableSharedMemory(handle));
112 CHECK(memory->Map(size)); 112 CHECK(memory->Map(size));
113 return make_scoped_ptr(new DiscardableMemoryShmemChunkImpl(memory.Pass())); 113 return make_scoped_ptr(new DiscardableMemoryImpl(memory.Pass()));
114 } 114 }
115 115
116 void HostDiscardableSharedMemoryManager:: 116 void HostDiscardableSharedMemoryManager::
117 AllocateLockedDiscardableSharedMemoryForChild( 117 AllocateLockedDiscardableSharedMemoryForChild(
118 base::ProcessHandle process_handle, 118 base::ProcessHandle process_handle,
119 size_t size, 119 size_t size,
120 base::SharedMemoryHandle* shared_memory_handle) { 120 base::SharedMemoryHandle* shared_memory_handle) {
121 AllocateLockedDiscardableSharedMemory(process_handle, size, 121 AllocateLockedDiscardableSharedMemory(process_handle, size,
122 shared_memory_handle); 122 shared_memory_handle);
123 } 123 }
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 343
344 enforce_memory_policy_pending_ = true; 344 enforce_memory_policy_pending_ = true;
345 base::MessageLoop::current()->PostDelayedTask( 345 base::MessageLoop::current()->PostDelayedTask(
346 FROM_HERE, 346 FROM_HERE,
347 base::Bind(&HostDiscardableSharedMemoryManager::EnforceMemoryPolicy, 347 base::Bind(&HostDiscardableSharedMemoryManager::EnforceMemoryPolicy,
348 weak_ptr_factory_.GetWeakPtr()), 348 weak_ptr_factory_.GetWeakPtr()),
349 base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs)); 349 base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs));
350 } 350 }
351 351
352 } // namespace content 352 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698