From Vassil Vassilev:

add interface for removing a FileEntry from the cache.
Forces a re-read the contents from disk, e.g. because a tool (like cling) wants to pick up a modified file.

llvm-svn: 159256
This commit is contained in:
Axel Naumann 2012-06-27 09:17:42 +00:00
parent 9aaf156f30
commit 38179d9693
2 changed files with 16 additions and 0 deletions

View File

@ -222,6 +222,9 @@ public:
/// FileManager's FileSystemOptions.
bool getNoncachedStatValue(StringRef Path, struct stat &StatBuf);
/// \brief Remove the real file Entry from the cache.
void InvalidateCache(const FileEntry* Entry);
/// \brief If path is not absolute and FileSystemOptions set the working
/// directory, the path is modified to be relative to the given
/// working directory.

View File

@ -111,6 +111,8 @@ public:
}
size_t size() const { return UniqueFiles.size(); }
friend class FileManager;
};
//===----------------------------------------------------------------------===//
@ -152,6 +154,8 @@ public:
}
size_t size() const { return UniqueFiles.size(); }
friend class FileManager;
};
#endif
@ -559,6 +563,15 @@ bool FileManager::getNoncachedStatValue(StringRef Path,
return ::stat(FilePath.c_str(), &StatBuf) != 0;
}
void FileManager::InvalidateCache(const FileEntry* Entry) {
if (!Entry)
return;
SeenFileEntries.erase(Entry->getName());
UniqueRealFiles.UniqueFiles.erase(*Entry);
}
void FileManager::GetUniqueIDMapping(
SmallVectorImpl<const FileEntry *> &UIDToFiles) const {
UIDToFiles.clear();