Shrink SectionChunk by combining Relocs and SectionName sizes
authorReid Kleckner <rnk@google.com>
Fri, 3 May 2019 20:17:14 +0000 (20:17 +0000)
committerReid Kleckner <rnk@google.com>
Fri, 3 May 2019 20:17:14 +0000 (20:17 +0000)
commit0a1b1d6e6237af726cb6e62bd8ab1e19280567f4
tree3e5d8cfed5bfd28ed84d19a6b0057b654d61dfdb
parenta857e310115cd21f187c028777c582e3089cf722
Shrink SectionChunk by combining Relocs and SectionName sizes

SectionChunk is one of the most frequently allocated data structures in
LLD, since there are about four per function when optimizations and
debug info are enabled (.text, .pdata, .xdata, .debug$S).

A PE COFF file cannot be larger than 2GB, so there is an inherent limit
on the length of the section name and the number of relocations.
Decompose the ArrayRef and StringRef into pointer and size, and put them
back together in the accessors for section name and relocation list.

I plan to gather complete performance numbers later by padding
SectionChunk with dead data and measuring performance after all the size
optimizations are done.

llvm-svn: 359923
lld/COFF/Chunks.cpp
lld/COFF/Chunks.h
lld/COFF/ICF.cpp
lld/COFF/PDB.cpp
lld/COFF/SymbolTable.cpp
lld/COFF/Writer.cpp