commit | 87422875091fea5612ac09ed9b350b0fbe0d94fd | [log] [tgz] |
---|---|---|
author | Jez Ng <jezng@fb.com> | Fri Apr 02 18:46:18 2021 -0400 |
committer | Copybara-Service <copybara-worker@google.com> | Mon Apr 12 11:33:44 2021 -0700 |
tree | a5d695d0beb408a18e645dcb851cdd926c8a4719 | |
parent | 9b2812b033336f069608c83b961c45961298d8f4 [diff] |
[lld-macho][nfc] Refactor in preparation for 32-bit support The main challenge was handling the different on-disk structures (e.g. `mach_header` vs `mach_header_64`). I tried to strike a balance between sprinkling `target->wordSize == 8` checks everywhere (branchy = slow, and ugly) and templatizing everything (causes code bloat, also ugly). I think I struck a decent balance by judicious use of type erasure. Note that LLD-ELF has a similar architecture, though it seems to use more templating. Linking chromium_framework takes about the same time before and after this change: N Min Max Median Avg Stddev x 20 4.52 4.67 4.595 4.5945 0.044423204 + 20 4.5 4.71 4.575 4.582 0.056344803 No difference proven at 95.0% confidence Reviewed By: #lld-macho, oontvoo Differential Revision: https://reviews.llvm.org/D99633 GitOrigin-RevId: 817d98d84186c3508ba7a9a58202e616b23f344a
This directory and its subdirectories contain source code for the LLVM Linker, a modular cross platform linker which is built as part of the LLVM compiler infrastructure project.
lld is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt.
In order to make sure various developers can evaluate patches over the same tests, we create a collection of self contained programs.
It is hosted at https://s3-us-west-2.amazonaws.com/linker-tests/lld-speed-test.tar.xz
The current sha256 is 10eec685463d5a8bbf08d77f4ca96282161d396c65bd97dc99dbde644a31610f
.