discardable_memory_win.cc revision 5c02ac1a9c1b504631c0a3d2b6e737b5d738bae1
1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "base/memory/discardable_memory.h" 6 7#include "base/logging.h" 8#include "base/memory/discardable_memory_emulated.h" 9#include "base/memory/discardable_memory_malloc.h" 10 11namespace base { 12 13// static 14void DiscardableMemory::RegisterMemoryPressureListeners() { 15 internal::DiscardableMemoryEmulated::RegisterMemoryPressureListeners(); 16} 17 18// static 19void DiscardableMemory::UnregisterMemoryPressureListeners() { 20 internal::DiscardableMemoryEmulated::UnregisterMemoryPressureListeners(); 21} 22 23// static 24void DiscardableMemory::GetSupportedTypes( 25 std::vector<DiscardableMemoryType>* types) { 26 const DiscardableMemoryType supported_types[] = { 27 DISCARDABLE_MEMORY_TYPE_EMULATED, 28 DISCARDABLE_MEMORY_TYPE_MALLOC 29 }; 30 types->assign(supported_types, supported_types + arraysize(supported_types)); 31} 32 33// static 34scoped_ptr<DiscardableMemory> DiscardableMemory::CreateLockedMemoryWithType( 35 DiscardableMemoryType type, size_t size) { 36 switch (type) { 37 case DISCARDABLE_MEMORY_TYPE_NONE: 38 case DISCARDABLE_MEMORY_TYPE_ASHMEM: 39 case DISCARDABLE_MEMORY_TYPE_MAC: 40 return scoped_ptr<DiscardableMemory>(); 41 case DISCARDABLE_MEMORY_TYPE_EMULATED: { 42 scoped_ptr<internal::DiscardableMemoryEmulated> memory( 43 new internal::DiscardableMemoryEmulated(size)); 44 if (!memory->Initialize()) 45 return scoped_ptr<DiscardableMemory>(); 46 47 return memory.PassAs<DiscardableMemory>(); 48 } 49 case DISCARDABLE_MEMORY_TYPE_MALLOC: { 50 scoped_ptr<internal::DiscardableMemoryMalloc> memory( 51 new internal::DiscardableMemoryMalloc(size)); 52 if (!memory->Initialize()) 53 return scoped_ptr<DiscardableMemory>(); 54 55 return memory.PassAs<DiscardableMemory>(); 56 } 57 } 58 59 NOTREACHED(); 60 return scoped_ptr<DiscardableMemory>(); 61} 62 63// static 64void DiscardableMemory::PurgeForTesting() { 65 internal::DiscardableMemoryEmulated::PurgeForTesting(); 66} 67 68} // namespace base 69