[glib/gobject-speedup10] gobject: Avoid redundant atomics




commit 16a8b6d819d13ab5afba26992c51c401de6f10e3
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun May 29 18:50:22 2022 -0400

    gobject: Avoid redundant atomics
    
    According to the commit that introduced these
    calls (4b334ef8f1393c997a2d83d), we are checking
    the refcount here to avoid calling g_object_ref
    when the refcount is 0, in the rare case that
    notification would be triggered during finalize.
    
    But we are now freezing notifications during
    finalize, and after recent changes, we no longer call
    g_object_ref for notification while a freeze is
    in place.

 gobject/gobject.c | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)
---
diff --git a/gobject/gobject.c b/gobject/gobject.c
index 6b7e6cede4..04049a69b3 100644
--- a/gobject/gobject.c
+++ b/gobject/gobject.c
@@ -319,8 +319,6 @@ g_object_notify_queue_thaw (GObject            *object,
   GSList *slist;
   guint n_pspecs = 0;
 
-  g_return_if_fail (g_atomic_int_get(&object->ref_count) > 0);
-
   G_LOCK(notify_lock);
 
   /* Just make sure we never get into some nasty race condition */
@@ -333,7 +331,7 @@ g_object_notify_queue_thaw (GObject            *object,
 
   nqueue->freeze_count--;
   if (nqueue->freeze_count) {
-    G_UNLOCK(notify_lock);
+    G_UNLOCK (notify_lock);
     return;
   }
 
@@ -1378,8 +1376,6 @@ g_object_notify (GObject     *object,
   
   g_return_if_fail (G_IS_OBJECT (object));
   g_return_if_fail (property_name != NULL);
-  if (g_atomic_int_get (&object->ref_count) == 0)
-    return;
   
   /* We don't need to get the redirect target
    * (by, e.g. calling g_object_class_find_property())
@@ -1452,9 +1448,6 @@ g_object_notify_by_pspec (GObject    *object,
   g_return_if_fail (G_IS_OBJECT (object));
   g_return_if_fail (G_IS_PARAM_SPEC (pspec));
 
-  if (g_atomic_int_get (&object->ref_count) == 0)
-    return;
-
   g_object_notify_by_spec_internal (object, pspec);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]