Add branch prediction hints in ref count interface
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Sun, 11 Dec 2016 08:56:56 +0000 (03:56 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Sat, 27 May 2017 18:09:08 +0000 (14:09 -0400)
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
include/babeltrace/ref-internal.h
lib/ref.c

index cf1547da9615345df8977f5fd95c8d7fb4fe3a57..c5d8143a61caa1ac0202ffb379afe9337c5a4291 100644 (file)
@@ -51,7 +51,7 @@ void bt_ref_get(struct bt_ref *ref)
 {
        assert(ref);
 
-       if (!ref->release) {
+       if (unlikely(!ref->release)) {
                return;
        }
 
@@ -65,7 +65,7 @@ void bt_ref_put(struct bt_ref *ref)
 {
        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);
        }
 }
index ac0580137a5ad959d25fbfa29b3a3dc0a7ffae19..4e245adf583092ebcb95edb3b1dfc5dfd692b73f 100644 (file)
--- a/lib/ref.c
+++ b/lib/ref.c
@@ -31,11 +31,11 @@ void *bt_get(void *ptr)
 {
        struct bt_object *obj = ptr;
 
-       if (!obj) {
+       if (unlikely(!obj)) {
                goto end;
        }
 
-       if (obj->parent && bt_object_get_ref_count(obj) == 0) {
+       if (unlikely(obj->parent && bt_object_get_ref_count(obj) == 0)) {
                bt_get(obj->parent);
        }
        bt_ref_get(&obj->ref_count);
@@ -47,7 +47,7 @@ void bt_put(void *ptr)
 {
        struct bt_object *obj = ptr;
 
-       if (!obj) {
+       if (unlikely(!obj)) {
                return;
        }
 
This page took 0.028055 seconds and 4 git commands to generate.