gobject: Use new G_VALUE_COLLECT_INIT variant
authorEdward Hervey <bilboed@bilboed.com>
Wed, 2 Dec 2009 10:50:02 +0000 (11:50 +0100)
committerAlexander Larsson <alexl@redhat.com>
Wed, 13 Jan 2010 09:16:49 +0000 (10:16 +0100)
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

gobject/gobject.c

index bd63152..bf45d62 100644 (file)
@@ -1361,9 +1361,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 (&params[n_params].value, G_PARAM_SPEC_VALUE_TYPE (pspec));
-      G_VALUE_COLLECT (&params[n_params].value, var_args, 0, &error);
+      G_VALUE_COLLECT_INIT (&params[n_params].value, G_PARAM_SPEC_VALUE_TYPE (pspec),
+                           var_args, 0, &error);
       if (error)
        {
          g_warning ("%s: %s", G_STRFUNC, error);
@@ -1476,9 +1475,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_INIT (&value, G_PARAM_SPEC_VALUE_TYPE (pspec), var_args,
+                           0, &error);
       if (error)
        {
          g_warning ("%s: %s", G_STRFUNC, error);