| Index: base/memory/discardable_memory_linux.cc
|
| diff --git a/base/memory/discardable_memory_linux.cc b/base/memory/discardable_memory_linux.cc
|
| index 91996be051d06ca92133a566a572b773f8c0c0f4..a948a95c1418394526efc6fc7f8f164a6cc60f3d 100644
|
| --- a/base/memory/discardable_memory_linux.cc
|
| +++ b/base/memory/discardable_memory_linux.cc
|
| @@ -2,24 +2,50 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include "base/lazy_instance.h"
|
| +#include "base/logging.h"
|
| #include "base/memory/discardable_memory_emulated.h"
|
|
|
| namespace base {
|
| +namespace {
|
| +
|
| +struct SupportedTypeVector {
|
| + SupportedTypeVector() {
|
| + v.push_back(DISCARDABLE_MEMORY_EMULATED);
|
| + }
|
| + std::vector<DiscardableMemoryType> v;
|
| +};
|
| +LazyInstance<SupportedTypeVector>::Leaky g_supported_types =
|
| + LAZY_INSTANCE_INITIALIZER;
|
| +
|
| +} // namespace
|
|
|
| // static
|
| -bool DiscardableMemory::SupportedNatively() {
|
| - return false;
|
| +const std::vector<DiscardableMemoryType>&
|
| + DiscardableMemory::GetSupportedTypes() {
|
| + return g_supported_types.Get().v;
|
| }
|
|
|
| // 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>();
|
| + switch (GetType()) {
|
| + case DISCARDABLE_MEMORY_NONE:
|
| + case DISCARDABLE_MEMORY_ANDROID:
|
| + case DISCARDABLE_MEMORY_MAC:
|
| + return scoped_ptr<DiscardableMemory>();
|
| + case DISCARDABLE_MEMORY_EMULATED: {
|
| + scoped_ptr<internal::DiscardableMemoryEmulated> memory(
|
| + new internal::DiscardableMemoryEmulated(size));
|
| + if (!memory->Initialize())
|
| + return scoped_ptr<DiscardableMemory>();
|
| +
|
| + return memory.PassAs<DiscardableMemory>();
|
| + }
|
| + }
|
| +
|
| + NOTREACHED();
|
| + return scoped_ptr<DiscardableMemory>();
|
| }
|
|
|
| // static
|
|
|