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

Side by Side Diff: base/memory/discardable_memory_android.cc

Issue 681713002: Update from chromium https://crrev.com/301315 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 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
« no previous file with comments | « base/memory/discardable_memory.cc ('k') | base/memory/discardable_memory_ashmem.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "base/memory/discardable_memory.h" 5 #include "base/memory/discardable_memory.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/memory/discardable_memory_ashmem.h" 11 #include "base/memory/discardable_memory_ashmem.h"
12 #include "base/memory/discardable_memory_ashmem_allocator.h" 12 #include "base/memory/discardable_memory_ashmem_allocator.h"
13 #include "base/memory/discardable_memory_emulated.h" 13 #include "base/memory/discardable_memory_emulated.h"
14 #include "base/memory/discardable_memory_shmem.h"
14 #include "base/sys_info.h" 15 #include "base/sys_info.h"
15 16
16 namespace base { 17 namespace base {
17 namespace { 18 namespace {
18 19
19 const char kAshmemAllocatorName[] = "DiscardableMemoryAshmemAllocator"; 20 const char kAshmemAllocatorName[] = "DiscardableMemoryAshmemAllocator";
20 21
21 // For Ashmem, have the DiscardableMemoryManager trigger userspace eviction 22 // For Ashmem, have the DiscardableMemoryManager trigger userspace eviction
22 // when address space usage gets too high (e.g. 512 MBytes). 23 // when address space usage gets too high (e.g. 512 MBytes).
23 const size_t kAshmemMemoryLimit = 512 * 1024 * 1024; 24 const size_t kAshmemMemoryLimit = 512 * 1024 * 1024;
(...skipping 12 matching lines...) Expand all
36 GetOptimalAshmemRegionSizeForAllocator()) {} 37 GetOptimalAshmemRegionSizeForAllocator()) {}
37 38
38 internal::DiscardableMemoryManager manager; 39 internal::DiscardableMemoryManager manager;
39 internal::DiscardableMemoryAshmemAllocator allocator; 40 internal::DiscardableMemoryAshmemAllocator allocator;
40 }; 41 };
41 LazyInstance<SharedState>::Leaky g_shared_state = LAZY_INSTANCE_INITIALIZER; 42 LazyInstance<SharedState>::Leaky g_shared_state = LAZY_INSTANCE_INITIALIZER;
42 43
43 } // namespace 44 } // namespace
44 45
45 // static 46 // static
47 void DiscardableMemory::ReleaseFreeMemory() {
48 internal::DiscardableMemoryShmem::ReleaseFreeMemory();
49 }
50
51 // static
46 bool DiscardableMemory::ReduceMemoryUsage() { 52 bool DiscardableMemory::ReduceMemoryUsage() {
47 return internal::DiscardableMemoryEmulated::ReduceMemoryUsage(); 53 return internal::DiscardableMemoryEmulated::ReduceMemoryUsage();
48 } 54 }
49 55
50 // static 56 // static
51 void DiscardableMemory::GetSupportedTypes( 57 void DiscardableMemory::GetSupportedTypes(
52 std::vector<DiscardableMemoryType>* types) { 58 std::vector<DiscardableMemoryType>* types) {
53 const DiscardableMemoryType supported_types[] = { 59 const DiscardableMemoryType supported_types[] = {
54 DISCARDABLE_MEMORY_TYPE_ASHMEM, 60 DISCARDABLE_MEMORY_TYPE_ASHMEM,
55 DISCARDABLE_MEMORY_TYPE_EMULATED 61 DISCARDABLE_MEMORY_TYPE_EMULATED,
62 DISCARDABLE_MEMORY_TYPE_SHMEM
56 }; 63 };
57 types->assign(supported_types, supported_types + arraysize(supported_types)); 64 types->assign(supported_types, supported_types + arraysize(supported_types));
58 } 65 }
59 66
60 // static 67 // static
61 scoped_ptr<DiscardableMemory> DiscardableMemory::CreateLockedMemoryWithType( 68 scoped_ptr<DiscardableMemory> DiscardableMemory::CreateLockedMemoryWithType(
62 DiscardableMemoryType type, size_t size) { 69 DiscardableMemoryType type, size_t size) {
63 switch (type) { 70 switch (type) {
64 case DISCARDABLE_MEMORY_TYPE_ASHMEM: { 71 case DISCARDABLE_MEMORY_TYPE_ASHMEM: {
65 SharedState* const shared_state = g_shared_state.Pointer(); 72 SharedState* const shared_state = g_shared_state.Pointer();
66 scoped_ptr<internal::DiscardableMemoryAshmem> memory( 73 scoped_ptr<internal::DiscardableMemoryAshmem> memory(
67 new internal::DiscardableMemoryAshmem( 74 new internal::DiscardableMemoryAshmem(
68 size, &shared_state->allocator, &shared_state->manager)); 75 size, &shared_state->allocator, &shared_state->manager));
69 if (!memory->Initialize()) 76 if (!memory->Initialize())
70 return nullptr; 77 return nullptr;
71 78
72 return memory.Pass(); 79 return memory.Pass();
73 } 80 }
74 case DISCARDABLE_MEMORY_TYPE_EMULATED: { 81 case DISCARDABLE_MEMORY_TYPE_EMULATED: {
75 scoped_ptr<internal::DiscardableMemoryEmulated> memory( 82 scoped_ptr<internal::DiscardableMemoryEmulated> memory(
76 new internal::DiscardableMemoryEmulated(size)); 83 new internal::DiscardableMemoryEmulated(size));
77 if (!memory->Initialize()) 84 if (!memory->Initialize())
78 return nullptr; 85 return nullptr;
79 86
80 return memory.Pass(); 87 return memory.Pass();
81 } 88 }
89 case DISCARDABLE_MEMORY_TYPE_SHMEM: {
90 scoped_ptr<internal::DiscardableMemoryShmem> memory(
91 new internal::DiscardableMemoryShmem(size));
92 if (!memory->Initialize())
93 return nullptr;
94
95 return memory.Pass();
96 }
82 case DISCARDABLE_MEMORY_TYPE_NONE: 97 case DISCARDABLE_MEMORY_TYPE_NONE:
83 case DISCARDABLE_MEMORY_TYPE_MACH: 98 case DISCARDABLE_MEMORY_TYPE_MACH:
84 NOTREACHED(); 99 NOTREACHED();
85 return nullptr; 100 return nullptr;
86 } 101 }
87 102
88 NOTREACHED(); 103 NOTREACHED();
89 return nullptr; 104 return nullptr;
90 } 105 }
91 106
92 // static 107 // static
93 void DiscardableMemory::PurgeForTesting() { 108 void DiscardableMemory::PurgeForTesting() {
94 g_shared_state.Pointer()->manager.PurgeAll(); 109 g_shared_state.Pointer()->manager.PurgeAll();
95 internal::DiscardableMemoryEmulated::PurgeForTesting(); 110 internal::DiscardableMemoryEmulated::PurgeForTesting();
111 internal::DiscardableMemoryShmem::PurgeForTesting();
96 } 112 }
97 113
98 } // namespace base 114 } // namespace base
OLDNEW
« no previous file with comments | « base/memory/discardable_memory.cc ('k') | base/memory/discardable_memory_ashmem.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698