[glib/gobject-speedups: 11/13] Avoid g_value_type_compatible




commit e0da0aa1e9d463e0ad26336d64f30b04f47f5f8c
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu May 19 18:25:50 2022 -0400

    Avoid g_value_type_compatible
    
    99% of the time, we deal with a value that was
    just collected with the exact pspec type, so this
    checking for that first will avoid almost all
    g_value_type_compatible calls.

 gobject/gobject.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
---
diff --git a/gobject/gobject.c b/gobject/gobject.c
index a982e7fe49..ecd8e54495 100644
--- a/gobject/gobject.c
+++ b/gobject/gobject.c
@@ -1609,7 +1609,8 @@ object_set_property (GObject             *object,
   consider_issuing_property_deprecation_warning (pspec);
 
   pclass = G_PARAM_SPEC_GET_CLASS (pspec);
-  if (g_value_type_compatible (G_VALUE_TYPE (value), pspec->value_type) &&
+  if ((G_VALUE_TYPE (value) == pspec->value_type ||
+       g_value_type_compatible (G_VALUE_TYPE (value), pspec->value_type)) &&
       (pclass->value_validate == NULL ||
        (pclass->value_is_valid != NULL && pclass->value_is_valid (pspec, value))))
     {


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