Help the compiler to understand what we're doing here. It generate less
memory accesses at least with gcc. This commit was SVN r12483.
Этот коммит содержится в:
родитель
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
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user