Chromium Code Reviews| Index: base/memory/discardable_memory_allocation_ashmem_factory.h |
| diff --git a/base/memory/discardable_memory_allocator_android.h b/base/memory/discardable_memory_allocation_ashmem_factory.h |
| similarity index 47% |
| copy from base/memory/discardable_memory_allocator_android.h |
| copy to base/memory/discardable_memory_allocation_ashmem_factory.h |
| index eea57fb3893a827c40063dcafb520650ed010d8b..e775f6217008299b5ae58047799f3c4d79aefdf2 100644 |
| --- a/base/memory/discardable_memory_allocator_android.h |
| +++ b/base/memory/discardable_memory_allocation_ashmem_factory.h |
| @@ -2,47 +2,45 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#ifndef BASE_MEMORY_DISCARDABLE_MEMORY_ALLOCATOR_H_ |
| -#define BASE_MEMORY_DISCARDABLE_MEMORY_ALLOCATOR_H_ |
| +#ifndef BASE_MEMORY_DISCARDABLE_MEMORY_ALLOCATION_ASHMEM_FACTORY_H_ |
| +#define BASE_MEMORY_DISCARDABLE_MEMORY_ALLOCATION_ASHMEM_FACTORY_H_ |
|
reveman
2014/03/20 19:33:44
Let's make sure the type is always the last suffix
Philippe
2014/03/21 10:17:44
Yeah. I think it's still ok though to have the Fac
|
| #include <string> |
| #include "base/base_export.h" |
| #include "base/basictypes.h" |
| +#include "base/memory/discardable_memory_allocation.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "base/memory/scoped_vector.h" |
| -#include "base/synchronization/lock.h" |
| -#include "base/threading/thread_checker.h" |
| namespace base { |
| - |
| -class DiscardableMemory; |
| - |
| namespace internal { |
| -// On Android ashmem is used to implement discardable memory. It is backed by a |
| -// file (descriptor) thus is a limited resource. This allocator minimizes the |
| -// problem by allocating large ashmem regions internally and returning smaller |
| -// chunks to the client. |
| +// On Android/ChromeOS ashmem is used to implement discardable memory. It is |
|
reveman
2014/03/20 19:33:44
I don't think the Android, ChromeOS or any other s
Philippe
2014/03/21 10:17:44
Done.
|
| +// backed by a file (descriptor) therefore it is a limited resource. This |
| +// factory class (which is in fact more an allocator) minimizes the problem by |
| +// allocating large ashmem regions internally and returning smaller chunks to |
| +// the client. |
| // Allocated chunks are systematically aligned on a page boundary therefore this |
| // allocator should not be used for small allocations. |
| // |
| -// Threading: The allocator must be deleted on the thread it was constructed on |
| -// although its Allocate() method can be invoked on any thread. See |
| -// discardable_memory.h for DiscardableMemory's threading guarantees. |
| -class BASE_EXPORT_PRIVATE DiscardableMemoryAllocator { |
| +// WARNING: this class is not thread-safe! |
| +class BASE_EXPORT_PRIVATE DiscardableMemoryAllocationAshmemFactory : |
|
reveman
2014/03/20 19:33:44
I much prefer DiscardableMemoryAllocationFactoryAs
Philippe
2014/03/21 10:17:44
Yeah, done.
|
| + public DiscardableMemoryAllocation::Factory { |
| public: |
| // Note that |name| is only used for debugging/measurement purposes. |
| // |ashmem_region_size| is the size that will be used to create the underlying |
| // ashmem regions and is expected to be greater or equal than 32 MBytes. |
| - DiscardableMemoryAllocator(const std::string& name, |
| - size_t ashmem_region_size); |
| + DiscardableMemoryAllocationAshmemFactory(const std::string& name, |
| + size_t ashmem_region_size); |
| - ~DiscardableMemoryAllocator(); |
| + virtual ~DiscardableMemoryAllocationAshmemFactory(); |
| - // Note that the allocator must outlive the returned DiscardableMemory |
| + // Note that the factory must outlive the returned DiscardableMemoryAllocation |
| // instance. |
| - scoped_ptr<DiscardableMemory> Allocate(size_t size); |
| + // DiscardableMemoryAllocation::Factory: |
| + virtual scoped_ptr<DiscardableMemoryAllocation> CreateLockedAllocation( |
| + size_t size) OVERRIDE; |
| // Returns the size of the last ashmem region which was created. This is used |
| // for testing only. |
| @@ -52,19 +50,17 @@ class BASE_EXPORT_PRIVATE DiscardableMemoryAllocator { |
| class AshmemRegion; |
| class DiscardableAshmemChunk; |
| - void DeleteAshmemRegion_Locked(AshmemRegion* region); |
| + void DeleteAshmemRegion(AshmemRegion* region); |
| - ThreadChecker thread_checker_; |
| const std::string name_; |
| const size_t ashmem_region_size_; |
| - mutable Lock lock_; |
| size_t last_ashmem_region_size_; |
| ScopedVector<AshmemRegion> ashmem_regions_; |
| - DISALLOW_COPY_AND_ASSIGN(DiscardableMemoryAllocator); |
| + DISALLOW_COPY_AND_ASSIGN(DiscardableMemoryAllocationAshmemFactory); |
| }; |
| } // namespace internal |
| } // namespace base |
| -#endif // BASE_MEMORY_DISCARDABLE_MEMORY_ALLOCATOR_H_ |
| +#endif // BASE_MEMORY_DISCARDABLE_MEMORY_ALLOCATION_ASHMEM_FACTORY_H_ |