| Index: base/memory/discardable_memory.h
|
| diff --git a/base/memory/discardable_memory.h b/base/memory/discardable_memory.h
|
| index d6e91b979d5a46fdd50e6ef07ab4f52a904bc042..c6a8d82da72363d3dc2cecbb01547eeb64c226eb 100644
|
| --- a/base/memory/discardable_memory.h
|
| +++ b/base/memory/discardable_memory.h
|
| @@ -8,6 +8,7 @@
|
| #include "base/base_export.h"
|
| #include "base/basictypes.h"
|
| #include "base/compiler_specific.h"
|
| +#include "base/memory/scoped_ptr.h"
|
|
|
| namespace base {
|
|
|
| @@ -45,36 +46,28 @@ enum LockDiscardableMemoryStatus {
|
| // http://www.opensource.apple.com/source/xnu/xnu-792.13.8/osfmk/vm/vm_object.c
|
| class BASE_EXPORT DiscardableMemory {
|
| public:
|
| - DiscardableMemory();
|
| + virtual ~DiscardableMemory() {}
|
|
|
| - // If the discardable memory is locked, the destructor will unlock it.
|
| - // The opened file will also be closed after this.
|
| - ~DiscardableMemory();
|
| -
|
| - // Check whether the system supports discardable memory.
|
| + // Returns whether the system supports discardable memory.
|
| static bool Supported();
|
|
|
| - // Initialize the DiscardableMemory object. On success, this function returns
|
| - // true and the memory is locked. This should only be called once.
|
| - // This call could fail because of platform-specific limitations and the user
|
| - // should stop using the DiscardableMemory afterwards.
|
| - bool InitializeAndLock(size_t size);
|
| + static scoped_ptr<DiscardableMemory> CreateLockedMemory(size_t size);
|
|
|
| - // Lock the memory so that it will not be purged by the system. Returns
|
| + // Locks the memory so that it will not be purged by the system. Returns
|
| // DISCARDABLE_MEMORY_SUCCESS on success. If the return value is
|
| // DISCARDABLE_MEMORY_FAILED then this object should be discarded and
|
| // a new one should be created. If the return value is
|
| // DISCARDABLE_MEMORY_PURGED then the memory is present but any data that
|
| // was in it is gone.
|
| - LockDiscardableMemoryStatus Lock() WARN_UNUSED_RESULT;
|
| + virtual LockDiscardableMemoryStatus Lock() WARN_UNUSED_RESULT = 0;
|
|
|
| - // Unlock the memory so that it can be purged by the system. Must be called
|
| + // Unlocks the memory so that it can be purged by the system. Must be called
|
| // after every successful lock call.
|
| - void Unlock();
|
| + virtual void Unlock() = 0;
|
|
|
| - // Return the memory address held by this object. The object must be locked
|
| + // Returns the memory address held by this object. The object must be locked
|
| // before calling this. Otherwise, this will cause a DCHECK error.
|
| - void* Memory() const;
|
| + virtual void* Memory() const = 0;
|
|
|
| // Testing utility calls.
|
|
|
| @@ -85,32 +78,6 @@ class BASE_EXPORT DiscardableMemory {
|
| // Purge all discardable memory in the system. This call has global effects
|
| // across all running processes, so it should only be used for testing!
|
| static void PurgeForTesting();
|
| -
|
| - private:
|
| -#if defined(OS_ANDROID)
|
| - // Maps the discardable memory into the caller's address space.
|
| - // Returns true on success, false otherwise.
|
| - bool Map();
|
| -
|
| - // Unmaps the discardable memory from the caller's address space.
|
| - void Unmap();
|
| -
|
| - // Reserve a file descriptor. When reaching the fd limit, this call returns
|
| - // false and initialization should fail.
|
| - bool ReserveFileDescriptor();
|
| -
|
| - // Release a file descriptor so that others can reserve it.
|
| - void ReleaseFileDescriptor();
|
| -#endif // OS_ANDROID
|
| -
|
| - void* memory_;
|
| - size_t size_;
|
| - bool is_locked_;
|
| -#if defined(OS_ANDROID)
|
| - int fd_;
|
| -#endif // OS_ANDROID
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(DiscardableMemory);
|
| };
|
|
|
| } // namespace base
|
|
|