diff options
author | Nico Weber <thakis@chromium.org> | 2014-06-15 21:11:27 (GMT) |
---|---|---|
committer | Nico Weber <thakis@chromium.org> | 2014-06-15 21:13:54 (GMT) |
commit | 726afc8226a10cd6c5ce724a845ff5cd17169091 (patch) | |
tree | 2c19ad79d9356ea6e63ba710fa8d92d532f0c491 /src/disk_interface.cc | |
parent | 9970174e2ab8e4d5c9f333b795c8d284cf1cb8f5 (diff) | |
download | Ninja-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.cc | 16 |
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 +} |