1
1

Help the compiler to understand what we're doing here. It generate less

memory accesses at least with gcc.

This commit was SVN r12483.
Этот коммит содержится в:
George Bosilca 2006-11-08 05:08:11 +00:00
родитель eb45a5e402
Коммит ad5d5b95c8

Просмотреть файл

@ -290,23 +290,25 @@ static inline opal_object_t *opal_obj_new_debug(opal_class_t* type, const char*
* @param object Pointer to the object * @param object Pointer to the object
*/ */
#if OMPI_ENABLE_DEBUG #if OMPI_ENABLE_DEBUG
#define OBJ_RELEASE(object) \ #define OBJ_RELEASE(OBJECT) \
do { \ do { \
assert(NULL != ((opal_object_t *) (object))->obj_class); \ opal_object_t* _object = (opal_object_t*)(OBJECT); \
if (0 == opal_obj_update((opal_object_t *) (object), -1)) { \ assert(NULL != _object->obj_class); \
opal_obj_run_destructors((opal_object_t *) (object)); \ if (0 == opal_obj_update(_object, -1)) { \
OBJ_REMEMBER_FILE_AND_LINENO( object, __FILE__, __LINE__ ); \ opal_obj_run_destructors(_object); \
free(object); \ OBJ_REMEMBER_FILE_AND_LINENO( _object, __FILE__, __LINE__ ); \
object = NULL; \ free(_object); \
(OBJECT) = NULL; \
} \ } \
} while (0) } while (0)
#else #else
#define OBJ_RELEASE(object) \ #define OBJ_RELEASE(OBJECT) \
do { \ do { \
if (0 == opal_obj_update((opal_object_t *) (object), -1)) { \ opal_object_t* _object = (opal_object_t*)(OBJECT); \
opal_obj_run_destructors((opal_object_t *) (object)); \ if (0 == opal_obj_update(_object, -1)) { \
free(object); \ opal_obj_run_destructors(_object); \
object = NULL; \ free(_object); \
(OBJECT) = NULL; \
} \ } \
} while (0) } while (0)
#endif #endif