[PDB] Bypass generic deserialization code for publics sorting
authorReid Kleckner <rnk@google.com>
Sun, 3 May 2020 01:06:41 +0000 (18:06 -0700)
committerReid Kleckner <rnk@google.com>
Sun, 3 May 2020 01:14:50 +0000 (18:14 -0700)
commit5070cecd7219fc078cf0084d9dfa91e86b490bc2
tree0845793a23a8f590a1a822ef992ff42349177c7d
parent810c8e9b495c191f49b162cee3fb8829185a2691
[PDB] Bypass generic deserialization code for publics sorting

The number of public symbols is very large, and each deserialization
does a few heap allocations. The public symbols are serialized by the
linker, so we can assume they have the expected layout and use it
directly.

Saves O(#publics) temporary heap allocations and shrinks some data
structures.
llvm/include/llvm/DebugInfo/CodeView/SymbolRecord.h
llvm/lib/DebugInfo/PDB/Native/GSIStreamBuilder.cpp