Re: [PATCH 4/4] gdb: change regcache list to be a map

Tom Tromey
2020-08-12T15:17:19Z

Tom> A simple fix would be to fall back to iterating over the map in the
Tom> is_pid case. I don't know whether this would reintroduce the
Tom> performance issue that prompted the patch, though.

FWIW this worked for my test case.

I also have some ravenscar-thread changes, though I'm not sure yet if
those are really needed.

Tom

diff --git a/gdb/regcache.c b/gdb/regcache.c
index cd54bc6b5f9..d409b8c2f25 100644
--- a/gdb/regcache.c
+++ b/gdb/regcache.c
@@ -486,7 +486,15 @@ registers_changed_ptid (process_stratum_target *target, ptid_t ptid)
if (ptid_regc_map_it != regcaches.end ())
{
auto &ptid_regc_map = ptid_regc_map_it->second;
- ptid_regc_map.erase (ptid);
+
+ auto last = ptid_regc_map.end ();
+ for (auto i = ptid_regc_map.begin (); i != last; )
+ {
+ if (i->first.matches (ptid))
+ i = ptid_regc_map.erase (i);
+ else
+ ++i;
+ }
}
}
else