Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / base / memory / discardable_memory_linux.cc
index 6ae9483..e44b7c2 100644 (file)
@@ -6,6 +6,7 @@
 
 #include "base/logging.h"
 #include "base/memory/discardable_memory_emulated.h"
+#include "base/memory/discardable_memory_malloc.h"
 
 namespace base {
 
@@ -23,7 +24,8 @@ void DiscardableMemory::UnregisterMemoryPressureListeners() {
 void DiscardableMemory::GetSupportedTypes(
     std::vector<DiscardableMemoryType>* types) {
   const DiscardableMemoryType supported_types[] = {
-    DISCARDABLE_MEMORY_TYPE_EMULATED
+    DISCARDABLE_MEMORY_TYPE_EMULATED,
+    DISCARDABLE_MEMORY_TYPE_MALLOC
   };
   types->assign(supported_types, supported_types + arraysize(supported_types));
 }
@@ -44,6 +46,14 @@ scoped_ptr<DiscardableMemory> DiscardableMemory::CreateLockedMemoryWithType(
 
       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();