[glib/gobject-performance-2] Check node refcount > 0 instead of node->data != NULL in lockless code
- From: Alexander Larsson <alexl src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [glib/gobject-performance-2] Check node refcount > 0 instead of node->data != NULL in lockless code
- Date: Mon, 30 Nov 2009 13:45:13 +0000 (UTC)
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]