[modules] Rework serialized DeclContext lookup table management. Instead of
walking the loaded ModuleFiles looking for lookup tables for the context, store them all in one place, and merge them together if we find we have too many (currently, more than 4). If we do merge, include the merged form in our serialized lookup table, so that downstream readers never need to look at our imports' tables. This gives a huge performance improvement to builds with very large numbers of modules (in some cases, more than a 2x speedup was observed). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246497 91177308-0d34-0410-b5e6-96231b3b80d8
Showing
- include/clang/Serialization/ASTBitCodes.h 19 additions, 0 deletionsinclude/clang/Serialization/ASTBitCodes.h
- include/clang/Serialization/ASTReader.h 17 additions, 4 deletionsinclude/clang/Serialization/ASTReader.h
- include/clang/Serialization/ASTWriter.h 3 additions, 2 deletionsinclude/clang/Serialization/ASTWriter.h
- include/clang/Serialization/Module.h 0 additions, 15 deletionsinclude/clang/Serialization/Module.h
- lib/Serialization/ASTReader.cpp 77 additions, 181 deletionslib/Serialization/ASTReader.cpp
- lib/Serialization/ASTReaderDecl.cpp 5 additions, 8 deletionslib/Serialization/ASTReaderDecl.cpp
- lib/Serialization/ASTReaderInternals.h 24 additions, 10 deletionslib/Serialization/ASTReaderInternals.h
- lib/Serialization/ASTWriter.cpp 52 additions, 24 deletionslib/Serialization/ASTWriter.cpp
- lib/Serialization/ASTWriterDecl.cpp 0 additions, 1 deletionlib/Serialization/ASTWriterDecl.cpp
- lib/Serialization/Module.cpp 0 additions, 7 deletionslib/Serialization/Module.cpp
- lib/Serialization/MultiOnDiskHashTable.h 318 additions, 0 deletionslib/Serialization/MultiOnDiskHashTable.h
- test/Modules/cxx-templates.cpp 6 additions, 2 deletionstest/Modules/cxx-templates.cpp
- test/Modules/merge-using-decls.cpp 3 additions, 1 deletiontest/Modules/merge-using-decls.cpp
Loading
Please register or sign in to comment