diff options
Diffstat (limited to 'clang/lib/Serialization/ModuleCache.cpp')
-rw-r--r-- | clang/lib/Serialization/ModuleCache.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/clang/lib/Serialization/ModuleCache.cpp b/clang/lib/Serialization/ModuleCache.cpp index 4ae49c4..43f8ff8 100644 --- a/clang/lib/Serialization/ModuleCache.cpp +++ b/clang/lib/Serialization/ModuleCache.cpp @@ -20,7 +20,12 @@ namespace { class CrossProcessModuleCache : public ModuleCache { InMemoryModuleCache InMemory; + std::time_t BuildSessionTimestamp; + public: + explicit CrossProcessModuleCache(std::time_t BuildSessionTimestamp) + : BuildSessionTimestamp(BuildSessionTimestamp) {} + void prepareForGetLock(StringRef ModuleFilename) override { // FIXME: Do this in LockFileManager and only if the directory doesn't // exist. @@ -33,16 +38,17 @@ public: return std::make_unique<llvm::LockFileManager>(ModuleFilename); } - std::time_t getModuleTimestamp(StringRef ModuleFilename) override { + bool isMarkedUpToDate(StringRef ModuleFilename) override { std::string TimestampFilename = serialization::ModuleFile::getTimestampFilename(ModuleFilename); llvm::sys::fs::file_status Status; if (llvm::sys::fs::status(ModuleFilename, Status) != std::error_code{}) - return 0; - return llvm::sys::toTimeT(Status.getLastModificationTime()); + return false; + return llvm::sys::toTimeT(Status.getLastModificationTime()) > + BuildSessionTimestamp; } - void updateModuleTimestamp(StringRef ModuleFilename) override { + void markUpToDate(StringRef ModuleFilename) override { // Overwrite the timestamp file contents so that file's mtime changes. std::error_code EC; llvm::raw_fd_ostream OS( @@ -62,6 +68,8 @@ public: }; } // namespace -IntrusiveRefCntPtr<ModuleCache> clang::createCrossProcessModuleCache() { - return llvm::makeIntrusiveRefCnt<CrossProcessModuleCache>(); +IntrusiveRefCntPtr<ModuleCache> +clang::createCrossProcessModuleCache(std::time_t BuildSessionTimestamp) { + return llvm::makeIntrusiveRefCnt<CrossProcessModuleCache>( + BuildSessionTimestamp); } |