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