Index: base/memory/discardable_memory_android.cc |
diff --git a/base/memory/discardable_memory_android.cc b/base/memory/discardable_memory_android.cc |
index 0c9f3fc61d9f9a9f2f0d5200d5fd58906ae3c362..de7112457dea7a17ce0d6483af7dc931168f1261 100644 |
--- a/base/memory/discardable_memory_android.cc |
+++ b/base/memory/discardable_memory_android.cc |
@@ -11,6 +11,7 @@ |
#include "base/memory/discardable_memory_ashmem.h" |
#include "base/memory/discardable_memory_ashmem_allocator.h" |
#include "base/memory/discardable_memory_emulated.h" |
+#include "base/memory/discardable_memory_shmem.h" |
#include "base/sys_info.h" |
namespace base { |
@@ -43,6 +44,11 @@ LazyInstance<SharedState>::Leaky g_shared_state = LAZY_INSTANCE_INITIALIZER; |
} // namespace |
// static |
+void DiscardableMemory::ReleaseFreeMemory() { |
+ internal::DiscardableMemoryShmem::ReleaseFreeMemory(); |
+} |
+ |
+// static |
bool DiscardableMemory::ReduceMemoryUsage() { |
return internal::DiscardableMemoryEmulated::ReduceMemoryUsage(); |
} |
@@ -52,7 +58,8 @@ void DiscardableMemory::GetSupportedTypes( |
std::vector<DiscardableMemoryType>* types) { |
const DiscardableMemoryType supported_types[] = { |
DISCARDABLE_MEMORY_TYPE_ASHMEM, |
- DISCARDABLE_MEMORY_TYPE_EMULATED |
+ DISCARDABLE_MEMORY_TYPE_EMULATED, |
+ DISCARDABLE_MEMORY_TYPE_SHMEM |
}; |
types->assign(supported_types, supported_types + arraysize(supported_types)); |
} |
@@ -79,6 +86,14 @@ scoped_ptr<DiscardableMemory> DiscardableMemory::CreateLockedMemoryWithType( |
return memory.Pass(); |
} |
+ case DISCARDABLE_MEMORY_TYPE_SHMEM: { |
+ scoped_ptr<internal::DiscardableMemoryShmem> memory( |
+ new internal::DiscardableMemoryShmem(size)); |
+ if (!memory->Initialize()) |
+ return nullptr; |
+ |
+ return memory.Pass(); |
+ } |
case DISCARDABLE_MEMORY_TYPE_NONE: |
case DISCARDABLE_MEMORY_TYPE_MACH: |
NOTREACHED(); |
@@ -93,6 +108,7 @@ scoped_ptr<DiscardableMemory> DiscardableMemory::CreateLockedMemoryWithType( |
void DiscardableMemory::PurgeForTesting() { |
g_shared_state.Pointer()->manager.PurgeAll(); |
internal::DiscardableMemoryEmulated::PurgeForTesting(); |
+ internal::DiscardableMemoryShmem::PurgeForTesting(); |
} |
} // namespace base |