[glib/gobject-speedups: 14/16] Avoid g_value_type_compatible




commit 3a574a84f3c056573ad51599bf2a78f912cfd04d
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 e3096b6f83..bec7deee85 100644
--- a/gobject/gobject.c
+++ b/gobject/gobject.c
@@ -1624,7 +1624,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]