Author: Giulio Eulisse Date: 2024-09-05T10:16:51+02:00 New Revision: 3e4788377bb29ed389b46521fcba0d06aa985bcf
URL: https://github.com/llvm/llvm-project/commit/3e4788377bb29ed389b46521fcba0d06aa985bcf DIFF: https://github.com/llvm/llvm-project/commit/3e4788377bb29ed389b46521fcba0d06aa985bcf.diff LOG: Recover performance loss after PagedVector introduction (#67972) Added: Modified: clang/include/clang/Basic/SourceManager.h llvm/include/llvm/ADT/PagedVector.h Removed: ################################################################################ diff --git a/clang/include/clang/Basic/SourceManager.h b/clang/include/clang/Basic/SourceManager.h index d3ccc7ef81c079..e0f1ea435d54e4 100644 --- a/clang/include/clang/Basic/SourceManager.h +++ b/clang/include/clang/Basic/SourceManager.h @@ -724,7 +724,7 @@ class SourceManager : public RefCountedBase<SourceManager> { /// /// Negative FileIDs are indexes into this table. To get from ID to an index, /// use (-ID - 2). - llvm::PagedVector<SrcMgr::SLocEntry> LoadedSLocEntryTable; + llvm::PagedVector<SrcMgr::SLocEntry, 32> LoadedSLocEntryTable; /// For each allocation in LoadedSLocEntryTable, we keep the first FileID. /// We assume exactly one allocation per AST file, and use that to determine diff --git a/llvm/include/llvm/ADT/PagedVector.h b/llvm/include/llvm/ADT/PagedVector.h index 3fcca6d82cb33a..52ecd0bb0ba118 100644 --- a/llvm/include/llvm/ADT/PagedVector.h +++ b/llvm/include/llvm/ADT/PagedVector.h @@ -84,7 +84,7 @@ template <typename T, size_t PageSize = 1024 / sizeof(T)> class PagedVector { assert(Index / PageSize < PageToDataPtrs.size()); T *&PagePtr = PageToDataPtrs[Index / PageSize]; // If the page was not yet allocated, allocate it. - if (!PagePtr) { + if (LLVM_UNLIKELY(!PagePtr)) { PagePtr = Allocator.getPointer()->template Allocate<T>(PageSize); // We need to invoke the default constructor on all the elements of the // page. _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits