#include "base/logging.h"
#include "base/memory/discardable_memory_emulated.h"
+#include "base/memory/discardable_memory_shmem.h"
namespace base {
// static
-void DiscardableMemory::RegisterMemoryPressureListeners() {
- internal::DiscardableMemoryEmulated::RegisterMemoryPressureListeners();
+void DiscardableMemory::ReleaseFreeMemory() {
+ internal::DiscardableMemoryShmem::ReleaseFreeMemory();
}
// static
-void DiscardableMemory::UnregisterMemoryPressureListeners() {
- internal::DiscardableMemoryEmulated::UnregisterMemoryPressureListeners();
+bool DiscardableMemory::ReduceMemoryUsage() {
+ return internal::DiscardableMemoryEmulated::ReduceMemoryUsage();
}
// static
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));
}
scoped_ptr<DiscardableMemory> DiscardableMemory::CreateLockedMemoryWithType(
DiscardableMemoryType type, size_t size) {
switch (type) {
- case DISCARDABLE_MEMORY_TYPE_NONE:
- case DISCARDABLE_MEMORY_TYPE_ANDROID:
- case DISCARDABLE_MEMORY_TYPE_MAC:
- return scoped_ptr<DiscardableMemory>();
case DISCARDABLE_MEMORY_TYPE_EMULATED: {
scoped_ptr<internal::DiscardableMemoryEmulated> memory(
new internal::DiscardableMemoryEmulated(size));
if (!memory->Initialize())
- return scoped_ptr<DiscardableMemory>();
+ return nullptr;
+
+ return memory.Pass();
+ }
+ case DISCARDABLE_MEMORY_TYPE_SHMEM: {
+ scoped_ptr<internal::DiscardableMemoryShmem> memory(
+ new internal::DiscardableMemoryShmem(size));
+ if (!memory->Initialize())
+ return nullptr;
- return memory.PassAs<DiscardableMemory>();
+ return memory.Pass();
}
+ case DISCARDABLE_MEMORY_TYPE_NONE:
+ case DISCARDABLE_MEMORY_TYPE_ASHMEM:
+ case DISCARDABLE_MEMORY_TYPE_MACH:
+ NOTREACHED();
+ return nullptr;
}
NOTREACHED();
- return scoped_ptr<DiscardableMemory>();
-}
-
-// static
-bool DiscardableMemory::PurgeForTestingSupported() {
- return true;
+ return nullptr;
}
// static
void DiscardableMemory::PurgeForTesting() {
internal::DiscardableMemoryEmulated::PurgeForTesting();
+ internal::DiscardableMemoryShmem::PurgeForTesting();
}
} // namespace base