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
|
||||
(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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user