[mpich2-commits] r4027 - mpich2/trunk/src/include

goodell at mcs.anl.gov goodell at mcs.anl.gov
Thu Mar 12 12:42:57 CDT 2009


Author: goodell
Date: 2009-03-12 12:42:57 -0500 (Thu, 12 Mar 2009)
New Revision: 4027

Modified:
   mpich2/trunk/src/include/mpiimpl.h
Log:
Add assertions to keyval reference counting macros.

These make testing for ref counting bugs easier.

No reviewer.

Modified: mpich2/trunk/src/include/mpiimpl.h
===================================================================
--- mpich2/trunk/src/include/mpiimpl.h	2009-03-12 15:50:22 UTC (rev 4026)
+++ mpich2/trunk/src/include/mpiimpl.h	2009-03-12 17:42:57 UTC (rev 4027)
@@ -1042,15 +1042,21 @@
 #endif
 } MPID_Keyval;
 
-#define MPIR_Keyval_add_ref( _keyval ) \
-    { MPIU_Object_add_ref( _keyval );                   \
-      MPIU_DBG_MSG_FMT(REFCOUNT,TYPICAL,(MPIU_DBG_FDEST,\
-         "Incr keyval %p ref count to %d",_keyval,_keyval->ref_count));}
+#define MPIR_Keyval_add_ref( _keyval )                                  \
+    do {                                                                \
+        MPIU_Assert((_keyval)->ref_count >= 0);                         \
+        MPIU_Object_add_ref( _keyval );                                 \
+        MPIU_DBG_MSG_FMT(REFCOUNT,TYPICAL,(MPIU_DBG_FDEST,              \
+         "Incr keyval %p ref count to %d",_keyval,_keyval->ref_count)); \
+    } while(0)
 
-#define MPIR_Keyval_release_ref( _keyval, _inuse ) \
-    { MPIU_Object_release_ref( _keyval, _inuse );        \
-       MPIU_DBG_MSG_FMT(REFCOUNT,TYPICAL,(MPIU_DBG_FDEST,\
-         "Decr keyval %p ref count to %d",_keyval,_keyval->ref_count));}
+#define MPIR_Keyval_release_ref( _keyval, _inuse )                      \
+    do {                                                                \
+        MPIU_Object_release_ref( _keyval, _inuse );                     \
+        MPIU_Assert((_keyval)->ref_count >= 0);                         \
+        MPIU_DBG_MSG_FMT(REFCOUNT,TYPICAL,(MPIU_DBG_FDEST,              \
+         "Decr keyval %p ref count to %d",_keyval,_keyval->ref_count)); \
+    } while(0)
 
 /* Attributes need no ref count or handle, but since we want to use the
    common block allocator for them, we must provide those elements 



More information about the mpich2-commits mailing list