[glib/gobject-speedups: 17/19] Avoid g_value_type_compatible




commit 60a08bc0ed3a0834cfdb7f86edd9a5a017a34b70
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]