[PATCH] D35200: Don't use mmap on Windows
yvvan abandoned this revision. yvvan added a comment. It was the wrong direction https://reviews.llvm.org/D35200 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D35200: Don't use mmap on Windows
joerg added a comment. The primary reason for using mmap is not so much performance, but reduced memory foot print. https://reviews.llvm.org/D35200 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D35200: Don't use mmap on Windows
ilya-biryukov added a comment. In https://reviews.llvm.org/D35200#844132, @yvvan wrote: > The files might also be removed. > I checked that with qtcreator from git. Switching to the different branch > started reparse of some files. > When I frequently switched branches back and forth I got lock issues. With > mmap turned off this did not happen. Renaming/removing memory mapped files also works fine. What were those 'lock issues' specifically? `MemoryBuffer` code that uses the function you're changing seems to be doing the right thing by always allowing shared file access. We definitely need a test case that realiably reproduces your issue. https://reviews.llvm.org/D35200 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D35200: Don't use mmap on Windows
yvvan added a comment. The files might also be removed. I checked that with qtcreator from git. Switching to the different branch started reparse of some files. When I frequently switched branches back and forth I got lock issues. With mmap turned off this did not happen. https://reviews.llvm.org/D35200 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D35200: Don't use mmap on Windows
ilya-biryukov added a comment. This looks strange. AFAIK, memory mapping files in Windows does no 'locking' by itself. I've just written a small program to check that it's possible to modify the file, memory-mapped using Win32 API. What is specific problem you ran into? https://reviews.llvm.org/D35200 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D35200: Don't use mmap on Windows
nik added a reviewer: ilya-biryukov. nik added a comment. Ping. I guess locking the file less helps also clangd?! https://reviews.llvm.org/D35200 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D35200: Don't use mmap on Windows
yvvan added a comment. What do you think about that change? https://reviews.llvm.org/D35200 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D35200: Don't use mmap on Windows
yvvan created this revision. Memory mapping does not make llvm faster (at least I don't see any difference). It also allows llvm not to lock files which is sometimes quite important. https://reviews.llvm.org/D35200 Files: lib/Support/MemoryBuffer.cpp Index: lib/Support/MemoryBuffer.cpp === --- lib/Support/MemoryBuffer.cpp +++ lib/Support/MemoryBuffer.cpp @@ -284,6 +284,10 @@ bool RequiresNullTerminator, int PageSize, bool IsVolatile) { +#ifdef _WIN32 + // Do not use mmap on Windows in order to avoid file locking + return false; +#endif // 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. Index: lib/Support/MemoryBuffer.cpp === --- lib/Support/MemoryBuffer.cpp +++ lib/Support/MemoryBuffer.cpp @@ -284,6 +284,10 @@ bool RequiresNullTerminator, int PageSize, bool IsVolatile) { +#ifdef _WIN32 + // Do not use mmap on Windows in order to avoid file locking + return false; +#endif // 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. ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits