X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fref-internal.h;h=f0d973b692ec4843f90509dc29d48a40b6147ea6;hb=baa56d0a4425a4865c638faaed4728ece07d59c7;hp=cf1547da9615345df8977f5fd95c8d7fb4fe3a57;hpb=0c747e0de732637ad24f5d7c8c8671a55adcaf56;p=babeltrace.git diff --git a/include/babeltrace/ref-internal.h b/include/babeltrace/ref-internal.h index cf1547da..f0d973b6 100644 --- a/include/babeltrace/ref-internal.h +++ b/include/babeltrace/ref-internal.h @@ -28,7 +28,7 @@ */ #include -#include +#include struct bt_object; typedef void (*bt_object_release_func)(struct bt_object *); @@ -41,7 +41,7 @@ struct bt_ref { static inline void bt_ref_init(struct bt_ref *ref, bt_object_release_func release) { - assert(ref); + BT_ASSERT(ref); ref->count = 1; ref->release = release; } @@ -49,23 +49,23 @@ void bt_ref_init(struct bt_ref *ref, bt_object_release_func release) static inline void bt_ref_get(struct bt_ref *ref) { - assert(ref); + BT_ASSERT(ref); - if (!ref->release) { + if (unlikely(!ref->release)) { return; } ref->count++; /* Overflow check. */ - assert(ref->count); + BT_ASSERT(ref->count); } static inline void bt_ref_put(struct bt_ref *ref) { - assert(ref); + BT_ASSERT(ref); /* Only assert if the object has opted-in for reference counting. */ - if ((--ref->count) == 0 && ref->release) { + if (unlikely((--ref->count) == 0 && ref->release)) { ref->release((struct bt_object *) ref); } }