diff options
Diffstat (limited to 'chromium/base/memory/discardable_memory_win.cc')
-rw-r--r-- | chromium/base/memory/discardable_memory_win.cc | 62 |
1 files changed, 50 insertions, 12 deletions
diff --git a/chromium/base/memory/discardable_memory_win.cc b/chromium/base/memory/discardable_memory_win.cc index 92e39e5e7d4..b9342e92043 100644 --- a/chromium/base/memory/discardable_memory_win.cc +++ b/chromium/base/memory/discardable_memory_win.cc @@ -2,29 +2,67 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/memory/discardable_memory.h" + +#include "base/logging.h" #include "base/memory/discardable_memory_emulated.h" +#include "base/memory/discardable_memory_malloc.h" namespace base { // static -bool DiscardableMemory::SupportedNatively() { - return false; +void DiscardableMemory::RegisterMemoryPressureListeners() { + internal::DiscardableMemoryEmulated::RegisterMemoryPressureListeners(); +} + +// static +void DiscardableMemory::UnregisterMemoryPressureListeners() { + internal::DiscardableMemoryEmulated::UnregisterMemoryPressureListeners(); +} + +// static +bool DiscardableMemory::ReduceMemoryUsage() { + return internal::DiscardableMemoryEmulated::ReduceMemoryUsage(); } // static -scoped_ptr<DiscardableMemory> DiscardableMemory::CreateLockedMemory( - size_t size) { - scoped_ptr<internal::DiscardableMemoryEmulated> memory( - new internal::DiscardableMemoryEmulated(size)); - if (!memory->Initialize()) - return scoped_ptr<DiscardableMemory>(); - - return memory.PassAs<DiscardableMemory>(); +void DiscardableMemory::GetSupportedTypes( + std::vector<DiscardableMemoryType>* types) { + const DiscardableMemoryType supported_types[] = { + DISCARDABLE_MEMORY_TYPE_EMULATED, + DISCARDABLE_MEMORY_TYPE_MALLOC + }; + types->assign(supported_types, supported_types + arraysize(supported_types)); } // static -bool DiscardableMemory::PurgeForTestingSupported() { - return true; +scoped_ptr<DiscardableMemory> DiscardableMemory::CreateLockedMemoryWithType( + DiscardableMemoryType type, size_t size) { + switch (type) { + case DISCARDABLE_MEMORY_TYPE_NONE: + case DISCARDABLE_MEMORY_TYPE_ASHMEM: + 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 memory.PassAs<DiscardableMemory>(); + } + case DISCARDABLE_MEMORY_TYPE_MALLOC: { + scoped_ptr<internal::DiscardableMemoryMalloc> memory( + new internal::DiscardableMemoryMalloc(size)); + if (!memory->Initialize()) + return scoped_ptr<DiscardableMemory>(); + + return memory.PassAs<DiscardableMemory>(); + } + } + + NOTREACHED(); + return scoped_ptr<DiscardableMemory>(); } // static |