summaryrefslogtreecommitdiffstats
path: root/src/disk_interface.cc
diff options
context:
space:
mode:
authorNico Weber <thakis@chromium.org>2014-06-15 21:11:27 (GMT)
committerNico Weber <thakis@chromium.org>2014-06-15 21:13:54 (GMT)
commit726afc8226a10cd6c5ce724a845ff5cd17169091 (patch)
tree2c19ad79d9356ea6e63ba710fa8d92d532f0c491 /src/disk_interface.cc
parent9970174e2ab8e4d5c9f333b795c8d284cf1cb8f5 (diff)
downloadNinja-726afc8226a10cd6c5ce724a845ff5cd17169091.zip
Ninja-726afc8226a10cd6c5ce724a845ff5cd17169091.tar.gz
Ninja-726afc8226a10cd6c5ce724a845ff5cd17169091.tar.bz2
Free cache memory once it's no longer used.
Doesn't slow down empty build times measurably, and saves some memory on non-empty builds.
Diffstat (limited to 'src/disk_interface.cc')
-rw-r--r--src/disk_interface.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/disk_interface.cc b/src/disk_interface.cc
index cd99915..ff86ed1 100644
--- a/src/disk_interface.cc
+++ b/src/disk_interface.cc
@@ -230,3 +230,19 @@ int RealDiskInterface::RemoveFile(const string& path) {
return 0;
}
}
+
+void RealDiskInterface::AllowCache(bool allow) {
+#ifdef _WIN32
+ use_cache_ = allow;
+ if (!use_cache_)
+ ClearCache();
+#endif
+}
+
+void RealDiskInterface::ClearCache() {
+#ifdef _WIN32
+ for (Cache::iterator it = cache_.begin(), end = cache_.end(); it != end; ++it)
+ delete it->second;
+ cache_.clear();
+#endif
+}