Revert "[lldb] parallelize calling of Module::PreloadSymbols()"
authorPavel Labath <pavel@labath.sk>
Mon, 9 May 2022 09:07:03 +0000 (11:07 +0200)
committerPavel Labath <pavel@labath.sk>
Mon, 9 May 2022 09:11:01 +0000 (11:11 +0200)
This reverts commit b7d807dbcff0d9df466e0312b4fef57178d207be -- it
breaks TestMultipleDebuggers.py.

lldb/source/Target/Target.cpp

index d6ad333..ed733f2 100644 (file)
@@ -62,7 +62,6 @@
 
 #include "llvm/ADT/ScopeExit.h"
 #include "llvm/ADT/SetVector.h"
-#include "llvm/Support/ThreadPool.h"
 
 #include <memory>
 #include <mutex>
@@ -1624,17 +1623,6 @@ void Target::NotifyModulesRemoved(lldb_private::ModuleList &module_list) {
 void Target::ModulesDidLoad(ModuleList &module_list) {
   const size_t num_images = module_list.GetSize();
   if (m_valid && num_images) {
-    if (GetPreloadSymbols()) {
-      // Try to preload symbols in parallel.
-      llvm::ThreadPoolTaskGroup task_group(Debugger::GetThreadPool());
-      auto preload_symbols_fn = [&](size_t idx) {
-        ModuleSP module_sp(module_list.GetModuleAtIndex(idx));
-        module_sp->PreloadSymbols();
-      };
-      for (size_t idx = 0; idx < num_images; ++idx)
-        task_group.async(preload_symbols_fn, idx);
-      task_group.wait();
-    }
     for (size_t idx = 0; idx < num_images; ++idx) {
       ModuleSP module_sp(module_list.GetModuleAtIndex(idx));
       LoadScriptingResourceForModule(module_sp, this);
@@ -2182,6 +2170,11 @@ ModuleSP Target::GetOrCreateModule(const ModuleSpec &module_spec, bool notify,
           });
         }
 
+        // Preload symbols outside of any lock, so hopefully we can do this for
+        // each library in parallel.
+        if (GetPreloadSymbols())
+          module_sp->PreloadSymbols();
+
         llvm::SmallVector<ModuleSP, 1> replaced_modules;
         for (ModuleSP &old_module_sp : old_modules) {
           if (m_images.GetIndexForModule(old_module_sp.get()) !=