Index: base/memory/discardable_memory_win.cc |
diff --git a/base/memory/discardable_memory_win.cc b/base/memory/discardable_memory_win.cc |
index 6a9a28df2dc6fb9bdb10c5065e444b047e00aad9..9b4e9401ce4ff7c006756a9a5ed6a245431662c9 100644 |
--- a/base/memory/discardable_memory_win.cc |
+++ b/base/memory/discardable_memory_win.cc |
@@ -6,10 +6,16 @@ |
#include "base/logging.h" |
#include "base/memory/discardable_memory_emulated.h" |
+#include "base/memory/discardable_memory_shmem.h" |
namespace base { |
// static |
+void DiscardableMemory::ReleaseFreeMemory() { |
+ internal::DiscardableMemoryShmem::ReleaseFreeMemory(); |
+} |
+ |
+// static |
bool DiscardableMemory::ReduceMemoryUsage() { |
return internal::DiscardableMemoryEmulated::ReduceMemoryUsage(); |
} |
@@ -18,7 +24,8 @@ bool DiscardableMemory::ReduceMemoryUsage() { |
void DiscardableMemory::GetSupportedTypes( |
std::vector<DiscardableMemoryType>* types) { |
const DiscardableMemoryType supported_types[] = { |
- DISCARDABLE_MEMORY_TYPE_EMULATED |
+ DISCARDABLE_MEMORY_TYPE_EMULATED, |
+ DISCARDABLE_MEMORY_TYPE_SHMEM |
}; |
types->assign(supported_types, supported_types + arraysize(supported_types)); |
} |
@@ -35,6 +42,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_ASHMEM: |
case DISCARDABLE_MEMORY_TYPE_MACH: |
@@ -49,6 +64,7 @@ scoped_ptr<DiscardableMemory> DiscardableMemory::CreateLockedMemoryWithType( |
// static |
void DiscardableMemory::PurgeForTesting() { |
internal::DiscardableMemoryEmulated::PurgeForTesting(); |
+ internal::DiscardableMemoryShmem::PurgeForTesting(); |
} |
} // namespace base |