Change how cooked index waits for threads
authorTom Tromey <tom@tromey.com>
Tue, 27 Dec 2022 15:58:38 +0000 (08:58 -0700)
committerTom Tromey <tom@tromey.com>
Tue, 9 Jan 2024 01:40:21 +0000 (18:40 -0700)
This changes the cooked index code to wait for threads in its
public-facing API.  That is, the waits are done in cooked_index now,
and never in the cooked_index_shard.  Centralizing this decision makes
it easier to wait for other events here as well.

gdb/dwarf2/cooked-index.c
gdb/dwarf2/cooked-index.h

index ba77f9c..7588b5c 100644 (file)
@@ -409,8 +409,6 @@ cooked_index_shard::do_finalize ()
 cooked_index_shard::range
 cooked_index_shard::find (const std::string &name, bool completing) const
 {
-  wait ();
-
   cooked_index_entry::comparison_mode mode = (completing
                                              ? cooked_index_entry::COMPLETE
                                              : cooked_index_entry::MATCH);
@@ -528,6 +526,7 @@ cooked_index::get_addrmaps () const
 cooked_index::range
 cooked_index::find (const std::string &name, bool completing) const
 {
+  wait ();
   std::vector<cooked_index_shard::range> result_range;
   result_range.reserve (m_vector.size ());
   for (auto &entry : m_vector)
index 63fed35..914a595 100644 (file)
@@ -288,7 +288,6 @@ public:
   /* Return a range of all the entries.  */
   range all_entries () const
   {
-    wait ();
     return { m_entries.cbegin (), m_entries.cend () };
   }
 
@@ -461,6 +460,7 @@ public:
   /* Return a range of all the entries.  */
   range all_entries () const
   {
+    wait ();
     std::vector<cooked_index_shard::range> result_range;
     result_range.reserve (m_vector.size ());
     for (auto &entry : m_vector)