grefcount: Optimise g_atomic_ref_count_dec

Currently, `g_atomic_ref_count_dec ()` does two operations.
We try to get this down to one operation.

Replace `g_atomic_int_dec_and_test ()` with `g_atomic_int_add ()`
Passing -1 as value.

Note: changes current behaviour, checks are now done after decrement.
This commit is contained in:
Nishal Kulkarni 2021-05-11 15:08:20 +05:30
parent 827b4ec855
commit 8cba1f4c17

View File

@ -262,10 +262,13 @@ void
gboolean
(g_atomic_ref_count_dec) (gatomicrefcount *arc)
{
g_return_val_if_fail (arc != NULL, FALSE);
g_return_val_if_fail (g_atomic_int_get (arc) > 0, FALSE);
gint old_value;
return g_atomic_int_dec_and_test (arc);
g_return_val_if_fail (arc != NULL, FALSE);
old_value = g_atomic_int_add (arc, -1);
g_return_val_if_fail (old_value > 0, FALSE);
return old_value == 1;
}
/**