Improved scalability in case of many synchronization objects.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7823 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/exp-drd/drd_clientobj.c b/exp-drd/drd_clientobj.c
index c473de9..5090aac 100644
--- a/exp-drd/drd_clientobj.c
+++ b/exp-drd/drd_clientobj.c
@@ -123,6 +123,7 @@
   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 @@
   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; )