| Index: base/memory/discardable_shared_memory.h
 | 
| diff --git a/base/memory/discardable_shared_memory.h b/base/memory/discardable_shared_memory.h
 | 
| index e3b437c89e7e4bb743db4dc1c7d82ed411a1cb40..892d556471ed85afa2d50f30553a097461624eca 100644
 | 
| --- a/base/memory/discardable_shared_memory.h
 | 
| +++ b/base/memory/discardable_shared_memory.h
 | 
| @@ -15,6 +15,12 @@
 | 
|  #include <set>
 | 
|  #endif
 | 
|  
 | 
| +// Define DISCARDABLE_SHARED_MEMORY_SHRINKING if platform supports shrinking
 | 
| +// of discardable shared memory segments.
 | 
| +#if defined(OS_POSIX) && !defined(OS_ANDROID)
 | 
| +#define DISCARDABLE_SHARED_MEMORY_SHRINKING
 | 
| +#endif
 | 
| +
 | 
|  namespace base {
 | 
|  
 | 
|  // Platform abstraction for discardable shared memory.
 | 
| @@ -93,12 +99,6 @@ class BASE_EXPORT DiscardableSharedMemory {
 | 
|    // each call.
 | 
|    bool Purge(Time current_time);
 | 
|  
 | 
| -  // Purge and release as much memory as possible to the OS.
 | 
| -  // Note: The amount of memory that can be released to the OS is platform
 | 
| -  // specific. Best case, all but one page is released. Worst case, nothing
 | 
| -  // is released.
 | 
| -  bool PurgeAndTruncate(Time current_time);
 | 
| -
 | 
|    // Returns true if memory is still resident.
 | 
|    bool IsMemoryResident() const;
 | 
|  
 | 
| @@ -116,6 +116,12 @@ class BASE_EXPORT DiscardableSharedMemory {
 | 
|      return shared_memory_.ShareToProcess(process_handle, new_handle);
 | 
|    }
 | 
|  
 | 
| +#if defined(DISCARDABLE_SHARED_MEMORY_SHRINKING)
 | 
| +  // Release as much memory as possible to the OS. The change in size will
 | 
| +  // be reflected by the return value of mapped_size().
 | 
| +  void Shrink();
 | 
| +#endif
 | 
| +
 | 
|   private:
 | 
|    // Virtual for tests.
 | 
|    virtual Time Now() const;
 | 
| 
 |