| 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();
 | 
|  }
 | 
| 
 |