[cfe-commits] r159256 - in /cfe/trunk: include/clang/Basic/FileManager.h lib/Basic/FileManager.cpp

Axel Naumann Axel.Naumann at cern.ch
Wed Jun 27 02:30:40 PDT 2012


Hi Chandler,

Sorry - I apparently have problems determining what's "trivial" 
(post-commit review) and what's not. Shall I back the commit out so we 
discuss it first?

Let me explain it here, I'm happy to move this discussion elsewhere. We 
need to be able to reload files into cling (part of rapid prototyping). 
The cache prevents us from hitting the disk again. The (committed) patch 
tries to enable uncaching as non-intrusively as we could come up with.

Cheers, Axel.

On 06/27/2012 11:24 AM, Chandler Carruth wrote:
> Did this patch get review on the mailing list somewhere I missed? I have
> some serious concerns with the approach, but would rather focus the
> review somewhere productive....
>
>
> On Wed, Jun 27, 2012 at 2:17 AM, Axel Naumann <Axel.Naumann at cern.ch
> <mailto:Axel.Naumann at cern.ch>> wrote:
>
>     Author: axel
>     Date: Wed Jun 27 04:17:42 2012
>     New Revision: 159256
>
>     URL: http://llvm.org/viewvc/llvm-project?rev=159256&view=rev
>     Log:
>      >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.
>
>     Modified:
>         cfe/trunk/include/clang/Basic/FileManager.h
>         cfe/trunk/lib/Basic/FileManager.cpp
>
>     Modified: cfe/trunk/include/clang/Basic/FileManager.h
>     URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/FileManager.h?rev=159256&r1=159255&r2=159256&view=diff
>     ==============================================================================
>     --- cfe/trunk/include/clang/Basic/FileManager.h (original)
>     +++ cfe/trunk/include/clang/Basic/FileManager.h Wed Jun 27 04:17:42 2012
>     @@ -222,6 +222,9 @@
>        /// 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.
>
>     Modified: cfe/trunk/lib/Basic/FileManager.cpp
>     URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/FileManager.cpp?rev=159256&r1=159255&r2=159256&view=diff
>     ==============================================================================
>     --- cfe/trunk/lib/Basic/FileManager.cpp (original)
>     +++ cfe/trunk/lib/Basic/FileManager.cpp Wed Jun 27 04:17:42 2012
>     @@ -111,6 +111,8 @@
>        }
>
>        size_t size() const { return UniqueFiles.size(); }
>     +
>     +  friend class FileManager;
>       };
>
>       //===----------------------------------------------------------------------===//
>     @@ -152,6 +154,8 @@
>        }
>
>        size_t size() const { return UniqueFiles.size(); }
>     +
>     +  friend class FileManager;
>       };
>
>       #endif
>     @@ -559,6 +563,15 @@
>        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();
>
>
>     _______________________________________________
>     cfe-commits mailing list
>     cfe-commits at cs.uiuc.edu <mailto:cfe-commits at cs.uiuc.edu>
>     http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
>





More information about the cfe-commits mailing list