[glib/gobject-speedups: 20/22] Avoid g_value_type_compatible




commit 107af1281273a74249aa4de5140048f22fb1d184
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 061766f8d1..0b8d983bf8 100644
--- a/gobject/gobject.c
+++ b/gobject/gobject.c
@@ -1623,7 +1623,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]