diff options
author | Edward Hervey <bilboed@bilboed.com> | 2009-12-02 11:50:02 +0100 |
---|---|---|
committer | Edward Hervey <bilboed@bilboed.com> | 2009-12-07 11:28:50 +0100 |
commit | f23403562777e82954d1cbb6b72eed3031407328 (patch) | |
tree | 4dad3ce408ea33e22a22ef129a2c3c8675d99960 | |
parent | 1c0779f61d3dcb79701dc97a33f2d31482662fef (diff) |
gobject: Use new G_VALUE_COLLECT_FULL variant
Makes g_object_new_valist 20% to 30% faster (against 2321e5a).
Profiled against the pan newsreader which uses a variant of simple
and complex object creation.
https://bugzilla.gnome.org/show_bug.cgi?id=603590
-rw-r--r-- | gobject/gobject.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/gobject/gobject.c b/gobject/gobject.c index 58554c337..fe77f7618 100644 --- a/gobject/gobject.c +++ b/gobject/gobject.c @@ -1357,9 +1357,8 @@ g_object_new_valist (GType object_type, params = g_renew (GParameter, params, n_alloced_params); } params[n_params].name = name; - params[n_params].value.g_type = 0; - g_value_init (¶ms[n_params].value, G_PARAM_SPEC_VALUE_TYPE (pspec)); - G_VALUE_COLLECT (¶ms[n_params].value, var_args, 0, &error); + G_VALUE_COLLECT_FULL (¶ms[n_params].value, G_PARAM_SPEC_VALUE_TYPE (pspec), + var_args, 0, &error); if (error) { g_warning ("%s: %s", G_STRFUNC, error); @@ -1472,9 +1471,8 @@ g_object_set_valist (GObject *object, break; } - g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec)); - - G_VALUE_COLLECT (&value, var_args, 0, &error); + G_VALUE_COLLECT_FULL (&value, G_PARAM_SPEC_VALUE_TYPE (pspec), var_args, + 0, &error); if (error) { g_warning ("%s: %s", G_STRFUNC, error); |