[all-commits] [llvm/llvm-project] b7d807: [lldb] parallelize calling of Module::PreloadSymbo...

Luboš Luňák via All-commits all-commits at lists.llvm.org
Wed May 4 11:00:15 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: b7d807dbcff0d9df466e0312b4fef57178d207be
      https://github.com/llvm/llvm-project/commit/b7d807dbcff0d9df466e0312b4fef57178d207be
  Author: Luboš Luňák <l.lunak at centrum.cz>
  Date:   2022-05-04 (Wed, 04 May 2022)

  Changed paths:
    M lldb/source/Target/Target.cpp

  Log Message:
  -----------
  [lldb] parallelize calling of Module::PreloadSymbols()

If LLDB index cache is enabled and everything is cached, then loading of debug
info is essentially single-threaded, because it's done from PreloadSymbols()
called from GetOrCreateModule(), which is called from a loop calling
LoadModuleAtAddress() in DynamicLoaderPOSIXDYLD. Parallelizing the entire
loop could be unsafe because of GetOrCreateModule() operating on a module
list, so instead move only the PreloadSymbols() call to Target::ModulesDidLoad()
and parallelize there, which should be safe.

This may greatly reduce the load time if the debugged program uses a large
number of binaries (as opposed to monolithic programs where this presumably
doesn't make a difference). In my specific case of LibreOffice Calc this reduces
startup time from 6s to 2s.

Differential Revision: https://reviews.llvm.org/D122975




More information about the All-commits mailing list