mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-11 11:56:16 +01:00
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:
parent
827b4ec855
commit
8cba1f4c17
@ -262,10 +262,13 @@ void
|
|||||||
gboolean
|
gboolean
|
||||||
(g_atomic_ref_count_dec) (gatomicrefcount *arc)
|
(g_atomic_ref_count_dec) (gatomicrefcount *arc)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (arc != NULL, FALSE);
|
gint old_value;
|
||||||
g_return_val_if_fail (g_atomic_int_get (arc) > 0, FALSE);
|
|
||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user