[lld-macho] Factor out common InputSection members
We have been creating many ConcatInputSections with identical values due to .subsections_via_symbols. This diff factors out the identical values into a Shared struct, to reduce memory consumption and make copying cheaper. I also changed `callSiteCount` from a uint32_t to a 31-bit field to save an extra word. All in all, this takes InputSection from 120 to 72 bytes (and ConcatInputSection from 160 to 112 bytes), i.e. 30% size reduction in ConcatInputSection. Numbers for linking chromium_framework on my 3.2 GHz 16-Core Intel Xeon W: N Min Max Median Avg Stddev x 20 4.14 4.24 4.18 4.183 0.027548999 + 20 4.04 4.11 4.075 4.0775 0.018027756 Difference at 95.0% confidence -0.1055 +/- 0.0149005 -2.52211% +/- 0.356215% (Student's t, pooled s = 0.0232803) Reviewed By: #lld-macho, thakis Differential Revision: https://reviews.llvm.org/D105305
Showing
- lld/MachO/ConcatOutputSection.cpp 5 additions, 5 deletionslld/MachO/ConcatOutputSection.cpp
- lld/MachO/Driver.cpp 8 additions, 9 deletionslld/MachO/Driver.cpp
- lld/MachO/Dwarf.cpp 1 addition, 1 deletionlld/MachO/Dwarf.cpp
- lld/MachO/ICF.cpp 1 addition, 1 deletionlld/MachO/ICF.cpp
- lld/MachO/InputFiles.cpp 9 additions, 9 deletionslld/MachO/InputFiles.cpp
- lld/MachO/InputSection.cpp 11 additions, 11 deletionslld/MachO/InputSection.cpp
- lld/MachO/InputSection.h 36 additions, 15 deletionslld/MachO/InputSection.h
- lld/MachO/MarkLive.cpp 4 additions, 4 deletionslld/MachO/MarkLive.cpp
- lld/MachO/SymbolTable.cpp 1 addition, 1 deletionlld/MachO/SymbolTable.cpp
- lld/MachO/Symbols.h 1 addition, 1 deletionlld/MachO/Symbols.h
- lld/MachO/SyntheticSections.cpp 4 additions, 4 deletionslld/MachO/SyntheticSections.cpp
- lld/MachO/UnwindInfoSection.cpp 3 additions, 3 deletionslld/MachO/UnwindInfoSection.cpp
- lld/MachO/Writer.cpp 6 additions, 4 deletionslld/MachO/Writer.cpp
Loading
Please register or sign in to comment