[all-commits] [llvm/llvm-project] fe0e80: [JITLink][NFC] Store external symbols in a StringMap
Job Noorman via All-commits
all-commits at lists.llvm.org
Tue Aug 29 00:21:26 PDT 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: fe0e804a4ef4fdf0ae7b2654ad4ac8d1cfafec60
https://github.com/llvm/llvm-project/commit/fe0e804a4ef4fdf0ae7b2654ad4ac8d1cfafec60
Author: Job Noorman <jnoorman at igalia.com>
Date: 2023-08-29 (Tue, 29 Aug 2023)
Changed paths:
M llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h
Log Message:
-----------
[JITLink][NFC] Store external symbols in a StringMap
External symbols used to be stored in a `DenseSet`. An `assert` in
`addExternalSymbol` ensures that names of external symbols are unique.
However, for objects containing a huge number of external symbols, this
`assert` can be a performance bottleneck.
This patch proposes to store external symbols in a `StringMap` instead
making it significantly cheaper to check if a certain symbol name
already exists.
This issue came up while porting BOLT to JITLink (D147544): linking a
large binary using the JITLink port turned out to be about 4x slower
than the current version of BOLT that uses RuntimeDyld. This slowdown
was caused entirely by the `assert` in `addExternalSymbol`. Using this
patch, the JITLink port is slightly faster than RuntimeDyld.
Reviewed By: maksfb
Differential Revision: https://reviews.llvm.org/D150874
More information about the All-commits
mailing list