Have the event map GC use the same approach as the other GC
done from libhb_maybe_GC, i.e. check the condition in
libhb_maybe_GC, and call the (non inlined) GC only if
a GC is needed.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15082 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/helgrind/libhb_core.c b/helgrind/libhb_core.c
index 35472ad..1bd771d 100644
--- a/helgrind/libhb_core.c
+++ b/helgrind/libhb_core.c
@@ -4491,7 +4491,7 @@
}
__attribute__((noinline))
-static void event_map_maybe_GC ( void )
+static void event_map_GC ( void )
{
OldRef* oldref;
UWord keyW, valW, retained, maxGen;
@@ -4502,9 +4502,6 @@
UWord genMap_min = 0;
UWord genMap_size = 0;
- if (LIKELY(oldrefTreeN < HG_(clo_conflict_cache_size)))
- return;
-
if (0)
VG_(printf)("libhb: event_map GC at size %lu\n", oldrefTreeN);
@@ -6585,7 +6582,9 @@
void libhb_maybe_GC ( void )
{
- event_map_maybe_GC();
+ if (UNLIKELY(oldrefTreeN >= HG_(clo_conflict_cache_size)))
+ event_map_GC();
+
/* If there are still freelist entries available, no need for a
GC. */
if (vts_tab_freelist != VtsID_INVALID)