r208008 - [Basic/FileManager] Propagate whether a file 'IsVolatile' to the file opening functions.
Argyrios Kyrtzidis
akyrtzi at gmail.com
Mon May 5 14:57:46 PDT 2014
Author: akirtzidis
Date: Mon May 5 16:57:46 2014
New Revision: 208008
URL: http://llvm.org/viewvc/llvm-project?rev=208008&view=rev
Log:
[Basic/FileManager] Propagate whether a file 'IsVolatile' to the file opening functions.
Needs llvm r208007.
Modified:
cfe/trunk/include/clang/Basic/VirtualFileSystem.h
cfe/trunk/lib/Basic/FileManager.cpp
cfe/trunk/lib/Basic/VirtualFileSystem.cpp
Modified: cfe/trunk/include/clang/Basic/VirtualFileSystem.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/VirtualFileSystem.h?rev=208008&r1=208007&r2=208008&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/VirtualFileSystem.h (original)
+++ cfe/trunk/include/clang/Basic/VirtualFileSystem.h Mon May 5 16:57:46 2014
@@ -86,7 +86,8 @@ public:
/// \brief Get the contents of the file as a \p MemoryBuffer.
virtual llvm::error_code
getBuffer(const Twine &Name, std::unique_ptr<llvm::MemoryBuffer> &Result,
- int64_t FileSize = -1, bool RequiresNullTerminator = true) = 0;
+ int64_t FileSize = -1, bool RequiresNullTerminator = true,
+ bool IsVolatile = false) = 0;
/// \brief Closes the file.
virtual llvm::error_code close() = 0;
/// \brief Sets the name to use for this file.
@@ -109,7 +110,8 @@ public:
llvm::error_code getBufferForFile(const Twine &Name,
std::unique_ptr<llvm::MemoryBuffer> &Result,
int64_t FileSize = -1,
- bool RequiresNullTerminator = true);
+ bool RequiresNullTerminator = true,
+ bool IsVolatile = false);
};
/// \brief Gets an \p vfs::FileSystem for the 'real' file system, as seen by
Modified: cfe/trunk/lib/Basic/FileManager.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/FileManager.cpp?rev=208008&r1=208007&r2=208008&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/FileManager.cpp (original)
+++ cfe/trunk/lib/Basic/FileManager.cpp Mon May 5 16:57:46 2014
@@ -391,7 +391,8 @@ getBufferForFile(const FileEntry *Entry,
const char *Filename = Entry->getName();
// If the file is already open, use the open file descriptor.
if (Entry->File) {
- ec = Entry->File->getBuffer(Filename, Result, FileSize);
+ ec = Entry->File->getBuffer(Filename, Result, FileSize,
+ /*RequiresNullTerminator=*/true, isVolatile);
if (ErrorStr)
*ErrorStr = ec.message();
Entry->closeFile();
@@ -401,7 +402,8 @@ getBufferForFile(const FileEntry *Entry,
// Otherwise, open the file.
if (FileSystemOpts.WorkingDir.empty()) {
- ec = FS->getBufferForFile(Filename, Result, FileSize);
+ ec = FS->getBufferForFile(Filename, Result, FileSize,
+ /*RequiresNullTerminator=*/true, isVolatile);
if (ec && ErrorStr)
*ErrorStr = ec.message();
return Result.release();
@@ -409,7 +411,8 @@ getBufferForFile(const FileEntry *Entry,
SmallString<128> FilePath(Entry->getName());
FixupRelativePath(FilePath);
- ec = FS->getBufferForFile(FilePath.str(), Result, FileSize);
+ ec = FS->getBufferForFile(FilePath.str(), Result, FileSize,
+ /*RequiresNullTerminator=*/true, isVolatile);
if (ec && ErrorStr)
*ErrorStr = ec.message();
return Result.release();
Modified: cfe/trunk/lib/Basic/VirtualFileSystem.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/VirtualFileSystem.cpp?rev=208008&r1=208007&r2=208008&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/VirtualFileSystem.cpp (original)
+++ cfe/trunk/lib/Basic/VirtualFileSystem.cpp Mon May 5 16:57:46 2014
@@ -67,12 +67,14 @@ FileSystem::~FileSystem() {}
error_code FileSystem::getBufferForFile(const llvm::Twine &Name,
std::unique_ptr<MemoryBuffer> &Result,
int64_t FileSize,
- bool RequiresNullTerminator) {
+ bool RequiresNullTerminator,
+ bool IsVolatile) {
std::unique_ptr<File> F;
if (error_code EC = openFileForRead(Name, F))
return EC;
- error_code EC = F->getBuffer(Name, Result, FileSize, RequiresNullTerminator);
+ error_code EC = F->getBuffer(Name, Result, FileSize, RequiresNullTerminator,
+ IsVolatile);
return EC;
}
@@ -95,7 +97,8 @@ public:
ErrorOr<Status> status() override;
error_code getBuffer(const Twine &Name, std::unique_ptr<MemoryBuffer> &Result,
int64_t FileSize = -1,
- bool RequiresNullTerminator = true) override;
+ bool RequiresNullTerminator = true,
+ bool IsVolatile = false) override;
error_code close() override;
void setName(StringRef Name) override;
};
@@ -117,10 +120,11 @@ ErrorOr<Status> RealFile::status() {
error_code RealFile::getBuffer(const Twine &Name,
std::unique_ptr<MemoryBuffer> &Result,
- int64_t FileSize, bool RequiresNullTerminator) {
+ int64_t FileSize, bool RequiresNullTerminator,
+ bool IsVolatile) {
assert(FD != -1 && "cannot get buffer for closed file");
return MemoryBuffer::getOpenFile(FD, Name.str().c_str(), Result, FileSize,
- RequiresNullTerminator);
+ RequiresNullTerminator, IsVolatile);
}
// FIXME: This is terrible, we need this for ::close.
More information about the cfe-commits
mailing list