]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Improved scalability in case of many synchronization objects.
authorBart Van Assche <bvanassche@acm.org>
Sun, 30 Mar 2008 16:55:40 +0000 (16:55 +0000)
committerBart Van Assche <bvanassche@acm.org>
Sun, 30 Mar 2008 16:55:40 +0000 (16:55 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7823

exp-drd/drd_clientobj.c

index c473de9efb87cf225a20347d3b6ca3e570dfd831..5090aacebe5656aec45b0a19d21a861df2d5d0a5 100644 (file)
@@ -123,6 +123,7 @@ clientobj_add(const Addr a1, const ObjType t)
   p->any.type = t;
   VG_(OSetGen_Insert)(s_clientobj, p);
   tl_assert(VG_(OSetGen_Lookup)(s_clientobj, &a1) == p);
+  drd_start_suppression(a1, a1 + 1, "clientobj");
   return p;
 }
 
@@ -160,6 +161,10 @@ void clientobj_stop_using_mem(const Addr a1, const Addr a2)
   DrdClientobj* p;
 
   tl_assert(s_clientobj);
+
+  if (! drd_is_any_suppressed(a1, a2))
+    return;
+
   VG_(OSetGen_ResetIter)(s_clientobj);
   p = VG_(OSetGen_Next)(s_clientobj);
   for ( ; p != 0; )