From 10222d29599892ae957c2b61f910509242e86d14 Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Tue, 6 May 2014 01:03:52 +0000 Subject: [PATCH] [Support/MemoryBuffer] Rename IsVolatile -> IsVolatileSize and add a comment about the use case for the new parameter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208026 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/MemoryBuffer.h | 24 +++++++++------ lib/Support/MemoryBuffer.cpp | 45 +++++++++++++++-------------- 2 files changed, 38 insertions(+), 31 deletions(-) diff --git a/include/llvm/Support/MemoryBuffer.h b/include/llvm/Support/MemoryBuffer.h index 268041e781d1..fb74ed552230 100644 --- a/include/llvm/Support/MemoryBuffer.h +++ b/include/llvm/Support/MemoryBuffer.h @@ -68,45 +68,51 @@ class MemoryBuffer { /// specified, this means that the client knows that the file exists and that /// it has the specified size. /// - /// \param IsVolatile true indicates that the file may be changing often. + /// \param IsVolatileSize Set to true to indicate that the file size may be + /// changing, e.g. when libclang tries to parse while the user is + /// editing/updating the file. static error_code getFile(Twine Filename, OwningPtr &Result, int64_t FileSize = -1, bool RequiresNullTerminator = true, - bool IsVolatile = false); + bool IsVolatileSize = false); static error_code getFile(Twine Filename, std::unique_ptr &Result, int64_t FileSize = -1, bool RequiresNullTerminator = true, - bool IsVolatile = false); + bool IsVolatileSize = false); /// Given an already-open file descriptor, map some slice of it into a /// MemoryBuffer. The slice is specified by an \p Offset and \p MapSize. /// Since this is in the middle of a file, the buffer is not null terminated. /// - /// \param IsVolatile true indicates that the file may be changing often. + /// \param IsVolatileSize Set to true to indicate that the file size may be + /// changing, e.g. when libclang tries to parse while the user is + /// editing/updating the file. static error_code getOpenFileSlice(int FD, const char *Filename, OwningPtr &Result, uint64_t MapSize, int64_t Offset, - bool IsVolatile = false); + bool IsVolatileSize = false); static error_code getOpenFileSlice(int FD, const char *Filename, std::unique_ptr &Result, uint64_t MapSize, int64_t Offset, - bool IsVolatile = false); + bool IsVolatileSize = false); /// Given an already-open file descriptor, read the file and return a /// MemoryBuffer. /// - /// \param IsVolatile true indicates that the file may be changing often. + /// \param IsVolatileSize Set to true to indicate that the file size may be + /// changing, e.g. when libclang tries to parse while the user is + /// editing/updating the file. static error_code getOpenFile(int FD, const char *Filename, OwningPtr &Result, uint64_t FileSize, bool RequiresNullTerminator = true, - bool IsVolatile = false); + bool IsVolatileSize = false); static error_code getOpenFile(int FD, const char *Filename, std::unique_ptr &Result, uint64_t FileSize, bool RequiresNullTerminator = true, - bool IsVolatile = false); + bool IsVolatileSize = false); /// getMemBuffer - Open the specified memory range as a MemoryBuffer. Note /// that InputData must be null terminated if RequiresNullTerminator is true. diff --git a/lib/Support/MemoryBuffer.cpp b/lib/Support/MemoryBuffer.cpp index a42138c0c4e9..82cb7c0da7c1 100644 --- a/lib/Support/MemoryBuffer.cpp +++ b/lib/Support/MemoryBuffer.cpp @@ -253,28 +253,28 @@ static error_code getFileAux(const char *Filename, std::unique_ptr &Result, int64_t FileSize, bool RequiresNullTerminator, - bool IsVolatile); + bool IsVolatileSize); error_code MemoryBuffer::getFile(Twine Filename, std::unique_ptr &Result, int64_t FileSize, bool RequiresNullTerminator, - bool IsVolatile) { + bool IsVolatileSize) { // Ensure the path is null terminated. SmallString<256> PathBuf; StringRef NullTerminatedName = Filename.toNullTerminatedStringRef(PathBuf); return getFileAux(NullTerminatedName.data(), Result, FileSize, - RequiresNullTerminator, IsVolatile); + RequiresNullTerminator, IsVolatileSize); } error_code MemoryBuffer::getFile(Twine Filename, OwningPtr &Result, int64_t FileSize, bool RequiresNullTerminator, - bool IsVolatile) { + bool IsVolatileSize) { std::unique_ptr MB; error_code ec = getFile(Filename, MB, FileSize, RequiresNullTerminator, - IsVolatile); + IsVolatileSize); Result = std::move(MB); return ec; } @@ -283,19 +283,19 @@ static error_code getOpenFileImpl(int FD, const char *Filename, std::unique_ptr &Result, uint64_t FileSize, uint64_t MapSize, int64_t Offset, bool RequiresNullTerminator, - bool IsVolatile); + bool IsVolatileSize); static error_code getFileAux(const char *Filename, std::unique_ptr &Result, int64_t FileSize, bool RequiresNullTerminator, - bool IsVolatile) { + bool IsVolatileSize) { int FD; error_code EC = sys::fs::openFileForRead(Filename, FD); if (EC) return EC; error_code ret = getOpenFileImpl(FD, Filename, Result, FileSize, FileSize, 0, - RequiresNullTerminator, IsVolatile); + RequiresNullTerminator, IsVolatileSize); close(FD); return ret; } @@ -306,11 +306,11 @@ static bool shouldUseMmap(int FD, off_t Offset, bool RequiresNullTerminator, int PageSize, - bool IsVolatile) { + bool IsVolatileSize) { // mmap may leave the buffer without null terminator if the file size changed // by the time the last page is mapped in, so avoid it if the file size is // likely to change. - if (IsVolatile) + if (IsVolatileSize) return false; // We don't use mmap for small files because this can severely fragment our @@ -362,7 +362,7 @@ static error_code getOpenFileImpl(int FD, const char *Filename, std::unique_ptr &Result, uint64_t FileSize, uint64_t MapSize, int64_t Offset, bool RequiresNullTerminator, - bool IsVolatile) { + bool IsVolatileSize) { static int PageSize = sys::process::get_self()->page_size(); // Default is to map the full file. @@ -389,7 +389,7 @@ static error_code getOpenFileImpl(int FD, const char *Filename, } if (shouldUseMmap(FD, FileSize, MapSize, Offset, RequiresNullTerminator, - PageSize, IsVolatile)) { + PageSize, IsVolatileSize)) { error_code EC; Result.reset(new (NamedBufferAlloc(Filename)) MemoryBufferMMapFile( RequiresNullTerminator, FD, MapSize, Offset, EC)); @@ -426,8 +426,9 @@ static error_code getOpenFileImpl(int FD, const char *Filename, return error_code(errno, posix_category()); } if (NumRead == 0) { - assert(IsVolatile && "We got inaccurate FileSize value or fstat reported " - "an invalid file size."); + assert(IsVolatileSize && + "We got inaccurate FileSize value or fstat reported an invalid " + "file size."); memset(BufPtr, 0, BytesLeft); // zero-initialize rest of the buffer. break; } @@ -443,19 +444,19 @@ error_code MemoryBuffer::getOpenFile(int FD, const char *Filename, std::unique_ptr &Result, uint64_t FileSize, bool RequiresNullTerminator, - bool IsVolatile) { + bool IsVolatileSize) { return getOpenFileImpl(FD, Filename, Result, FileSize, FileSize, 0, - RequiresNullTerminator, IsVolatile); + RequiresNullTerminator, IsVolatileSize); } error_code MemoryBuffer::getOpenFile(int FD, const char *Filename, OwningPtr &Result, uint64_t FileSize, bool RequiresNullTerminator, - bool IsVolatile) { + bool IsVolatileSize) { std::unique_ptr MB; error_code ec = getOpenFileImpl(FD, Filename, MB, FileSize, FileSize, 0, - RequiresNullTerminator, IsVolatile); + RequiresNullTerminator, IsVolatileSize); Result = std::move(MB); return ec; } @@ -463,18 +464,18 @@ error_code MemoryBuffer::getOpenFile(int FD, const char *Filename, error_code MemoryBuffer::getOpenFileSlice(int FD, const char *Filename, std::unique_ptr &Result, uint64_t MapSize, int64_t Offset, - bool IsVolatile) { + bool IsVolatileSize) { return getOpenFileImpl(FD, Filename, Result, -1, MapSize, Offset, false, - IsVolatile); + IsVolatileSize); } error_code MemoryBuffer::getOpenFileSlice(int FD, const char *Filename, OwningPtr &Result, uint64_t MapSize, int64_t Offset, - bool IsVolatile) { + bool IsVolatileSize) { std::unique_ptr MB; error_code ec = getOpenFileImpl(FD, Filename, MB, -1, MapSize, Offset, false, - IsVolatile); + IsVolatileSize); Result = std::move(MB); return ec; }