} while (0)
#ifdef HAVE_ATOMIC_BUILTINS
-#define REF_RETAIN(obj) do { \
+#define REF_RETAIN_ATOMIC(obj) do { \
if ((obj) != NULL) { \
__atomic_add_fetch (&(obj)->ref.refcount, 1, __ATOMIC_RELEASE); \
} \
} while (0)
-#define REF_RELEASE(obj) do { \
+#define REF_RELEASE_ATOMIC(obj) do { \
if ((obj) != NULL) { \
unsigned int _rc_priv = __atomic_sub_fetch (&(obj)->ref.refcount, 1, __ATOMIC_ACQ_REL); \
if (_rc_priv == 0 && (obj)->ref.dtor) { \
} \
} \
} while (0)
+
#else
+#define REF_RETAIN_ATOMIC REF_RETAIN
+#define REF_RELEASE_ATOMIC REF_RELEASE_ATOMIC
+#endif
+
#define REF_RETAIN(obj) do { \
if ((obj) != NULL) { \
(obj)->ref.refcount ++; \
} \
} \
} while (0)
-#endif
#endif /* REF_H_ */