diff options
author | Edward Hervey <bilboed@bilboed.com> | 2009-12-01 22:09:00 +0100 |
---|---|---|
committer | Edward Hervey <bilboed@bilboed.com> | 2009-12-29 13:13:23 +0100 |
commit | 11586629bf07a528c98f184c32b13adcd8f33b9b (patch) | |
tree | d6fa7fe00d8a0b8bf9648e80d366de70c4032131 | |
parent | cb681a0702924c90d01c303c286322f9f001b2af (diff) |
g_value_object_collect_value: Use faster argument checking.
The argument were already checked in the caller of this function (g_value_set_pointer).
This shaves 20% cpu time of the call of this method.
-rw-r--r-- | gobject/gobject.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gobject/gobject.c b/gobject/gobject.c index 9631e7581..66b532a80 100644 --- a/gobject/gobject.c +++ b/gobject/gobject.c @@ -2767,7 +2767,11 @@ g_value_object_collect_value (GValue *value, G_VALUE_TYPE_NAME (value), "'", NULL); - else if (!g_value_type_compatible (G_OBJECT_TYPE (object), G_VALUE_TYPE (value))) + /* This code previously used g_value_type_compatible which did too many checks, + * we replace it by the expanded unchecked version since the caller (g_value_set_instance) + * will have checked the validity of the arguments. */ + else if (!g_type_is_a (G_OBJECT_TYPE (object), G_VALUE_TYPE (value)) || + g_type_value_table_peek (G_OBJECT_TYPE (object)) != g_type_value_table_peek (G_VALUE_TYPE (value))) return g_strconcat ("invalid object type `", G_OBJECT_TYPE_NAME (object), "' for value type `", |