-
- Downloads
Bug 1750930 - Make the indirect stub table two-level. r=yury, a=RyanVM
For large applications with multiple threads and large tables of indirect functions and tiered compilation, the shared (per-module) indirect stubs set can easily reach one million entries. However the insert-one-at-a-time strategy for this set uses linear time, so merging a new set of stubs into the set will tend to take quadratic time. Furthermore, a lock is held by each thread during this slow process, serializing all the threads. The result can be very slow application startup. As a stopgap (because we may remove the indirect stubs and don't need to commit to a complex solution right now), we break the indirect stubs set it into per-tls sets to avoid the very long insertion times resulting from having one shared set per module. Set merging remains quadratic but the since the sets are much smaller it matters much less. A followup bug will be filed for a better, permanent solution, should we need it. Differential Revision: https://phabricator.services.mozilla.com/D136470
Please register or sign in to comment