[PATCH] D87736: [PDB] Split TypeServerSource and extend CVIndexMap lifetime

Reid "Away June-Sep" Kleckner via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 15 19:03:12 PDT 2020


rnk created this revision.
rnk added reviewers: aganea, akhuang.
Herald added subscribers: jfb, arphaman.
Herald added a project: LLVM.
rnk requested review of this revision.

Extending the lifetime of these type index mappings does increase memory
usage (+2% in my case), but it decouples type merging from
symbol merging. This is a pre-requisite for two changes that I have in
mind:

- parallel type merging: speeds up slow type merging
- defered symbol merging: avoid heap allocating (relocating) all symbols

This change moves the storage for the mappings out of the CVIndexMap so
that it can be efficiently copied from TypeServerSource (PDBs) objects
into UseTypeServerSource (/Zi) objects.

Splitting TypeServerSource establishes that all input types to be merged
can be identified with two 32-bit indices:

- The index of the TpiSource object
- The type index of the record

This is useful, because this information can be stored in a single
64-bit atomic word to enable concurrent hashtable insertion.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D87736

Files:
  lld/COFF/DebugTypes.cpp
  lld/COFF/DebugTypes.h
  lld/COFF/PDB.cpp
  lld/COFF/TypeMerger.h

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D87736.292075.patch
Type: text/x-patch
Size: 17051 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200916/7d7b29df/attachment.bin>


More information about the llvm-commits mailing list