[glib/gobject-performance-2] Check node refcount > 0 instead of node->data != NULL in lockless code



commit d516f0a665370f0eac2e57050aa4fec6748dcc9e
Author: Alexander Larsson <alexl redhat com>
Date:   Mon Nov 30 14:43:29 2009 +0100

    Check node refcount > 0 instead of node->data != NULL in lockless code
    
    These are equivalent generally, but only the refcount is read and
    written using atomic ops which makes it safe to read from lockless code.

 gobject/gtype.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
---
diff --git a/gobject/gtype.c b/gobject/gtype.c
index 54c2a07..8583d1f 100644
--- a/gobject/gtype.c
+++ b/gobject/gtype.c
@@ -2903,7 +2903,7 @@ g_type_class_unref (gpointer g_class)
   g_return_if_fail (g_class != NULL);
   
   node = lookup_type_node_I (class->g_type);
-  if (node && node->is_classed && node->data)
+  if (node && node->is_classed && NODE_REFCOUNT (node))
     type_data_unref_U (node, FALSE);
   else
     g_warning ("cannot unreference class of invalid (unclassed) type `%s'",
@@ -2928,7 +2928,7 @@ g_type_class_unref_uncached (gpointer g_class)
   g_return_if_fail (g_class != NULL);
   
   node = lookup_type_node_I (class->g_type);
-  if (node && node->is_classed && node->data)
+  if (node && node->is_classed && NODE_REFCOUNT (node))
     type_data_unref_U (node, TRUE);
   else
     g_warning ("cannot unreference class of invalid (unclassed) type `%s'",



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