| Index: base/memory/discardable_shared_memory.cc | 
| diff --git a/base/memory/discardable_shared_memory.cc b/base/memory/discardable_shared_memory.cc | 
| index 49e93cdaf6f22a20e0a76fd0128b5aa8cdd743dd..830d6b9d87fdde5438b2d1255c6dc07b62aabf93 100644 | 
| --- a/base/memory/discardable_shared_memory.cc | 
| +++ b/base/memory/discardable_shared_memory.cc | 
| @@ -325,22 +325,6 @@ bool DiscardableSharedMemory::Purge(Time current_time) { | 
| return true; | 
| } | 
|  | 
| -bool DiscardableSharedMemory::PurgeAndTruncate(Time current_time) { | 
| -  if (!Purge(current_time)) | 
| -    return false; | 
| - | 
| -#if defined(OS_POSIX) | 
| -  // Truncate shared memory to size of SharedState. | 
| -  SharedMemoryHandle handle = shared_memory_.handle(); | 
| -  if (SharedMemory::IsHandleValid(handle)) { | 
| -    if (HANDLE_EINTR(ftruncate(handle.fd, sizeof(SharedState))) != 0) | 
| -      DPLOG(ERROR) << "ftruncate() failed"; | 
| -  } | 
| -#endif | 
| - | 
| -  return true; | 
| -} | 
| - | 
| bool DiscardableSharedMemory::IsMemoryResident() const { | 
| DCHECK(shared_memory_.memory()); | 
|  | 
| @@ -357,6 +341,26 @@ void DiscardableSharedMemory::Close() { | 
| mapped_size_ = 0; | 
| } | 
|  | 
| +#if defined(DISCARDABLE_SHARED_MEMORY_SHRINKING) | 
| +void DiscardableSharedMemory::Shrink() { | 
| +#if defined(OS_POSIX) | 
| +  SharedMemoryHandle handle = shared_memory_.handle(); | 
| +  if (!SharedMemory::IsHandleValid(handle)) | 
| +    return; | 
| + | 
| +  // Truncate shared memory to size of SharedState. | 
| +  if (HANDLE_EINTR( | 
| +          ftruncate(handle.fd, AlignToPageSize(sizeof(SharedState)))) != 0) { | 
| +    DPLOG(ERROR) << "ftruncate() failed"; | 
| +    return; | 
| +  } | 
| +  mapped_size_ = 0; | 
| +#else | 
| +  NOTIMPLEMENTED(); | 
| +#endif | 
| +} | 
| +#endif | 
| + | 
| Time DiscardableSharedMemory::Now() const { | 
| return Time::Now(); | 
| } | 
|  |