diff --git a/include/llvm/Support/FileSystem.h b/include/llvm/Support/FileSystem.h index 63c9ed5356f..6c58e7b7db6 100644 --- a/include/llvm/Support/FileSystem.h +++ b/include/llvm/Support/FileSystem.h @@ -654,23 +654,6 @@ public: mapped_file_region(mapped_file_region&&); mapped_file_region &operator =(mapped_file_region&&); - /// Construct a mapped_file_region at \a path starting at \a offset of length - /// \a length and with access \a mode. - /// - /// \param path Path to the file to map. If it does not exist it will be - /// created. - /// \param mode How to map the memory. - /// \param length Number of bytes to map in starting at \a offset. If the file - /// is shorter than this, it will be extended. If \a length is - /// 0, the entire file will be mapped. - /// \param offset Byte offset from the beginning of the file where the map - /// should begin. Must be a multiple of - /// mapped_file_region::alignment(). - /// \param ec This is set to errc::success if the map was constructed - /// successfully. Otherwise it is set to a platform dependent error. - mapped_file_region(const Twine &path, mapmode mode, uint64_t length, - uint64_t offset, std::error_code &ec); - /// \param fd An open file descriptor to map. mapped_file_region takes /// ownership if closefd is true. It must have been opended in the correct /// mode. @@ -679,7 +662,6 @@ public: ~mapped_file_region(); - mapmode flags() const; uint64_t size() const; char *data() const; diff --git a/lib/Support/Unix/Path.inc b/lib/Support/Unix/Path.inc index 82b207eecaf..72ef83cbcac 100644 --- a/lib/Support/Unix/Path.inc +++ b/lib/Support/Unix/Path.inc @@ -470,34 +470,6 @@ std::error_code mapped_file_region::init(int FD, bool CloseFD, uint64_t Offset) return std::error_code(); } -mapped_file_region::mapped_file_region(const Twine &path, - mapmode mode, - uint64_t length, - uint64_t offset, - std::error_code &ec) - : Mode(mode) - , Size(length) - , Mapping() { - // Make sure that the requested size fits within SIZE_T. - if (length > std::numeric_limits::max()) { - ec = make_error_code(errc::invalid_argument); - return; - } - - SmallString<128> path_storage; - StringRef name = path.toNullTerminatedStringRef(path_storage); - int oflags = (mode == readonly) ? O_RDONLY : O_RDWR; - int ofd = ::open(name.begin(), oflags); - if (ofd == -1) { - ec = std::error_code(errno, std::generic_category()); - return; - } - - ec = init(ofd, true, offset); - if (ec) - Mapping = nullptr; -} - mapped_file_region::mapped_file_region(int fd, bool closefd, mapmode mode, @@ -528,11 +500,6 @@ mapped_file_region::mapped_file_region(mapped_file_region &&other) other.Mapping = nullptr; } -mapped_file_region::mapmode mapped_file_region::flags() const { - assert(Mapping && "Mapping failed but used anyway!"); - return Mode; -} - uint64_t mapped_file_region::size() const { assert(Mapping && "Mapping failed but used anyway!"); return Size; diff --git a/lib/Support/Windows/Path.inc b/lib/Support/Windows/Path.inc index adb9a60857f..eebee204a1e 100644 --- a/lib/Support/Windows/Path.inc +++ b/lib/Support/Windows/Path.inc @@ -551,49 +551,6 @@ std::error_code mapped_file_region::init(int FD, bool CloseFD, uint64_t Offset) return std::error_code(); } -mapped_file_region::mapped_file_region(const Twine &path, - mapmode mode, - uint64_t length, - uint64_t offset, - std::error_code &ec) - : Mode(mode) - , Size(length) - , Mapping() - , FileDescriptor() - , FileHandle(INVALID_HANDLE_VALUE) - , FileMappingHandle() { - SmallVector path_utf16; - - // Convert path to UTF-16. - if ((ec = widenPath(path, path_utf16))) - return; - - // Get file handle for creating a file mapping. - FileHandle = ::CreateFileW(c_str(path_utf16), - Mode == readonly ? GENERIC_READ - : GENERIC_READ | GENERIC_WRITE, - Mode == readonly ? FILE_SHARE_READ - : 0, - 0, - Mode == readonly ? OPEN_EXISTING - : OPEN_ALWAYS, - Mode == readonly ? FILE_ATTRIBUTE_READONLY - : FILE_ATTRIBUTE_NORMAL, - 0); - if (FileHandle == INVALID_HANDLE_VALUE) { - ec = windows_error(::GetLastError()); - return; - } - - FileDescriptor = 0; - ec = init(FileDescriptor, true, offset); - if (ec) { - Mapping = FileMappingHandle = 0; - FileHandle = INVALID_HANDLE_VALUE; - FileDescriptor = 0; - } -} - mapped_file_region::mapped_file_region(int fd, bool closefd, mapmode mode, @@ -640,11 +597,6 @@ mapped_file_region::mapped_file_region(mapped_file_region &&other) other.FileDescriptor = 0; } -mapped_file_region::mapmode mapped_file_region::flags() const { - assert(Mapping && "Mapping failed but used anyway!"); - return Mode; -} - uint64_t mapped_file_region::size() const { assert(Mapping && "Mapping failed but used anyway!"); return Size; diff --git a/unittests/Support/Path.cpp b/unittests/Support/Path.cpp index 502cda27cd9..d1f4e24ccb7 100644 --- a/unittests/Support/Path.cpp +++ b/unittests/Support/Path.cpp @@ -662,10 +662,10 @@ TEST_F(FileSystemTest, FileMapping) { } // Map it back in read-only - fs::mapped_file_region mfr(Twine(TempPath), - fs::mapped_file_region::readonly, - 0, - 0, + int FD; + EC = fs::openFileForRead(Twine(TempPath), FD); + ASSERT_NO_ERROR(EC); + fs::mapped_file_region mfr(FD, false, fs::mapped_file_region::readonly, 0, 0, EC); ASSERT_NO_ERROR(EC); @@ -673,13 +673,10 @@ TEST_F(FileSystemTest, FileMapping) { EXPECT_EQ(StringRef(mfr.const_data()), Val); // Unmap temp file - - fs::mapped_file_region m(Twine(TempPath), - fs::mapped_file_region::readonly, - 0, - 0, - EC); + fs::mapped_file_region m(FD, false, fs::mapped_file_region::readonly, 0, 0, + EC); ASSERT_NO_ERROR(EC); + ASSERT_EQ(close(FD), 0); const char *Data = m.const_data(); fs::mapped_file_region mfrrv(std::move(m)); EXPECT_EQ(mfrrv.const_data(), Data);