hanchenye-llvm-project/lld/MachO
Vincent Lee d17b092fe6 [lld-macho] Make writing map file asynchronous
For large applications that write to map files, writing map files can take quite
a bit of time. Sorting the biggest contributors to link times, writing map files
ranks in at 2nd place, with load input files being the biggest contributor of
link times. Avoiding writing map files on the critical path (and having its own
thread) saves ~2-3 seconds when linking chromium framework on a 16-Core
Intel Xeon W.

```
           base            diff            difference (95% CI)
sys_time   1.617 ± 0.034   1.657 ± 0.026   [  +1.5% ..   +3.5%]
user_time  28.536 ± 0.245  28.609 ± 0.180  [  -0.1% ..   +0.7%]
wall_time  23.833 ± 0.271  21.684 ± 0.194  [  -9.5% ..   -8.5%]
samples    31              24
```

Reviewed By: #lld-macho, oontvoo, int3

Differential Revision: https://reviews.llvm.org/D115416
2021-12-15 16:37:04 -08:00
..
Arch [lld/mac] Set branchRange a bit more carefully 2021-08-30 12:36:06 -04:00
CMakeLists.txt [CMake][gn] lldMachO=>lldMachOOld, lldMachO2=>lldMachO 2021-08-04 18:52:41 -07:00
ConcatOutputSection.cpp [lld-macho][nfc] InputSections don't need to track their total # of callsites 2021-12-11 01:01:57 -05:00
ConcatOutputSection.h
Config.h [lld-macho] Add warn flags to enable/disable warnings on -install_name 2021-11-17 16:18:14 -08:00
Driver.cpp [lld-macho] Add warn flags to enable/disable warnings on -install_name 2021-11-17 16:18:14 -08:00
Driver.h [MachO] Properly reset global state 2021-10-31 16:14:29 -07:00
DriverUtils.cpp [MachO] Properly reset global state 2021-10-31 16:14:29 -07:00
Dwarf.cpp
Dwarf.h
ExportTrie.cpp
ExportTrie.h
ICF.cpp [lld/mac] Crash even less on undefined symbols with --icf=all 2021-11-19 09:23:19 -05:00
ICF.h
InputFiles.cpp [lld-macho][nfc] Simplify LC_DATA_IN_CODE generation 2021-12-11 01:01:57 -05:00
InputFiles.h [lld-macho][nfc] Simplify LC_DATA_IN_CODE generation 2021-12-11 01:01:57 -05:00
InputSection.cpp [MachO] Fix struct size assertion 2021-11-22 15:02:30 -08:00
InputSection.h [lld-macho][nfc] InputSections don't need to track their total # of callsites 2021-12-11 01:01:57 -05:00
LTO.cpp [Support] Improve Caching conformance with Support library behavior 2021-11-04 13:00:44 -07:00
LTO.h
MachOStructs.h
MapFile.cpp
MapFile.h
MarkLive.cpp [lld-macho][nfc] Factor-out NFC changes from main __eh_frame diff 2021-11-17 15:16:44 -07:00
MarkLive.h
ObjC.cpp [lld-macho][nfc] rename parsed-section types & variables 2021-11-16 07:06:41 -07:00
ObjC.h
Options.td [lld-macho] Add warn flags to enable/disable warnings on -install_name 2021-11-17 16:18:14 -08:00
OutputSection.cpp [lld/mac] Implement support for section$start and section$ end symbols 2021-07-23 16:01:09 -04:00
OutputSection.h [lld/mac] Implement support for section$start and section$ end symbols 2021-07-23 16:01:09 -04:00
OutputSegment.cpp [MachO] Properly reset global state 2021-10-31 16:14:29 -07:00
OutputSegment.h [MachO] Properly reset global state 2021-10-31 16:14:29 -07:00
Relocations.cpp [MachO] Move type size asserts to source files. NFC 2021-11-16 17:14:16 -08:00
Relocations.h [MachO] Move type size asserts to source files. NFC 2021-11-16 17:14:16 -08:00
SymbolTable.cpp [lld-macho] Unreferenced weak dylib symbols shouldn't fetch archive symbols 2021-12-05 15:11:44 -05:00
SymbolTable.h [lld-macho] Allow exporting weak_def_can_be_hidden(AKA "autohide") symbols 2021-11-12 21:57:30 -05:00
Symbols.cpp [lld-macho][nfc] Factor-out NFC changes from main __eh_frame diff 2021-11-17 15:16:44 -07:00
Symbols.h [lld-macho] Mark dylib symbols coming from -weak_framework as weak-ref. 2021-11-30 09:54:59 -05:00
SyntheticSections.cpp [lld-macho][nfc] Simplify LC_DATA_IN_CODE generation 2021-12-11 01:01:57 -05:00
SyntheticSections.h [lld-macho] If export_size is zero, export_off must be zero 2021-10-27 14:58:42 -04:00
Target.cpp
Target.h [lld/mac] Set branchRange a bit more carefully 2021-08-30 12:36:06 -04:00
UnwindInfoSection.cpp [lld-macho] Don't replace local personality symbol with LazySymbol 2021-11-22 14:09:54 -05:00
UnwindInfoSection.h [lld-macho] Support renaming of LSDA section 2021-11-10 19:31:54 -05:00
Writer.cpp [lld-macho] Make writing map file asynchronous 2021-12-15 16:37:04 -08:00
Writer.h [MachO] Properly reset global state 2021-10-31 16:14:29 -07:00
ld64-vs-lld.rst [NFC] Trim trailing whitespace in *.rst 2021-11-15 09:17:08 +08:00