fwupd-codec.c:fwupd_codec_default_init:
   27|      1|{
   28|      1|}

fwupd_device_set_parent_id:
  509|    832|{
  510|    832|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    832|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
  511|    832|	g_return_if_fail(FWUPD_IS_DEVICE(self));
  ------------------
  |  |  630|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    832|      { } \
  |  |  633|    832|    else \
  |  |  634|    832|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  512|       |
  513|       |	/* not changed */
  514|    832|	if (g_strcmp0(priv->parent_id, parent_id) == 0)
  ------------------
  |  Branch (514:6): [True: 832, False: 0]
  ------------------
  515|    832|		return;
  516|       |
  517|       |	/* sanity check */
  518|      0|	if (parent_id != NULL && !fwupd_device_id_is_valid(parent_id)) {
  ------------------
  |  Branch (518:6): [True: 0, False: 0]
  |  Branch (518:27): [True: 0, False: 0]
  ------------------
  519|      0|		g_critical("%s is not a valid device ID", parent_id);
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
  520|      0|		return;
  521|      0|	}
  522|       |
  523|      0|	g_free(priv->parent_id);
  524|      0|	priv->parent_id = g_strdup(parent_id);
  525|      0|}
fwupd_device_get_parent:
  592|    832|{
  593|    832|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    832|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
  594|    832|	g_return_val_if_fail(FWUPD_IS_DEVICE(self), NULL);
  ------------------
  |  |  643|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    832|      { } \
  |  |  646|    832|    else \
  |  |  647|    832|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  595|    832|	return priv->parent;
  596|    832|}
fwupd_device_set_parent:
  632|    832|{
  633|    832|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    832|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
  634|    832|	g_return_if_fail(FWUPD_IS_DEVICE(self));
  ------------------
  |  |  630|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    832|      { } \
  |  |  633|    832|    else \
  |  |  634|    832|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  635|    832|	g_return_if_fail(self != parent);
  ------------------
  |  |  630|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    832|      { } \
  |  |  633|    832|    else \
  |  |  634|    832|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  636|       |
  637|    832|	if (priv->parent != NULL)
  ------------------
  |  Branch (637:6): [True: 0, False: 832]
  ------------------
  638|      0|		g_object_remove_weak_pointer(G_OBJECT(priv->parent), (gpointer *)&priv->parent);
  ------------------
  |  |   56|      0|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  639|    832|	if (parent != NULL)
  ------------------
  |  Branch (639:6): [True: 0, False: 832]
  ------------------
  640|      0|		g_object_add_weak_pointer(G_OBJECT(parent), (gpointer *)&priv->parent);
  ------------------
  |  |   56|      0|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  641|    832|	priv->parent = parent;
  642|       |
  643|       |	/* this is what goes over D-Bus */
  644|    832|	fwupd_device_set_parent_id(self, parent != NULL ? fwupd_device_get_id(parent) : NULL);
  ------------------
  |  Branch (644:35): [True: 0, False: 832]
  ------------------
  645|    832|}
fwupd_device_set_name:
 1025|    832|{
 1026|    832|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    832|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
 1027|    832|	g_return_if_fail(FWUPD_IS_DEVICE(self));
  ------------------
  |  |  630|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    832|      { } \
  |  |  633|    832|    else \
  |  |  634|    832|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1028|       |
 1029|       |	/* not changed */
 1030|    832|	if (g_strcmp0(priv->name, name) == 0)
  ------------------
  |  Branch (1030:6): [True: 832, False: 0]
  ------------------
 1031|    832|		return;
 1032|       |
 1033|      0|	g_free(priv->name);
 1034|      0|	priv->name = g_strdup(name);
 1035|      0|}
fwupd_device_add_flag:
 1765|    832|{
 1766|    832|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    832|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
 1767|    832|	g_return_if_fail(FWUPD_IS_DEVICE(self));
  ------------------
  |  |  630|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    832|      { } \
  |  |  633|    832|    else \
  |  |  634|    832|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1768|    832|	if (flag == 0)
  ------------------
  |  Branch (1768:6): [True: 0, False: 832]
  ------------------
 1769|      0|		return;
 1770|    832|	if ((priv->flags | flag) == priv->flags)
  ------------------
  |  Branch (1770:6): [True: 0, False: 832]
  ------------------
 1771|      0|		return;
 1772|    832|	priv->flags |= flag;
 1773|    832|	g_object_notify(G_OBJECT(self), "flags");
  ------------------
  |  |   56|    832|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|    832|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|    832|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1774|    832|}
fwupd_device_has_flag:
 1811|    832|{
 1812|    832|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    832|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
 1813|    832|	g_return_val_if_fail(FWUPD_IS_DEVICE(self), FALSE);
  ------------------
  |  |  643|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    832|      { } \
  |  |  646|    832|    else \
  |  |  647|    832|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1814|    832|	return (priv->flags & flag) > 0;
 1815|    832|}
fwupd-device.c:fwupd_device_class_init:
 3901|      1|{
 3902|      1|	GObjectClass *object_class = G_OBJECT_CLASS(klass);
  ------------------
  |  |   63|      1|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3903|      1|	GParamSpec *pspec;
 3904|       |
 3905|      1|	object_class->finalize = fwupd_device_finalize;
 3906|      1|	object_class->get_property = fwupd_device_get_property;
 3907|      1|	object_class->set_property = fwupd_device_set_property;
 3908|       |
 3909|       |	/**
 3910|       |	 * FwupdDevice:version:
 3911|       |	 *
 3912|       |	 * The device version.
 3913|       |	 *
 3914|       |	 * Since: 1.8.15
 3915|       |	 */
 3916|      1|	pspec = g_param_spec_string("version",
 3917|      1|				    NULL,
 3918|      1|				    NULL,
 3919|      1|				    NULL,
 3920|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 3921|      1|	g_object_class_install_property(object_class, PROP_VERSION, pspec);
 3922|       |
 3923|       |	/**
 3924|       |	 * FwupdDevice:vendor:
 3925|       |	 *
 3926|       |	 * The device vendor.
 3927|       |	 *
 3928|       |	 * Since: 2.0.17
 3929|       |	 */
 3930|      1|	pspec = g_param_spec_string("vendor",
 3931|      1|				    NULL,
 3932|      1|				    NULL,
 3933|      1|				    NULL,
 3934|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 3935|      1|	g_object_class_install_property(object_class, PROP_VENDOR, pspec);
 3936|       |
 3937|       |	/**
 3938|       |	 * FwupdDevice:id:
 3939|       |	 *
 3940|       |	 * The device ID.
 3941|       |	 *
 3942|       |	 * Since: 2.0.0
 3943|       |	 */
 3944|      1|	pspec =
 3945|      1|	    g_param_spec_string("id", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 3946|      1|	g_object_class_install_property(object_class, PROP_ID, pspec);
 3947|       |
 3948|       |	/**
 3949|       |	 * FwupdDevice:version-format:
 3950|       |	 *
 3951|       |	 * The version format of the device.
 3952|       |	 *
 3953|       |	 * Since: 1.2.9
 3954|       |	 */
 3955|      1|	pspec = g_param_spec_uint("version-format",
 3956|      1|				  NULL,
 3957|      1|				  NULL,
 3958|      1|				  FWUPD_VERSION_FORMAT_UNKNOWN,
 3959|      1|				  FWUPD_VERSION_FORMAT_LAST,
  ------------------
  |  |  453|      1|#define FWUPD_VERSION_FORMAT_LAST 16
  ------------------
 3960|      1|				  FWUPD_VERSION_FORMAT_UNKNOWN,
 3961|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 3962|      1|	g_object_class_install_property(object_class, PROP_VERSION_FORMAT, pspec);
 3963|       |
 3964|       |	/**
 3965|       |	 * FwupdDevice:flags:
 3966|       |	 *
 3967|       |	 * The device flags.
 3968|       |	 *
 3969|       |	 * Since: 0.9.3
 3970|       |	 */
 3971|      1|	pspec = g_param_spec_uint64("flags",
 3972|      1|				    NULL,
 3973|      1|				    NULL,
 3974|      1|				    FWUPD_DEVICE_FLAG_NONE,
 3975|      1|				    FWUPD_DEVICE_FLAG_UNKNOWN,
 3976|      1|				    FWUPD_DEVICE_FLAG_NONE,
 3977|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 3978|      1|	g_object_class_install_property(object_class, PROP_FLAGS, pspec);
 3979|       |
 3980|       |	/**
 3981|       |	 * FwupdDevice:problems:
 3982|       |	 *
 3983|       |	 * The problems with the device that the user could fix, e.g. "lid open".
 3984|       |	 *
 3985|       |	 * Since: 1.8.1
 3986|       |	 */
 3987|      1|	pspec = g_param_spec_uint64("problems",
 3988|      1|				    NULL,
 3989|      1|				    NULL,
 3990|      1|				    FWUPD_DEVICE_PROBLEM_NONE,
 3991|      1|				    FWUPD_DEVICE_PROBLEM_UNKNOWN,
 3992|      1|				    FWUPD_DEVICE_PROBLEM_NONE,
 3993|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 3994|      1|	g_object_class_install_property(object_class, PROP_PROBLEMS, pspec);
 3995|       |
 3996|       |	/**
 3997|       |	 * FwupdDevice:request-flags:
 3998|       |	 *
 3999|       |	 * The device request flags.
 4000|       |	 *
 4001|       |	 * Since: 1.9.10
 4002|       |	 */
 4003|      1|	pspec = g_param_spec_uint64("request-flags",
 4004|      1|				    NULL,
 4005|      1|				    NULL,
 4006|      1|				    FWUPD_REQUEST_FLAG_NONE,
 4007|      1|				    FWUPD_REQUEST_FLAG_UNKNOWN,
 4008|      1|				    FWUPD_REQUEST_FLAG_NONE,
 4009|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 4010|      1|	g_object_class_install_property(object_class, PROP_REQUEST_FLAGS, pspec);
 4011|       |
 4012|       |	/**
 4013|       |	 * FwupdDevice:status:
 4014|       |	 *
 4015|       |	 * The current device status.
 4016|       |	 *
 4017|       |	 * Since: 1.4.0
 4018|       |	 */
 4019|      1|	pspec = g_param_spec_uint("status",
 4020|      1|				  NULL,
 4021|      1|				  NULL,
 4022|      1|				  FWUPD_STATUS_UNKNOWN,
 4023|      1|				  FWUPD_STATUS_LAST,
  ------------------
  |  |  106|      1|#define FWUPD_STATUS_LAST 15
  ------------------
 4024|      1|				  FWUPD_STATUS_UNKNOWN,
 4025|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 4026|      1|	g_object_class_install_property(object_class, PROP_STATUS, pspec);
 4027|       |
 4028|       |	/**
 4029|       |	 * FwupdDevice:percentage:
 4030|       |	 *
 4031|       |	 * The current device percentage.
 4032|       |	 *
 4033|       |	 * Since: 1.8.11
 4034|       |	 */
 4035|      1|	pspec = g_param_spec_uint("percentage",
 4036|      1|				  NULL,
 4037|      1|				  NULL,
 4038|      1|				  0,
 4039|      1|				  100,
 4040|      1|				  0,
 4041|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 4042|      1|	g_object_class_install_property(object_class, PROP_PERCENTAGE, pspec);
 4043|       |
 4044|       |	/**
 4045|       |	 * FwupdDevice:parent:
 4046|       |	 *
 4047|       |	 * The device parent.
 4048|       |	 *
 4049|       |	 * Since: 1.0.8
 4050|       |	 */
 4051|      1|	pspec = g_param_spec_object("parent",
 4052|      1|				    NULL,
 4053|      1|				    NULL,
 4054|      1|				    FWUPD_TYPE_DEVICE,
  ------------------
  |  |   17|      1|#define FWUPD_TYPE_DEVICE (fwupd_device_get_type())
  ------------------
 4055|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 4056|      1|	g_object_class_install_property(object_class, PROP_PARENT, pspec);
 4057|       |
 4058|       |	/**
 4059|       |	 * FwupdDevice:update-state:
 4060|       |	 *
 4061|       |	 * The device update state.
 4062|       |	 *
 4063|       |	 * Since: 0.9.8
 4064|       |	 */
 4065|      1|	pspec = g_param_spec_uint("update-state",
 4066|      1|				  NULL,
 4067|      1|				  NULL,
 4068|      1|				  FWUPD_UPDATE_STATE_UNKNOWN,
 4069|      1|				  FWUPD_UPDATE_STATE_LAST,
  ------------------
  |  |  346|      1|#define FWUPD_UPDATE_STATE_LAST 6
  ------------------
 4070|      1|				  FWUPD_UPDATE_STATE_UNKNOWN,
 4071|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 4072|      1|	g_object_class_install_property(object_class, PROP_UPDATE_STATE, pspec);
 4073|       |
 4074|       |	/**
 4075|       |	 * FwupdDevice:update-error:
 4076|       |	 *
 4077|       |	 * The device update error.
 4078|       |	 *
 4079|       |	 * Since: 0.9.8
 4080|       |	 */
 4081|      1|	pspec = g_param_spec_string("update-error",
 4082|      1|				    NULL,
 4083|      1|				    NULL,
 4084|      1|				    NULL,
 4085|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 4086|      1|	g_object_class_install_property(object_class, PROP_UPDATE_ERROR, pspec);
 4087|       |
 4088|       |	/**
 4089|       |	 * FwupdDevice:battery-level:
 4090|       |	 *
 4091|       |	 * The device battery level in percent.
 4092|       |	 *
 4093|       |	 * Since: 1.5.8
 4094|       |	 */
 4095|      1|	pspec = g_param_spec_uint("battery-level",
 4096|      1|				  NULL,
 4097|      1|				  NULL,
 4098|      1|				  0,
 4099|      1|				  FWUPD_BATTERY_LEVEL_INVALID,
  ------------------
  |  |   19|      1|#define FWUPD_BATTERY_LEVEL_INVALID 101
  ------------------
 4100|      1|				  FWUPD_BATTERY_LEVEL_INVALID,
  ------------------
  |  |   19|      1|#define FWUPD_BATTERY_LEVEL_INVALID 101
  ------------------
 4101|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 4102|      1|	g_object_class_install_property(object_class, PROP_BATTERY_LEVEL, pspec);
 4103|       |
 4104|       |	/**
 4105|       |	 * FwupdDevice:battery-threshold:
 4106|       |	 *
 4107|       |	 * The device battery threshold in percent.
 4108|       |	 *
 4109|       |	 * Since: 1.5.8
 4110|       |	 */
 4111|      1|	pspec = g_param_spec_uint("battery-threshold",
 4112|      1|				  NULL,
 4113|      1|				  NULL,
 4114|      1|				  0,
 4115|      1|				  FWUPD_BATTERY_LEVEL_INVALID,
  ------------------
  |  |   19|      1|#define FWUPD_BATTERY_LEVEL_INVALID 101
  ------------------
 4116|      1|				  FWUPD_BATTERY_LEVEL_INVALID,
  ------------------
  |  |   19|      1|#define FWUPD_BATTERY_LEVEL_INVALID 101
  ------------------
 4117|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 4118|      1|	g_object_class_install_property(object_class, PROP_BATTERY_THRESHOLD, pspec);
 4119|      1|}
fwupd-device.c:fwupd_device_finalize:
 4131|    832|{
 4132|    832|	FwupdDevice *self = FWUPD_DEVICE(object);
 4133|    832|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    832|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
 4134|       |
 4135|    832|	if (priv->parent != NULL)
  ------------------
  |  Branch (4135:6): [True: 0, False: 832]
  ------------------
 4136|      0|		g_object_remove_weak_pointer(G_OBJECT(priv->parent), (gpointer *)&priv->parent);
  ------------------
  |  |   56|      0|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4137|    832|	if (priv->children != NULL) {
  ------------------
  |  Branch (4137:6): [True: 0, False: 832]
  ------------------
 4138|      0|		for (guint i = 0; i < priv->children->len; i++) {
  ------------------
  |  Branch (4138:21): [True: 0, False: 0]
  ------------------
 4139|      0|			FwupdDevice *child = g_ptr_array_index(priv->children, i);
  ------------------
  |  |  138|      0|#define    g_ptr_array_index(array,index_) ((array)->pdata)[index_]
  ------------------
 4140|      0|			g_object_weak_unref(G_OBJECT(child), fwupd_device_child_finalized_cb, self);
  ------------------
  |  |   56|      0|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4141|      0|		}
 4142|      0|	}
 4143|       |
 4144|    832|	g_free(priv->id);
 4145|    832|	g_free(priv->parent_id);
 4146|    832|	g_free(priv->composite_id);
 4147|    832|	g_free(priv->name);
 4148|    832|	g_free(priv->serial);
 4149|    832|	g_free(priv->summary);
 4150|    832|	g_free(priv->details_url);
 4151|    832|	g_free(priv->branch);
 4152|    832|	g_free(priv->vendor);
 4153|    832|	g_free(priv->plugin);
 4154|    832|	g_free(priv->update_error);
 4155|    832|	g_free(priv->version);
 4156|    832|	g_free(priv->version_lowest);
 4157|    832|	g_free(priv->version_highest);
 4158|    832|	g_free(priv->version_bootloader);
 4159|    832|	if (priv->guids != NULL)
  ------------------
  |  Branch (4159:6): [True: 0, False: 832]
  ------------------
 4160|      0|		g_ptr_array_unref(priv->guids);
 4161|    832|	if (priv->vendor_ids != NULL)
  ------------------
  |  Branch (4161:6): [True: 0, False: 832]
  ------------------
 4162|      0|		g_ptr_array_unref(priv->vendor_ids);
 4163|    832|	if (priv->protocols != NULL)
  ------------------
  |  Branch (4163:6): [True: 0, False: 832]
  ------------------
 4164|      0|		g_ptr_array_unref(priv->protocols);
 4165|    832|	if (priv->instance_ids != NULL)
  ------------------
  |  Branch (4165:6): [True: 0, False: 832]
  ------------------
 4166|      0|		g_ptr_array_unref(priv->instance_ids);
 4167|    832|	if (priv->icons != NULL)
  ------------------
  |  Branch (4167:6): [True: 0, False: 832]
  ------------------
 4168|      0|		g_ptr_array_unref(priv->icons);
 4169|    832|	if (priv->checksums != NULL)
  ------------------
  |  Branch (4169:6): [True: 0, False: 832]
  ------------------
 4170|      0|		g_ptr_array_unref(priv->checksums);
 4171|    832|	if (priv->children != NULL)
  ------------------
  |  Branch (4171:6): [True: 0, False: 832]
  ------------------
 4172|      0|		g_ptr_array_unref(priv->children);
 4173|    832|	if (priv->releases != NULL)
  ------------------
  |  Branch (4173:6): [True: 0, False: 832]
  ------------------
 4174|      0|		g_ptr_array_unref(priv->releases);
 4175|    832|	if (priv->issues != NULL)
  ------------------
  |  Branch (4175:6): [True: 0, False: 832]
  ------------------
 4176|      0|		g_ptr_array_unref(priv->issues);
 4177|       |
 4178|    832|	G_OBJECT_CLASS(fwupd_device_parent_class)->finalize(object);
  ------------------
  |  |   63|    832|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|    832|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|    832|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4179|    832|}
fwupd-device.c:fwupd_device_init:
 4123|    832|{
 4124|    832|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    832|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
 4125|    832|	priv->battery_level = FWUPD_BATTERY_LEVEL_INVALID;
  ------------------
  |  |   19|    832|#define FWUPD_BATTERY_LEVEL_INVALID 101
  ------------------
 4126|    832|	priv->battery_threshold = FWUPD_BATTERY_LEVEL_INVALID;
  ------------------
  |  |   19|    832|#define FWUPD_BATTERY_LEVEL_INVALID 101
  ------------------
 4127|    832|}
fwupd-device.c:fwupd_device_codec_iface_init:
 4195|      1|{
 4196|      1|	iface->add_string = fwupd_device_add_string;
 4197|      1|	iface->add_json = fwupd_device_add_json;
 4198|      1|	iface->from_json = fwupd_device_from_json;
 4199|      1|	iface->add_variant = fwupd_device_add_variant;
 4200|      1|	iface->from_variant_iter = fwupd_device_from_variant_iter;
 4201|      1|}

fwupd_error_to_string:
   26|     22|{
   27|     22|	if (error == FWUPD_ERROR_INTERNAL)
  ------------------
  |  Branch (27:6): [True: 1, False: 21]
  ------------------
   28|      1|		return FWUPD_DBUS_INTERFACE ".Internal";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   29|     21|	if (error == FWUPD_ERROR_VERSION_NEWER)
  ------------------
  |  Branch (29:6): [True: 1, False: 20]
  ------------------
   30|      1|		return FWUPD_DBUS_INTERFACE ".VersionNewer";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   31|     20|	if (error == FWUPD_ERROR_VERSION_SAME)
  ------------------
  |  Branch (31:6): [True: 1, False: 19]
  ------------------
   32|      1|		return FWUPD_DBUS_INTERFACE ".VersionSame";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   33|     19|	if (error == FWUPD_ERROR_ALREADY_PENDING)
  ------------------
  |  Branch (33:6): [True: 1, False: 18]
  ------------------
   34|      1|		return FWUPD_DBUS_INTERFACE ".AlreadyPending";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   35|     18|	if (error == FWUPD_ERROR_AUTH_FAILED)
  ------------------
  |  Branch (35:6): [True: 1, False: 17]
  ------------------
   36|      1|		return FWUPD_DBUS_INTERFACE ".AuthFailed";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   37|     17|	if (error == FWUPD_ERROR_READ)
  ------------------
  |  Branch (37:6): [True: 1, False: 16]
  ------------------
   38|      1|		return FWUPD_DBUS_INTERFACE ".Read";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   39|     16|	if (error == FWUPD_ERROR_WRITE)
  ------------------
  |  Branch (39:6): [True: 1, False: 15]
  ------------------
   40|      1|		return FWUPD_DBUS_INTERFACE ".Write";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   41|     15|	if (error == FWUPD_ERROR_INVALID_FILE)
  ------------------
  |  Branch (41:6): [True: 1, False: 14]
  ------------------
   42|      1|		return FWUPD_DBUS_INTERFACE ".InvalidFile";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   43|     14|	if (error == FWUPD_ERROR_NOT_FOUND)
  ------------------
  |  Branch (43:6): [True: 1, False: 13]
  ------------------
   44|      1|		return FWUPD_DBUS_INTERFACE ".NotFound";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   45|     13|	if (error == FWUPD_ERROR_NOTHING_TO_DO)
  ------------------
  |  Branch (45:6): [True: 1, False: 12]
  ------------------
   46|      1|		return FWUPD_DBUS_INTERFACE ".NothingToDo";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   47|     12|	if (error == FWUPD_ERROR_NOT_SUPPORTED)
  ------------------
  |  Branch (47:6): [True: 1, False: 11]
  ------------------
   48|      1|		return FWUPD_DBUS_INTERFACE ".NotSupported";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   49|     11|	if (error == FWUPD_ERROR_SIGNATURE_INVALID)
  ------------------
  |  Branch (49:6): [True: 1, False: 10]
  ------------------
   50|      1|		return FWUPD_DBUS_INTERFACE ".SignatureInvalid";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   51|     10|	if (error == FWUPD_ERROR_AC_POWER_REQUIRED)
  ------------------
  |  Branch (51:6): [True: 1, False: 9]
  ------------------
   52|      1|		return FWUPD_DBUS_INTERFACE ".AcPowerRequired";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   53|      9|	if (error == FWUPD_ERROR_PERMISSION_DENIED)
  ------------------
  |  Branch (53:6): [True: 1, False: 8]
  ------------------
   54|      1|		return FWUPD_DBUS_INTERFACE ".PermissionDenied";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   55|      8|	if (error == FWUPD_ERROR_BROKEN_SYSTEM)
  ------------------
  |  Branch (55:6): [True: 1, False: 7]
  ------------------
   56|      1|		return FWUPD_DBUS_INTERFACE ".BrokenSystem";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   57|      7|	if (error == FWUPD_ERROR_BATTERY_LEVEL_TOO_LOW)
  ------------------
  |  Branch (57:6): [True: 1, False: 6]
  ------------------
   58|      1|		return FWUPD_DBUS_INTERFACE ".BatteryLevelTooLow";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   59|      6|	if (error == FWUPD_ERROR_NEEDS_USER_ACTION)
  ------------------
  |  Branch (59:6): [True: 1, False: 5]
  ------------------
   60|      1|		return FWUPD_DBUS_INTERFACE ".NeedsUserAction";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   61|      5|	if (error == FWUPD_ERROR_AUTH_EXPIRED)
  ------------------
  |  Branch (61:6): [True: 1, False: 4]
  ------------------
   62|      1|		return FWUPD_DBUS_INTERFACE ".AuthExpired";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   63|      4|	if (error == FWUPD_ERROR_INVALID_DATA)
  ------------------
  |  Branch (63:6): [True: 1, False: 3]
  ------------------
   64|      1|		return FWUPD_DBUS_INTERFACE ".InvalidData";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   65|      3|	if (error == FWUPD_ERROR_TIMED_OUT)
  ------------------
  |  Branch (65:6): [True: 1, False: 2]
  ------------------
   66|      1|		return FWUPD_DBUS_INTERFACE ".TimedOut";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   67|      2|	if (error == FWUPD_ERROR_BUSY)
  ------------------
  |  Branch (67:6): [True: 1, False: 1]
  ------------------
   68|      1|		return FWUPD_DBUS_INTERFACE ".Busy";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   69|      1|	if (error == FWUPD_ERROR_NOT_REACHABLE)
  ------------------
  |  Branch (69:6): [True: 1, False: 0]
  ------------------
   70|      1|		return FWUPD_DBUS_INTERFACE ".NotReachable";
  ------------------
  |  |   30|      1|#define FWUPD_DBUS_INTERFACE "org.freedesktop.fwupd"
  ------------------
   71|      0|	return NULL;
   72|      1|}
fwupd_error_quark:
  145|  1.61k|{
  146|  1.61k|	static GQuark quark = 0;
  147|  1.61k|	if (!quark) {
  ------------------
  |  Branch (147:6): [True: 1, False: 1.61k]
  ------------------
  148|      1|		quark = g_quark_from_static_string("FwupdError");
  149|     23|		for (gint i = 0; i < FWUPD_ERROR_LAST; i++) {
  ------------------
  |  |  148|     23|#define FWUPD_ERROR_LAST 22
  ------------------
  |  Branch (149:20): [True: 22, False: 1]
  ------------------
  150|     22|			g_dbus_error_register_error(quark, i, fwupd_error_to_string(i));
  151|     22|		}
  152|      1|	}
  153|  1.61k|	return quark;
  154|  1.61k|}

fu_bytes_get_data_safe:
  339|   473k|{
  340|   473k|	const guint8 *buf = g_bytes_get_data(bytes, bufsz);
  341|   473k|	if (buf == NULL) {
  ------------------
  |  Branch (341:6): [True: 0, False: 473k]
  ------------------
  342|      0|		g_set_error_literal(error, FWUPD_ERROR, FWUPD_ERROR_INVALID_DATA, "invalid data");
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  343|      0|		return NULL;
  344|      0|	}
  345|   473k|	return buf;
  346|   473k|}

fu_size_checked_add:
   33|   901k|{
   34|   901k|	gsize tmp = 0;
   35|   901k|	if (!g_size_checked_add(&tmp, a, b))
  ------------------
  |  |  444|   901k|    _GLIB_CHECKED_ADD_U64(dest, a, b)
  ------------------
  |  Branch (35:6): [True: 0, False: 901k]
  ------------------
   36|      0|		return G_MAXSIZE;
  ------------------
  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
   37|   901k|	return tmp;
   38|   901k|}
fu_size_checked_inc:
   56|   617k|{
   57|   617k|	gsize value_new;
   58|       |
   59|   617k|	g_return_val_if_fail(value != NULL, FALSE);
  ------------------
  |  |  643|   617k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   617k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   617k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   617k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   617k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   617k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   617k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   617k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 617k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   617k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   617k|   else                                         \
  |  |  |  |  |  | 1021|   617k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   617k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   617k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 617k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   617k|      { } \
  |  |  646|   617k|    else \
  |  |  647|   617k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuCommon"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   617k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   617k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 617k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   60|   617k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   617k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   617k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   617k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   617k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   617k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   617k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   617k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.23M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 617k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   617k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   617k|   else                                         \
  |  |  |  |  |  | 1021|   617k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   617k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   617k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 617k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   617k|      { } \
  |  |  646|   617k|    else \
  |  |  647|   617k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuCommon"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   617k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   617k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 617k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   61|       |
   62|   617k|	value_new = *value;
   63|   617k|	if (!g_size_checked_add(&value_new, *value, len)) {
  ------------------
  |  |  444|   617k|    _GLIB_CHECKED_ADD_U64(dest, a, b)
  ------------------
  |  Branch (63:6): [True: 0, False: 617k]
  ------------------
   64|      0|		g_set_error(error,
   65|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
   66|      0|			    FWUPD_ERROR_INVALID_DATA,
   67|      0|			    "0x%" G_GSIZE_MODIFIER "x + 0x%" G_GSIZE_MODIFIER "x would overflow",
   68|      0|			    *value,
   69|      0|			    len);
   70|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
   71|      0|	}
   72|       |
   73|       |	/* success */
   74|   617k|	*value = value_new;
   75|   617k|	return TRUE;
  ------------------
  |  |  818|   617k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   617k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
   76|   617k|}

fu_device_has_private_flag_quark:
  339|    832|{
  340|    832|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|    832|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
  341|    832|	for (guint i = 0; i < priv->private_flags->len; i++) {
  ------------------
  |  Branch (341:20): [True: 0, False: 832]
  ------------------
  342|      0|		GQuark flag_tmp = g_array_index(priv->private_flags, GQuark, i);
  ------------------
  |  |   67|      0|#define g_array_index(a,t,i)      (((t*) (void *) (a)->data) [(i)])
  ------------------
  343|      0|		if (flag_quark == flag_tmp)
  ------------------
  |  Branch (343:7): [True: 0, False: 0]
  ------------------
  344|      0|			return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  345|      0|	}
  346|    832|	return FALSE;
  ------------------
  |  |  814|    832|#define	FALSE	(0)
  ------------------
  347|    832|}
fu_device_has_private_flag:
  504|    832|{
  505|    832|	GQuark flag_quark;
  506|       |
  507|    832|	g_return_val_if_fail(FU_IS_DEVICE(self), FALSE);
  ------------------
  |  |  643|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    832|      { } \
  |  |  646|    832|    else \
  |  |  647|    832|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  508|    832|	g_return_val_if_fail(flag != NULL, FALSE);
  ------------------
  |  |  643|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    832|      { } \
  |  |  646|    832|    else \
  |  |  647|    832|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  509|       |
  510|       |	/* ensure */
  511|    832|	fu_device_register_private_flags(self);
  512|       |
  513|    832|	flag_quark = fu_device_find_private_flag_quark(self, flag);
  514|    832|	if (G_UNLIKELY(flag_quark == 0)) {
  ------------------
  |  | 1025|    832|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 832]
  |  |  |  |  ------------------
  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|    832|   else                                         \
  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  | 1023|    832|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 832]
  |  |  ------------------
  ------------------
  515|      0|#ifndef SUPPORTED_BUILD
  516|      0|		g_critical("%s flag %s is unknown -- use fu_device_register_private_flag()",
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
  517|      0|			   G_OBJECT_TYPE_NAME(self),
  518|      0|			   flag);
  519|      0|#endif
  520|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  521|      0|	}
  522|    832|	return fu_device_has_private_flag_quark(self, flag_quark);
  523|    832|}
fu_device_retry_add_recovery:
  637|    832|{
  638|    832|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|    832|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
  639|    832|	FuDeviceRetryRecovery *rec;
  640|       |
  641|    832|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    832|      { } \
  |  |  633|    832|    else \
  |  |  634|    832|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  642|    832|	g_return_if_fail(domain != 0);
  ------------------
  |  |  630|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    832|      { } \
  |  |  633|    832|    else \
  |  |  634|    832|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  643|       |
  644|       |	/* ensure */
  645|    832|	if (priv->retry_recs == NULL)
  ------------------
  |  Branch (645:6): [True: 832, False: 0]
  ------------------
  646|    832|		priv->retry_recs = g_ptr_array_new_with_free_func(g_free);
  647|       |
  648|       |	rec = g_new(FuDeviceRetryRecovery, 1);
  ------------------
  |  |  290|    832|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|    832|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|    832|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|    832|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|    832|	  gpointer __p;						\
  |  |  |  |  239|    832|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 832]
  |  |  |  |  ------------------
  |  |  |  |  240|    832|	    __p = g_##func (__n);				\
  |  |  |  |  241|    832|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|    832|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|    832|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|    832|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 832]
  |  |  |  |  |  Branch (242:26): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|    832|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|    832|	  else							\
  |  |  |  |  245|    832|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|    832|	  __p;							\
  |  |  |  |  247|    832|	}))
  |  |  ------------------
  ------------------
  649|    832|	rec->domain = domain;
  650|    832|	rec->code = code;
  651|    832|	rec->recovery_func = func;
  652|    832|	g_ptr_array_add(priv->retry_recs, rec);
  653|    832|}
fu_device_get_parent_internal:
 1516|    832|{
 1517|    832|	g_return_val_if_fail(FU_IS_DEVICE(self), NULL);
  ------------------
  |  |  643|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    832|      { } \
  |  |  646|    832|    else \
  |  |  647|    832|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1518|    832|	return FU_DEVICE(fwupd_device_get_parent(FWUPD_DEVICE(self)));
 1519|    832|}
fu_device_set_parent:
 1611|    832|{
 1612|    832|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    832|      { } \
  |  |  633|    832|    else \
  |  |  634|    832|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1613|       |
 1614|       |	/* debug */
 1615|    832|	if (parent != NULL) {
  ------------------
  |  Branch (1615:6): [True: 0, False: 832]
  ------------------
 1616|      0|		g_autofree gchar *id_display = fu_device_get_id_display(self);
  ------------------
  |  | 1167|      0|#define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree)
  |  |  ------------------
  |  |  |  | 1129|      0|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1617|      0|		g_autofree gchar *id_display_parent = fu_device_get_id_display(parent);
  ------------------
  |  | 1167|      0|#define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree)
  |  |  ------------------
  |  |  |  | 1129|      0|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1618|      0|		g_debug("setting parent of %s to be %s", id_display, id_display_parent);
  ------------------
  |  |  351|      0|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  352|      0|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|      0|                               __VA_ARGS__)
  ------------------
 1619|      0|	}
 1620|       |
 1621|       |	/* set the composite ID on the children and grandchildren */
 1622|    832|	if (parent != NULL)
  ------------------
  |  Branch (1622:6): [True: 0, False: 832]
  ------------------
 1623|      0|		fu_device_set_composite_id(self, fu_device_get_composite_id(parent));
  ------------------
  |  |  182|      0|#define fu_device_get_composite_id(d)	     fwupd_device_get_composite_id(FWUPD_DEVICE(d))
  ------------------
 1624|       |
 1625|       |	/* if the parent has a context, make the child inherit it */
 1626|    832|	if (parent != NULL) {
  ------------------
  |  Branch (1626:6): [True: 0, False: 832]
  ------------------
 1627|      0|		if (fu_device_get_context(self) == NULL && fu_device_get_context(parent) != NULL)
  ------------------
  |  Branch (1627:7): [True: 0, False: 0]
  |  Branch (1627:46): [True: 0, False: 0]
  ------------------
 1628|      0|			fu_device_set_context(self, fu_device_get_context(parent));
 1629|      0|	}
 1630|       |
 1631|    832|	fwupd_device_set_parent(FWUPD_DEVICE(self), FWUPD_DEVICE(parent));
 1632|    832|	g_object_notify(G_OBJECT(self), "parent");
  ------------------
  |  |   56|    832|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|    832|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|    832|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1633|       |
 1634|       |	/* fix the exported name */
 1635|    832|	fu_device_ensure_exported_name(self);
 1636|    832|}
fu_device_set_proxy:
 1684|    832|{
 1685|    832|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|    832|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 1686|       |
 1687|    832|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    832|      { } \
  |  |  633|    832|    else \
  |  |  634|    832|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1688|    832|	g_return_if_fail(proxy == NULL || FU_IS_DEVICE(proxy));
  ------------------
  |  |  630|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.66k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    832|      { } \
  |  |  633|    832|    else \
  |  |  634|    832|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1689|    832|	g_return_if_fail(self != proxy);
  ------------------
  |  |  630|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    832|      { } \
  |  |  633|    832|    else \
  |  |  634|    832|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1690|       |
 1691|       |	/* unchanged */
 1692|    832|	if (proxy == priv->proxy)
  ------------------
  |  Branch (1692:6): [True: 832, False: 0]
  ------------------
 1693|    832|		return;
 1694|       |
 1695|       |	/* check is the correct type */
 1696|      0|	if (proxy != NULL && priv->proxy_gtype != G_TYPE_INVALID &&
  ------------------
  |  |   55|      0|#define G_TYPE_INVALID			G_TYPE_MAKE_FUNDAMENTAL (0)
  |  |  ------------------
  |  |  |  |  221|      0|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1696:6): [True: 0, False: 0]
  |  Branch (1696:23): [True: 0, False: 0]
  ------------------
 1697|      0|	    !g_type_is_a(G_OBJECT_TYPE(proxy), priv->proxy_gtype)) {
  ------------------
  |  |  100|      0|#define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
  |  |  ------------------
  |  |  |  |  602|      0|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1697:6): [True: 0, False: 0]
  ------------------
 1698|      0|		g_critical("wrong proxy GType, got %s and expected %s",
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1699|      0|			   G_OBJECT_TYPE_NAME(proxy),
 1700|      0|			   g_type_name(priv->proxy_gtype));
 1701|      0|	}
 1702|       |
 1703|       |	/* disconnect from old proxy */
 1704|      0|	if (priv->proxy != NULL && priv->notify_flags_proxy_id != 0)
  ------------------
  |  Branch (1704:6): [True: 0, False: 0]
  |  Branch (1704:29): [True: 0, False: 0]
  ------------------
 1705|      0|		g_clear_signal_handler(&priv->notify_flags_proxy_id, priv->proxy);
  ------------------
  |  |  453|      0|  G_STMT_START {                                                    \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  454|      0|    gpointer const _instance      = (instance);                     \
  |  |  455|      0|    gulong *const _handler_id_ptr = (handler_id_ptr);               \
  |  |  456|      0|    const gulong _handler_id      = *_handler_id_ptr;               \
  |  |  457|      0|                                                                    \
  |  |  458|      0|    if (_handler_id > 0)                                            \
  |  |  ------------------
  |  |  |  Branch (458:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  459|      0|      {                                                             \
  |  |  460|      0|        *_handler_id_ptr = 0;                                       \
  |  |  461|      0|        g_signal_handler_disconnect (_instance, _handler_id);       \
  |  |  462|      0|      }                                                             \
  |  |  463|      0|  } G_STMT_END                                                      \
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  464|      0|  GLIB_AVAILABLE_MACRO_IN_2_62
  ------------------
 1706|       |
 1707|       |	/* copy from proxy */
 1708|      0|	if (proxy != NULL) {
  ------------------
  |  Branch (1708:6): [True: 0, False: 0]
  ------------------
 1709|      0|		fu_device_incorporate(self, proxy, FU_DEVICE_INCORPORATE_FLAG_PHYSICAL_ID);
 1710|      0|		priv->notify_flags_proxy_id =
 1711|      0|		    g_signal_connect(FWUPD_DEVICE(proxy),
  ------------------
  |  |  501|      0|    g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
  ------------------
 1712|      0|				     "notify::flags",
 1713|      0|				     G_CALLBACK(fu_device_proxy_flags_notify_cb),
 1714|      0|				     self);
 1715|      0|		fu_device_incorporate_from_proxy_flags(self, proxy);
 1716|      0|	}
 1717|       |
 1718|       |	/* sometimes strong, sometimes weak */
 1719|      0|	if (fu_device_has_private_flag_quark(self, quarks[QUARK_REFCOUNTED_PROXY])) {
  ------------------
  |  Branch (1719:6): [True: 0, False: 0]
  ------------------
 1720|      0|		g_set_object(&priv->proxy, proxy);
  ------------------
  |  |  750|      0|  (G_GNUC_EXTENSION ({ \
  |  |  ------------------
  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  751|      0|    G_STATIC_ASSERT (sizeof *(object_ptr) == sizeof (new_object)); \
  |  |  ------------------
  |  |  |  |  758|      0|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  ------------------
  |  |  752|      0|    /* Only one access, please; work around type aliasing */ \
  |  |  753|      0|    union { char *in; GObject **out; } _object_ptr; \
  |  |  754|      0|    _object_ptr.in = (char *) (object_ptr); \
  |  |  755|      0|    /* Check types match */ \
  |  |  756|      0|    (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |                   (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (756:13): [Folded, False: 0]
  |  |  ------------------
  |  |  757|      0|    (g_set_object) (_object_ptr.out, (GObject *) new_object); \
  |  |  758|      0|  })) \
  |  |  759|      0|  GLIB_AVAILABLE_MACRO_IN_2_44
  ------------------
 1721|      0|		fu_device_set_target(self, proxy);
 1722|      0|	} else {
 1723|      0|		if (priv->proxy != NULL)
  ------------------
  |  Branch (1723:7): [True: 0, False: 0]
  ------------------
 1724|      0|			g_object_remove_weak_pointer(G_OBJECT(priv->proxy),
  ------------------
  |  |   56|      0|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1725|      0|						     (gpointer *)&priv->proxy);
 1726|      0|		if (proxy != NULL)
  ------------------
  |  Branch (1726:7): [True: 0, False: 0]
  ------------------
 1727|      0|			g_object_add_weak_pointer(G_OBJECT(proxy), (gpointer *)&priv->proxy);
  ------------------
  |  |   56|      0|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1728|      0|		priv->proxy = proxy;
 1729|      0|	}
 1730|      0|	g_object_notify(G_OBJECT(self), "proxy");
  ------------------
  |  |   56|      0|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1731|      0|}
fu_device_set_backend:
 4304|    832|{
 4305|    832|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|    832|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 4306|       |
 4307|    832|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    832|      { } \
  |  |  633|    832|    else \
  |  |  634|    832|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4308|    832|	g_return_if_fail(backend == NULL || FU_IS_BACKEND(backend));
  ------------------
  |  |  630|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.66k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    832|      { } \
  |  |  633|    832|    else \
  |  |  634|    832|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4309|       |
 4310|       |	/* same */
 4311|    832|	if (priv->backend == backend)
  ------------------
  |  Branch (4311:6): [True: 832, False: 0]
  ------------------
 4312|    832|		return;
 4313|       |
 4314|       |	/* not already set */
 4315|      0|	if (priv->ctx == NULL)
  ------------------
  |  Branch (4315:6): [True: 0, False: 0]
  ------------------
 4316|      0|		fu_device_set_context(self, fu_backend_get_context(backend));
 4317|       |
 4318|       |	/* there is no ref on backend to prevent a loop */
 4319|      0|	if (priv->backend != NULL)
  ------------------
  |  Branch (4319:6): [True: 0, False: 0]
  ------------------
 4320|      0|		g_object_remove_weak_pointer(G_OBJECT(priv->backend), (gpointer *)&priv->backend);
  ------------------
  |  |   56|      0|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4321|      0|	if (backend != NULL)
  ------------------
  |  Branch (4321:6): [True: 0, False: 0]
  ------------------
 4322|      0|		g_object_add_weak_pointer(G_OBJECT(backend), (gpointer *)&priv->backend);
  ------------------
  |  |   56|      0|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4323|      0|	priv->backend = backend; /* no ref */
 4324|       |
 4325|       |	/* in case anything cares */
 4326|      0|	g_object_notify(G_OBJECT(self), "backend");
  ------------------
  |  |   56|      0|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4327|      0|}
fu_device_add_flag:
 4816|    832|{
 4817|    832|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|    832|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 4818|       |
 4819|       |	/* none is not used as an "exported" flag */
 4820|    832|	if (flag == FWUPD_DEVICE_FLAG_NONE)
  ------------------
  |  Branch (4820:6): [True: 0, False: 832]
  ------------------
 4821|      0|		return;
 4822|       |
 4823|       |	/* emulated device reinstalling do not need a replug or shutdown */
 4824|    832|	if (flag == FWUPD_DEVICE_FLAG_EMULATED) {
  ------------------
  |  Branch (4824:6): [True: 0, False: 832]
  ------------------
 4825|      0|		if (fu_device_has_flag(self, FWUPD_DEVICE_FLAG_NEEDS_REBOOT)) {
  ------------------
  |  |  141|      0|#define fu_device_has_flag(d, v)	 fwupd_device_has_flag(FWUPD_DEVICE(d), v)
  |  |  ------------------
  |  |  |  Branch (141:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4826|      0|			g_debug("removing needs-reboot for emulated device");
  ------------------
  |  |  351|      0|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  352|      0|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|      0|                               __VA_ARGS__)
  ------------------
 4827|      0|			fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_NEEDS_REBOOT);
 4828|      0|		}
 4829|      0|		if (fu_device_has_flag(self, FWUPD_DEVICE_FLAG_NEEDS_SHUTDOWN)) {
  ------------------
  |  |  141|      0|#define fu_device_has_flag(d, v)	 fwupd_device_has_flag(FWUPD_DEVICE(d), v)
  |  |  ------------------
  |  |  |  Branch (141:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4830|      0|			g_debug("removing needs-shutdown for emulated device");
  ------------------
  |  |  351|      0|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  352|      0|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|      0|                               __VA_ARGS__)
  ------------------
 4831|      0|			fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_NEEDS_SHUTDOWN);
 4832|      0|		}
 4833|      0|	}
 4834|       |
 4835|       |	/* we only inhibit when the flags contains UPDATABLE, and that might be discovered by
 4836|       |	 * probing the hardware *after* the battery level has been set */
 4837|    832|	if (flag == FWUPD_DEVICE_FLAG_UPDATABLE && priv->inhibits != NULL)
  ------------------
  |  Branch (4837:6): [True: 0, False: 832]
  |  Branch (4837:45): [True: 0, False: 0]
  ------------------
 4838|      0|		fu_device_ensure_inhibits(self);
 4839|       |
 4840|       |	/* an emulated device cannot be used to record emulation events,
 4841|       |	 * and an emulated device cannot be tagged for emulation */
 4842|    832|	if (flag == FWUPD_DEVICE_FLAG_EMULATED)
  ------------------
  |  Branch (4842:6): [True: 0, False: 832]
  ------------------
 4843|      0|		fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_CAN_EMULATION_TAG);
 4844|    832|	if (flag == FWUPD_DEVICE_FLAG_CAN_EMULATION_TAG &&
  ------------------
  |  Branch (4844:6): [True: 832, False: 0]
  ------------------
 4845|    832|	    fu_device_has_flag(self, FWUPD_DEVICE_FLAG_EMULATED))
  ------------------
  |  |  141|    832|#define fu_device_has_flag(d, v)	 fwupd_device_has_flag(FWUPD_DEVICE(d), v)
  |  |  ------------------
  |  |  |  Branch (141:35): [True: 0, False: 832]
  |  |  ------------------
  ------------------
 4846|      0|		return;
 4847|       |
 4848|       |	/* being both a bootloader and requiring a bootloader is invalid */
 4849|    832|	if (flag & FWUPD_DEVICE_FLAG_NEEDS_BOOTLOADER)
  ------------------
  |  Branch (4849:6): [True: 0, False: 832]
  ------------------
 4850|      0|		fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_IS_BOOTLOADER);
 4851|    832|	if (flag & FWUPD_DEVICE_FLAG_IS_BOOTLOADER)
  ------------------
  |  Branch (4851:6): [True: 0, False: 832]
  ------------------
 4852|      0|		fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_NEEDS_BOOTLOADER);
 4853|       |
 4854|       |	/* being both a signed and unsigned is invalid */
 4855|    832|	if (flag & FWUPD_DEVICE_FLAG_SIGNED_PAYLOAD)
  ------------------
  |  Branch (4855:6): [True: 0, False: 832]
  ------------------
 4856|      0|		fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_UNSIGNED_PAYLOAD);
 4857|    832|	if (flag & FWUPD_DEVICE_FLAG_UNSIGNED_PAYLOAD)
  ------------------
  |  Branch (4857:6): [True: 0, False: 832]
  ------------------
 4858|      0|		fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_SIGNED_PAYLOAD);
 4859|       |
 4860|       |	/* one implies the other */
 4861|    832|	if (flag & FWUPD_DEVICE_FLAG_CAN_VERIFY_IMAGE)
  ------------------
  |  Branch (4861:6): [True: 0, False: 832]
  ------------------
 4862|      0|		flag |= FWUPD_DEVICE_FLAG_CAN_VERIFY;
 4863|    832|	if (flag & FWUPD_DEVICE_FLAG_INSTALL_ALL_RELEASES)
  ------------------
  |  Branch (4863:6): [True: 0, False: 832]
  ------------------
 4864|      0|		flag |= FWUPD_DEVICE_FLAG_VERSION_CHECK_REQUIRED;
 4865|    832|	fwupd_device_add_flag(FWUPD_DEVICE(self), flag);
 4866|       |
 4867|       |	/* activatable devices shouldn't be allowed to update again until activated */
 4868|       |	/* don't let devices be updated until activated */
 4869|    832|	if (flag & FWUPD_DEVICE_FLAG_NEEDS_ACTIVATION)
  ------------------
  |  Branch (4869:6): [True: 0, False: 832]
  ------------------
 4870|      0|		fu_device_inhibit(self, "needs-activation", "Pending activation");
 4871|       |
 4872|       |	/* do not let devices be updated until back in range */
 4873|    832|	if (flag & FWUPD_DEVICE_FLAG_UNREACHABLE)
  ------------------
  |  Branch (4873:6): [True: 0, False: 832]
  ------------------
 4874|      0|		fu_device_add_problem(self, FWUPD_DEVICE_PROBLEM_UNREACHABLE);
 4875|       |
 4876|       |	/* fixup and maybe show a warning if the remove delay was forgotten */
 4877|    832|	if ((flag & FWUPD_DEVICE_FLAG_WAIT_FOR_REPLUG) && priv->remove_delay == 0) {
  ------------------
  |  Branch (4877:6): [True: 0, False: 832]
  |  Branch (4877:52): [True: 0, False: 0]
  ------------------
 4878|      0|		priv->remove_delay = FU_DEVICE_REMOVE_DELAY_RE_ENUMERATE;
  ------------------
  |  |  111|      0|#define FU_DEVICE_REMOVE_DELAY_RE_ENUMERATE 10000 /* ms */
  ------------------
 4879|      0|#ifndef SUPPORTED_BUILD
 4880|      0|		g_critical("FWUPD_DEVICE_FLAG_WAIT_FOR_REPLUG added but remove delay is unset! -- "
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 4881|      0|			   "add something like fu_device_set_remove_delay(FU_DEVICE(self), "
 4882|      0|			   "FU_DEVICE_REMOVE_DELAY_RE_ENUMERATE) to the %s _init()",
 4883|      0|			   G_OBJECT_TYPE_NAME(self));
 4884|      0|#endif
 4885|      0|	}
 4886|    832|}
fu_device_register_private_flag:
 4900|  1.66k|{
 4901|  1.66k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|  1.66k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 4902|  1.66k|	GQuark flag_quark;
 4903|       |
 4904|  1.66k|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|  1.66k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.66k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.66k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.66k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.66k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.66k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.66k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.66k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.66k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.66k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.66k|   else                                         \
  |  |  |  |  |  | 1021|  1.66k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.66k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.66k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.66k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.66k|      { } \
  |  |  633|  1.66k|    else \
  |  |  634|  1.66k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  1.66k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.66k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.66k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4905|  1.66k|	g_return_if_fail(flag != NULL);
  ------------------
  |  |  630|  1.66k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.66k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.66k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.66k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.66k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.66k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.66k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.66k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.66k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.66k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.66k|   else                                         \
  |  |  |  |  |  | 1021|  1.66k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.66k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.66k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.66k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.66k|      { } \
  |  |  633|  1.66k|    else \
  |  |  634|  1.66k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  1.66k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.66k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.66k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4906|       |
 4907|  1.66k|#ifndef SUPPORTED_BUILD
 4908|       |	/* ensure not already the name of an internal or exported flag */
 4909|  1.66k|	if (fwupd_device_flag_from_string(flag) != FWUPD_DEVICE_FLAG_UNKNOWN) {
  ------------------
  |  Branch (4909:6): [True: 0, False: 1.66k]
  ------------------
 4910|      0|		g_critical("%s private flag %s already exists as an exported flag",
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 4911|      0|			   G_OBJECT_TYPE_NAME(self),
 4912|      0|			   flag);
 4913|      0|		return;
 4914|      0|	}
 4915|  1.66k|#endif
 4916|       |	/* ensure */
 4917|  1.66k|	fu_device_register_private_flags(self);
 4918|       |
 4919|       |	/* sanity check */
 4920|  1.66k|	flag_quark = fu_device_find_private_flag_quark(self, flag);
 4921|  1.66k|	if (G_UNLIKELY(flag_quark != 0)) {
  ------------------
  |  | 1025|  1.66k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  1.66k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.66k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.66k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.66k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.66k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.66k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.66k|   else                                         \
  |  |  |  | 1021|  1.66k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.66k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.66k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 1.66k]
  |  |  ------------------
  ------------------
 4922|      0|		g_critical("already registered private %s flag %s", G_OBJECT_TYPE_NAME(self), flag);
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 4923|      0|		return;
 4924|      0|	}
 4925|       |
 4926|       |	/* add new */
 4927|  1.66k|	flag_quark = g_quark_from_static_string(flag);
 4928|  1.66k|	g_array_append_val(priv->private_flags_registered, flag_quark);
  ------------------
  |  |   64|  1.66k|#define g_array_append_val(a,v)	  g_array_append_vals (a, &(v), 1)
  ------------------
 4929|  1.66k|}
fu_device_set_acquiesce_delay:
 5091|  1.66k|{
 5092|  1.66k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|  1.66k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5093|  1.66k|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|  1.66k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.66k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.66k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.66k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.66k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.66k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.66k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.66k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.66k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.66k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.66k|   else                                         \
  |  |  |  |  |  | 1021|  1.66k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.66k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.66k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.66k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.66k|      { } \
  |  |  633|  1.66k|    else \
  |  |  634|  1.66k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  1.66k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.66k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.66k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5094|  1.66k|	priv->acquiesce_delay = acquiesce_delay;
 5095|  1.66k|}
fu_device_get_vid:
 5295|  1.35k|{
 5296|  1.35k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|  1.35k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5297|  1.35k|	g_return_val_if_fail(FU_IS_DEVICE(self), 0x0000);
  ------------------
  |  |  643|  1.35k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.35k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.35k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.35k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.35k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.35k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.35k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.35k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.35k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.35k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.35k|   else                                         \
  |  |  |  |  |  | 1021|  1.35k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.35k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.35k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.35k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.35k|      { } \
  |  |  646|  1.35k|    else \
  |  |  647|  1.35k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.35k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.35k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.35k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5298|  1.35k|	return priv->vid;
 5299|  1.35k|}
fu_device_set_vid:
 5312|    751|{
 5313|    751|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|    751|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5314|    751|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    751|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    751|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    751|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    751|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    751| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    751|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    751|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    751|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 751, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    751|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    751|   else                                         \
  |  |  |  |  |  | 1021|    751|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    751|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    751|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 751, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    751|      { } \
  |  |  633|    751|    else \
  |  |  634|    751|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    751|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    751|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 751]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5315|    751|	if (priv->vid == vid)
  ------------------
  |  Branch (5315:6): [True: 75, False: 676]
  ------------------
 5316|     75|		return;
 5317|    676|	priv->vid = vid;
 5318|    676|	g_object_notify(G_OBJECT(self), "vid");
  ------------------
  |  |   56|    676|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|    676|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|    676|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5319|    676|}
fu_device_get_pid:
 5333|  1.39k|{
 5334|  1.39k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|  1.39k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5335|  1.39k|	g_return_val_if_fail(FU_IS_DEVICE(self), 0x0000);
  ------------------
  |  |  643|  1.39k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.39k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.39k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.39k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.39k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.39k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.39k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.39k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.39k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.39k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.39k|   else                                         \
  |  |  |  |  |  | 1021|  1.39k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.39k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.39k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.39k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.39k|      { } \
  |  |  646|  1.39k|    else \
  |  |  647|  1.39k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.39k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.39k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.39k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5336|  1.39k|	return priv->pid;
 5337|  1.39k|}
fu_device_set_pid:
 5350|    751|{
 5351|    751|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|    751|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5352|    751|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    751|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    751|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    751|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    751|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    751| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    751|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    751|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    751|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 751, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    751|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    751|   else                                         \
  |  |  |  |  |  | 1021|    751|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    751|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    751|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 751, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    751|      { } \
  |  |  633|    751|    else \
  |  |  634|    751|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    751|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    751|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 751]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5353|    751|	if (priv->pid == pid)
  ------------------
  |  Branch (5353:6): [True: 54, False: 697]
  ------------------
 5354|     54|		return;
 5355|    697|	priv->pid = pid;
 5356|    697|	g_object_notify(G_OBJECT(self), "pid");
  ------------------
  |  |   56|    697|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|    697|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|    697|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5357|    697|}
fu_device_set_context:
 5645|    832|{
 5646|    832|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|    832|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5647|    832|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    832|      { } \
  |  |  633|    832|    else \
  |  |  634|    832|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5648|    832|	g_return_if_fail(FU_IS_CONTEXT(ctx) || ctx == NULL);
  ------------------
  |  |  630|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.49k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 832]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    832|      { } \
  |  |  633|    832|    else \
  |  |  634|    832|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5649|       |
 5650|    832|#ifndef SUPPORTED_BUILD
 5651|    832|	if (priv->ctx != NULL && ctx == NULL) {
  ------------------
  |  Branch (5651:6): [True: 0, False: 832]
  |  Branch (5651:27): [True: 0, False: 0]
  ------------------
 5652|      0|		g_autofree gchar *id_display = fu_device_get_id_display(self);
  ------------------
  |  | 1167|      0|#define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree)
  |  |  ------------------
  |  |  |  | 1129|      0|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 5653|      0|		g_critical("clearing device context for %s", id_display);
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 5654|      0|		return;
 5655|      0|	}
 5656|    832|#endif
 5657|       |
 5658|    832|	if (g_set_object(&priv->ctx, ctx))
  ------------------
  |  |  750|    832|  (G_GNUC_EXTENSION ({ \
  |  |  ------------------
  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  |  Branch (750:3): [True: 0, False: 832]
  |  |  ------------------
  |  |  751|    832|    G_STATIC_ASSERT (sizeof *(object_ptr) == sizeof (new_object)); \
  |  |  ------------------
  |  |  |  |  758|    832|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  ------------------
  |  |  752|    832|    /* Only one access, please; work around type aliasing */ \
  |  |  753|    832|    union { char *in; GObject **out; } _object_ptr; \
  |  |  754|    832|    _object_ptr.in = (char *) (object_ptr); \
  |  |  755|    832|    /* Check types match */ \
  |  |  756|    832|    (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |                   (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \
  |  |  ------------------
  |  |  |  |  814|    832|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (756:13): [Folded, False: 832]
  |  |  ------------------
  |  |  757|    832|    (g_set_object) (_object_ptr.out, (GObject *) new_object); \
  |  |  758|    832|  })) \
  |  |  759|    832|  GLIB_AVAILABLE_MACRO_IN_2_44
  ------------------
 5659|      0|		g_object_notify(G_OBJECT(self), "context");
  ------------------
  |  |   56|      0|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5660|    832|}
fu_device_add_instance_u16:
 7847|  2.74k|{
 7848|  2.74k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|  2.74k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 7849|  2.74k|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|  2.74k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.74k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.74k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.74k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.74k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.74k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.74k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.74k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.74k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.74k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.74k|   else                                         \
  |  |  |  |  |  | 1021|  2.74k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.74k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.74k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.74k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.74k|      { } \
  |  |  633|  2.74k|    else \
  |  |  634|  2.74k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  2.74k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.74k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.74k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7850|  2.74k|	g_return_if_fail(key != NULL);
  ------------------
  |  |  630|  2.74k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.74k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.74k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.74k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.74k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.74k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.74k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.74k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.74k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.74k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.74k|   else                                         \
  |  |  |  |  |  | 1021|  2.74k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.74k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.74k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.74k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.74k|      { } \
  |  |  633|  2.74k|    else \
  |  |  634|  2.74k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  2.74k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.74k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.74k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7851|  2.74k|	fu_device_ensure_instance_hash(self);
 7852|  2.74k|	g_hash_table_insert(priv->instance_hash, g_strdup(key), g_strdup_printf("%04X", value));
 7853|  2.74k|}
fu-device.c:fu_device_class_init:
 8461|      1|{
 8462|      1|	GObjectClass *object_class = G_OBJECT_CLASS(klass);
  ------------------
  |  |   63|      1|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8463|      1|	FuDeviceClass *device_class = FU_DEVICE_CLASS(klass);
 8464|      1|	GParamSpec *pspec;
 8465|      1|	const gchar *quark_flags[] = {
 8466|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_PROBE,
  ------------------
  |  |  375|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_PROBE "no-probe"
  ------------------
 8467|      1|	    FU_DEVICE_PRIVATE_FLAG_REFCOUNTED_PROXY,
  ------------------
  |  |  556|      1|#define FU_DEVICE_PRIVATE_FLAG_REFCOUNTED_PROXY "refcounted-proxy"
  ------------------
 8468|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_GENERIC_GUIDS,
  ------------------
  |  |  491|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_GENERIC_GUIDS "no-generic-guids"
  ------------------
 8469|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_SERIAL_NUMBER,
  ------------------
  |  |  303|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_SERIAL_NUMBER "no-serial-number"
  ------------------
 8470|      1|	    FU_DEVICE_PRIVATE_FLAG_IS_FAKE,
  ------------------
  |  |  622|      1|#define FU_DEVICE_PRIVATE_FLAG_IS_FAKE "is-fake"
  ------------------
 8471|      1|	};
 8472|       |
 8473|      1|	object_class->dispose = fu_device_dispose;
 8474|      1|	object_class->finalize = fu_device_finalize;
 8475|      1|	object_class->get_property = fu_device_get_property;
 8476|      1|	object_class->set_property = fu_device_set_property;
 8477|       |
 8478|      1|	device_class->to_string = fu_device_to_string_impl;
 8479|       |
 8480|       |	/* used as device flags, order is important! */
 8481|      6|	for (guint i = 0; i < G_N_ELEMENTS(quark_flags); i++)
  ------------------
  |  |  840|      6|#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
  ------------------
  |  Branch (8481:20): [True: 5, False: 1]
  ------------------
 8482|      5|		quarks[i] = g_quark_from_static_string(quark_flags[i]);
 8483|       |
 8484|       |	/**
 8485|       |	 * FuDevice::child-added:
 8486|       |	 * @self: the #FuDevice instance that emitted the signal
 8487|       |	 * @device: the #FuDevice child
 8488|       |	 *
 8489|       |	 * The ::child-added signal is emitted when a device has been added as a child.
 8490|       |	 *
 8491|       |	 * Since: 1.0.8
 8492|       |	 **/
 8493|      1|	signals[SIGNAL_CHILD_ADDED] = g_signal_new("child-added",
 8494|      1|						   G_TYPE_FROM_CLASS(object_class),
  ------------------
  |  |  613|      1|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  ------------------
 8495|      1|						   G_SIGNAL_RUN_LAST,
 8496|      1|						   G_STRUCT_OFFSET(FuDeviceClass, child_added),
  ------------------
  |  |  853|      1|      ((glong) offsetof (struct_type, member))
  ------------------
 8497|      1|						   NULL,
 8498|      1|						   NULL,
 8499|      1|						   g_cclosure_marshal_VOID__OBJECT,
 8500|      1|						   G_TYPE_NONE,
  ------------------
  |  |   62|      1|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8501|      1|						   1,
 8502|      1|						   FU_TYPE_DEVICE);
  ------------------
  |  |   19|      1|#define FU_TYPE_DEVICE (fu_device_get_type())
  ------------------
 8503|       |	/**
 8504|       |	 * FuDevice::child-removed:
 8505|       |	 * @self: the #FuDevice instance that emitted the signal
 8506|       |	 * @device: the #FuDevice child
 8507|       |	 *
 8508|       |	 * The ::child-removed signal is emitted when a device has been removed as a child.
 8509|       |	 *
 8510|       |	 * Since: 1.0.8
 8511|       |	 **/
 8512|      1|	signals[SIGNAL_CHILD_REMOVED] = g_signal_new("child-removed",
 8513|      1|						     G_TYPE_FROM_CLASS(object_class),
  ------------------
  |  |  613|      1|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  ------------------
 8514|      1|						     G_SIGNAL_RUN_LAST,
 8515|      1|						     G_STRUCT_OFFSET(FuDeviceClass, child_removed),
  ------------------
  |  |  853|      1|      ((glong) offsetof (struct_type, member))
  ------------------
 8516|      1|						     NULL,
 8517|      1|						     NULL,
 8518|      1|						     g_cclosure_marshal_VOID__OBJECT,
 8519|      1|						     G_TYPE_NONE,
  ------------------
  |  |   62|      1|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8520|      1|						     1,
 8521|      1|						     FU_TYPE_DEVICE);
  ------------------
  |  |   19|      1|#define FU_TYPE_DEVICE (fu_device_get_type())
  ------------------
 8522|       |	/**
 8523|       |	 * FuDevice::request:
 8524|       |	 * @self: the #FuDevice instance that emitted the signal
 8525|       |	 * @request: the #FwupdRequest
 8526|       |	 *
 8527|       |	 * The ::request signal is emitted when the device needs interactive action from the user.
 8528|       |	 *
 8529|       |	 * Since: 1.6.2
 8530|       |	 **/
 8531|      1|	signals[SIGNAL_REQUEST] = g_signal_new("request",
 8532|      1|					       G_TYPE_FROM_CLASS(object_class),
  ------------------
  |  |  613|      1|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  ------------------
 8533|      1|					       G_SIGNAL_RUN_LAST,
 8534|      1|					       G_STRUCT_OFFSET(FuDeviceClass, request),
  ------------------
  |  |  853|      1|      ((glong) offsetof (struct_type, member))
  ------------------
 8535|      1|					       NULL,
 8536|      1|					       NULL,
 8537|      1|					       g_cclosure_marshal_VOID__OBJECT,
 8538|      1|					       G_TYPE_NONE,
  ------------------
  |  |   62|      1|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8539|      1|					       1,
 8540|      1|					       FWUPD_TYPE_REQUEST);
  ------------------
  |  |   15|      1|#define FWUPD_TYPE_REQUEST (fwupd_request_get_type())
  ------------------
 8541|       |
 8542|       |	/**
 8543|       |	 * FuDevice:physical-id:
 8544|       |	 *
 8545|       |	 * The device physical ID.
 8546|       |	 *
 8547|       |	 * Since: 1.1.2
 8548|       |	 */
 8549|      1|	pspec = g_param_spec_string("physical-id",
 8550|      1|				    NULL,
 8551|      1|				    NULL,
 8552|      1|				    NULL,
 8553|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8554|      1|	g_object_class_install_property(object_class, PROP_PHYSICAL_ID, pspec);
 8555|       |
 8556|       |	/**
 8557|       |	 * FuDevice:logical-id:
 8558|       |	 *
 8559|       |	 * The device logical ID.
 8560|       |	 *
 8561|       |	 * Since: 1.1.2
 8562|       |	 */
 8563|      1|	pspec = g_param_spec_string("logical-id",
 8564|      1|				    NULL,
 8565|      1|				    NULL,
 8566|      1|				    NULL,
 8567|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8568|      1|	g_object_class_install_property(object_class, PROP_LOGICAL_ID, pspec);
 8569|       |
 8570|       |	/**
 8571|       |	 * FuDevice:backend-id:
 8572|       |	 *
 8573|       |	 * The device backend ID.
 8574|       |	 *
 8575|       |	 * Since: 1.5.8
 8576|       |	 */
 8577|      1|	pspec = g_param_spec_string("backend-id",
 8578|      1|				    NULL,
 8579|      1|				    NULL,
 8580|      1|				    NULL,
 8581|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8582|      1|	g_object_class_install_property(object_class, PROP_BACKEND_ID, pspec);
 8583|       |
 8584|       |	/**
 8585|       |	 * FuDevice:equivalent-id:
 8586|       |	 *
 8587|       |	 * The device equivalent ID.
 8588|       |	 *
 8589|       |	 * Since: 2.0.0
 8590|       |	 */
 8591|      1|	pspec = g_param_spec_string("equivalent-id",
 8592|      1|				    NULL,
 8593|      1|				    NULL,
 8594|      1|				    NULL,
 8595|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8596|      1|	g_object_class_install_property(object_class, PROP_EQUIVALENT_ID, pspec);
 8597|       |	/**
 8598|       |	 * FuDevice:update-message:
 8599|       |	 *
 8600|       |	 * The device update message.
 8601|       |	 *
 8602|       |	 * Since: 2.0.0
 8603|       |	 */
 8604|      1|	pspec = g_param_spec_string("update-message",
 8605|      1|				    NULL,
 8606|      1|				    NULL,
 8607|      1|				    NULL,
 8608|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8609|      1|	g_object_class_install_property(object_class, PROP_UPDATE_MESSAGE, pspec);
 8610|       |
 8611|       |	/**
 8612|       |	 * FuDevice:update-image:
 8613|       |	 *
 8614|       |	 * The update image for the device.
 8615|       |	 *
 8616|       |	 * Since: 2.0.0
 8617|       |	 */
 8618|      1|	pspec = g_param_spec_string("update-image",
 8619|      1|				    NULL,
 8620|      1|				    NULL,
 8621|      1|				    NULL,
 8622|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8623|      1|	g_object_class_install_property(object_class, PROP_UPDATE_IMAGE, pspec);
 8624|       |
 8625|       |	/**
 8626|       |	 * FuDevice:context:
 8627|       |	 *
 8628|       |	 * The #FuContext to use.
 8629|       |	 *
 8630|       |	 * Since: 1.6.0
 8631|       |	 */
 8632|      1|	pspec = g_param_spec_object("context",
 8633|      1|				    NULL,
 8634|      1|				    NULL,
 8635|      1|				    FU_TYPE_CONTEXT,
  ------------------
  |  |   21|      1|#define FU_TYPE_CONTEXT (fu_context_get_type())
  ------------------
 8636|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 8637|      1|	g_object_class_install_property(object_class, PROP_CONTEXT, pspec);
 8638|       |
 8639|       |	/**
 8640|       |	 * FuDevice:backend:
 8641|       |	 *
 8642|       |	 * The #FuBackend that created the device.
 8643|       |	 *
 8644|       |	 * Since: 2.0.0
 8645|       |	 */
 8646|      1|	pspec = g_param_spec_object("backend",
 8647|      1|				    NULL,
 8648|      1|				    NULL,
 8649|      1|				    FU_TYPE_BACKEND,
  ------------------
  |  |   12|      1|#define FU_TYPE_BACKEND (fu_backend_get_type())
  ------------------
 8650|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 8651|      1|	g_object_class_install_property(object_class, PROP_BACKEND, pspec);
 8652|       |
 8653|       |	/**
 8654|       |	 * FuDevice:proxy:
 8655|       |	 *
 8656|       |	 * The device proxy to use.
 8657|       |	 *
 8658|       |	 * Since: 1.4.1
 8659|       |	 */
 8660|      1|	pspec = g_param_spec_object("proxy",
 8661|      1|				    NULL,
 8662|      1|				    NULL,
 8663|      1|				    FU_TYPE_DEVICE,
  ------------------
  |  |   19|      1|#define FU_TYPE_DEVICE (fu_device_get_type())
  ------------------
 8664|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 8665|      1|	g_object_class_install_property(object_class, PROP_PROXY, pspec);
 8666|       |
 8667|       |	/**
 8668|       |	 * FuDevice:parent:
 8669|       |	 *
 8670|       |	 * The device parent.
 8671|       |	 *
 8672|       |	 * Since: 1.0.8
 8673|       |	 */
 8674|      1|	pspec = g_param_spec_object("parent",
 8675|      1|				    NULL,
 8676|      1|				    NULL,
 8677|      1|				    FU_TYPE_DEVICE,
  ------------------
  |  |   19|      1|#define FU_TYPE_DEVICE (fu_device_get_type())
  ------------------
 8678|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 8679|      1|	g_object_class_install_property(object_class, PROP_PARENT, pspec);
 8680|       |
 8681|       |	/**
 8682|       |	 * FuDevice:private-flags:
 8683|       |	 *
 8684|       |	 * The device private flags.
 8685|       |	 *
 8686|       |	 * Since: 1.9.1
 8687|       |	 */
 8688|      1|	pspec = g_param_spec_uint64("private-flags",
 8689|      1|				    NULL,
 8690|      1|				    NULL,
 8691|      1|				    0,
 8692|      1|				    G_MAXUINT64,
  ------------------
  |  |  101|      1|#define G_MAXUINT64	G_GUINT64_CONSTANT(0xffffffffffffffff)
  |  |  ------------------
  |  |  |  |   65|      1|#define G_GUINT64_CONSTANT(val)	(val##UL)
  |  |  ------------------
  ------------------
 8693|      1|				    0,
 8694|      1|				    G_PARAM_READABLE | G_PARAM_STATIC_NAME);
 8695|      1|	g_object_class_install_property(object_class, PROP_PRIVATE_FLAGS, pspec);
 8696|       |
 8697|       |	/**
 8698|       |	 * FuDevice:vid:
 8699|       |	 *
 8700|       |	 * The device vendor ID.
 8701|       |	 *
 8702|       |	 * Since: 2.0.0
 8703|       |	 */
 8704|      1|	pspec = g_param_spec_uint("vid",
 8705|      1|				  NULL,
 8706|      1|				  NULL,
 8707|      1|				  0,
 8708|      1|				  G_MAXUINT16,
  ------------------
  |  |   81|      1|#define G_MAXUINT16	((guint16) 0xffff)
  ------------------
 8709|      1|				  0,
 8710|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8711|      1|	g_object_class_install_property(object_class, PROP_VID, pspec);
 8712|       |
 8713|       |	/**
 8714|       |	 * FuDevice:pid:
 8715|       |	 *
 8716|       |	 * The device product ID.
 8717|       |	 *
 8718|       |	 * Since: 2.0.0
 8719|       |	 */
 8720|      1|	pspec = g_param_spec_uint("pid",
 8721|      1|				  NULL,
 8722|      1|				  NULL,
 8723|      1|				  0,
 8724|      1|				  G_MAXUINT16,
  ------------------
  |  |   81|      1|#define G_MAXUINT16	((guint16) 0xffff)
  ------------------
 8725|      1|				  0,
 8726|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8727|      1|	g_object_class_install_property(object_class, PROP_PID, pspec);
 8728|       |
 8729|       |	/**
 8730|       |	 * FuDevice:required-free:
 8731|       |	 *
 8732|       |	 * The required amount of free firmware space.
 8733|       |	 *
 8734|       |	 * Since: 2.0.12
 8735|       |	 */
 8736|      1|	pspec = g_param_spec_uint64("required-free",
 8737|      1|				    NULL,
 8738|      1|				    NULL,
 8739|      1|				    0,
 8740|      1|				    G_MAXUINT64,
  ------------------
  |  |  101|      1|#define G_MAXUINT64	G_GUINT64_CONSTANT(0xffffffffffffffff)
  |  |  ------------------
  |  |  |  |   65|      1|#define G_GUINT64_CONSTANT(val)	(val##UL)
  |  |  ------------------
  ------------------
 8741|      1|				    0,
 8742|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8743|      1|	g_object_class_install_property(object_class, PROP_REQUIRED_FREE, pspec);
 8744|      1|}
fu-device.c:fu_device_dispose:
 8451|    832|{
 8452|    832|	FuDevice *self = FU_DEVICE(object);
 8453|    832|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|    832|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 8454|    832|	g_clear_object(&priv->ctx);
  ------------------
  |  |  683|    832|#define g_clear_object(object_ptr) g_clear_pointer ((object_ptr), g_object_unref)
  |  |  ------------------
  |  |  |  |  120|    832|  G_STMT_START                                           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  121|    832|  {                                                      \
  |  |  |  |  122|    832|    G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|    832|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  |  |  ------------------
  |  |  |  |  123|    832|    glib_typeof ((pp)) _pp = (pp);                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    832|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  124|    832|    glib_typeof (*(pp)) _ptr = *_pp;                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    832|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  125|    832|    *_pp = NULL;                                         \
  |  |  |  |  126|    832|    if (_ptr)                                            \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (126:9): [True: 0, False: 832]
  |  |  |  |  ------------------
  |  |  |  |  127|    832|      (destroy) (_ptr);                                  \
  |  |  |  |  128|    832|  }                                                      \
  |  |  |  |  129|    832|  G_STMT_END                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  130|    832|  GLIB_AVAILABLE_MACRO_IN_2_34
  |  |  ------------------
  ------------------
 8455|    832|	g_clear_object(&priv->target);
  ------------------
  |  |  683|    832|#define g_clear_object(object_ptr) g_clear_pointer ((object_ptr), g_object_unref)
  |  |  ------------------
  |  |  |  |  120|    832|  G_STMT_START                                           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  121|    832|  {                                                      \
  |  |  |  |  122|    832|    G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|    832|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  |  |  ------------------
  |  |  |  |  123|    832|    glib_typeof ((pp)) _pp = (pp);                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    832|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  124|    832|    glib_typeof (*(pp)) _ptr = *_pp;                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    832|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  125|    832|    *_pp = NULL;                                         \
  |  |  |  |  126|    832|    if (_ptr)                                            \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (126:9): [True: 0, False: 832]
  |  |  |  |  ------------------
  |  |  |  |  127|    832|      (destroy) (_ptr);                                  \
  |  |  |  |  128|    832|  }                                                      \
  |  |  |  |  129|    832|  G_STMT_END                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  130|    832|  GLIB_AVAILABLE_MACRO_IN_2_34
  |  |  ------------------
  ------------------
 8456|    832|	G_OBJECT_CLASS(fu_device_parent_class)->dispose(object);
  ------------------
  |  |   63|    832|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|    832|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|    832|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8457|    832|}
fu-device.c:fu_device_finalize:
 8760|    832|{
 8761|    832|	FuDevice *self = FU_DEVICE(object);
 8762|    832|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|    832|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 8763|       |
 8764|    832|	if (priv->progress != NULL)
  ------------------
  |  Branch (8764:6): [True: 0, False: 832]
  ------------------
 8765|      0|		g_object_unref(priv->progress);
 8766|    832|	if (priv->proxy != NULL) {
  ------------------
  |  Branch (8766:6): [True: 0, False: 832]
  ------------------
 8767|      0|		if (priv->notify_flags_proxy_id != 0)
  ------------------
  |  Branch (8767:7): [True: 0, False: 0]
  ------------------
 8768|      0|			g_clear_signal_handler(&priv->notify_flags_proxy_id, priv->proxy);
  ------------------
  |  |  453|      0|  G_STMT_START {                                                    \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  454|      0|    gpointer const _instance      = (instance);                     \
  |  |  455|      0|    gulong *const _handler_id_ptr = (handler_id_ptr);               \
  |  |  456|      0|    const gulong _handler_id      = *_handler_id_ptr;               \
  |  |  457|      0|                                                                    \
  |  |  458|      0|    if (_handler_id > 0)                                            \
  |  |  ------------------
  |  |  |  Branch (458:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  459|      0|      {                                                             \
  |  |  460|      0|        *_handler_id_ptr = 0;                                       \
  |  |  461|      0|        g_signal_handler_disconnect (_instance, _handler_id);       \
  |  |  462|      0|      }                                                             \
  |  |  463|      0|  } G_STMT_END                                                      \
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  464|      0|  GLIB_AVAILABLE_MACRO_IN_2_62
  ------------------
 8769|      0|		if (fu_device_has_private_flag_quark(self, quarks[QUARK_REFCOUNTED_PROXY])) {
  ------------------
  |  Branch (8769:7): [True: 0, False: 0]
  ------------------
 8770|      0|			g_object_unref(priv->proxy);
 8771|      0|		} else {
 8772|      0|			g_object_remove_weak_pointer(G_OBJECT(priv->proxy),
  ------------------
  |  |   56|      0|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8773|      0|						     (gpointer *)&priv->proxy);
 8774|      0|		}
 8775|      0|	}
 8776|    832|	if (priv->backend != NULL)
  ------------------
  |  Branch (8776:6): [True: 0, False: 832]
  ------------------
 8777|      0|		g_object_remove_weak_pointer(G_OBJECT(priv->backend), (gpointer *)&priv->backend);
  ------------------
  |  |   56|      0|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8778|    832|	if (priv->poll_id != 0)
  ------------------
  |  Branch (8778:6): [True: 0, False: 832]
  ------------------
 8779|      0|		g_source_remove(priv->poll_id);
 8780|    832|	if (priv->metadata != NULL)
  ------------------
  |  Branch (8780:6): [True: 0, False: 832]
  ------------------
 8781|      0|		g_hash_table_unref(priv->metadata);
 8782|    832|	if (priv->inhibits != NULL)
  ------------------
  |  Branch (8782:6): [True: 0, False: 832]
  ------------------
 8783|      0|		g_hash_table_unref(priv->inhibits);
 8784|    832|	if (priv->instance_hash != NULL)
  ------------------
  |  Branch (8784:6): [True: 724, False: 108]
  ------------------
 8785|    724|		g_hash_table_unref(priv->instance_hash);
 8786|    832|	if (priv->parent_physical_ids != NULL)
  ------------------
  |  Branch (8786:6): [True: 0, False: 832]
  ------------------
 8787|      0|		g_ptr_array_unref(priv->parent_physical_ids);
 8788|    832|	if (priv->parent_backend_ids != NULL)
  ------------------
  |  Branch (8788:6): [True: 0, False: 832]
  ------------------
 8789|      0|		g_ptr_array_unref(priv->parent_backend_ids);
 8790|    832|	if (priv->events != NULL)
  ------------------
  |  Branch (8790:6): [True: 0, False: 832]
  ------------------
 8791|      0|		g_ptr_array_unref(priv->events);
 8792|    832|	if (priv->retry_recs != NULL)
  ------------------
  |  Branch (8792:6): [True: 832, False: 0]
  ------------------
 8793|    832|		g_ptr_array_unref(priv->retry_recs);
 8794|    832|	if (priv->instance_ids != NULL)
  ------------------
  |  Branch (8794:6): [True: 0, False: 832]
  ------------------
 8795|      0|		g_ptr_array_unref(priv->instance_ids);
 8796|    832|	if (priv->parent_guids != NULL)
  ------------------
  |  Branch (8796:6): [True: 0, False: 832]
  ------------------
 8797|      0|		g_ptr_array_unref(priv->parent_guids);
 8798|    832|	g_array_unref(priv->private_flags);
 8799|    832|	g_array_unref(priv->private_flags_registered);
 8800|    832|	g_ptr_array_unref(priv->possible_plugins);
 8801|    832|	g_free(priv->equivalent_id);
 8802|    832|	g_free(priv->physical_id);
 8803|    832|	g_free(priv->logical_id);
 8804|    832|	g_free(priv->backend_id);
 8805|    832|	g_free(priv->update_request_id);
 8806|    832|	g_free(priv->update_message);
 8807|    832|	g_free(priv->update_image);
 8808|    832|	g_free(priv->fwupd_version);
 8809|    832|	g_free(priv->proxy_guid);
 8810|    832|	g_free(priv->name);
 8811|    832|	g_free(priv->custom_flags);
 8812|       |
 8813|    832|	G_OBJECT_CLASS(fu_device_parent_class)->finalize(object);
  ------------------
  |  |   63|    832|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|    832|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|    832|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8814|    832|}
fu-device.c:fu_device_set_property:
  220|  3.32k|{
  221|  3.32k|	FuDevice *self = FU_DEVICE(object);
  222|  3.32k|	switch (prop_id) {
  223|      0|	case PROP_PHYSICAL_ID:
  ------------------
  |  Branch (223:2): [True: 0, False: 3.32k]
  ------------------
  224|      0|		fu_device_set_physical_id(self, g_value_get_string(value));
  225|      0|		break;
  226|      0|	case PROP_LOGICAL_ID:
  ------------------
  |  Branch (226:2): [True: 0, False: 3.32k]
  ------------------
  227|      0|		fu_device_set_logical_id(self, g_value_get_string(value));
  228|      0|		break;
  229|      0|	case PROP_BACKEND_ID:
  ------------------
  |  Branch (229:2): [True: 0, False: 3.32k]
  ------------------
  230|      0|		fu_device_set_backend_id(self, g_value_get_string(value));
  231|      0|		break;
  232|      0|	case PROP_EQUIVALENT_ID:
  ------------------
  |  Branch (232:2): [True: 0, False: 3.32k]
  ------------------
  233|      0|		fu_device_set_equivalent_id(self, g_value_get_string(value));
  234|      0|		break;
  235|      0|	case PROP_UPDATE_MESSAGE:
  ------------------
  |  Branch (235:2): [True: 0, False: 3.32k]
  ------------------
  236|      0|		fu_device_set_update_message(self, g_value_get_string(value));
  237|      0|		break;
  238|      0|	case PROP_UPDATE_IMAGE:
  ------------------
  |  Branch (238:2): [True: 0, False: 3.32k]
  ------------------
  239|      0|		fu_device_set_update_image(self, g_value_get_string(value));
  240|      0|		break;
  241|    832|	case PROP_CONTEXT:
  ------------------
  |  Branch (241:2): [True: 832, False: 2.49k]
  ------------------
  242|    832|		fu_device_set_context(self, g_value_get_object(value));
  243|    832|		break;
  244|    832|	case PROP_BACKEND:
  ------------------
  |  Branch (244:2): [True: 832, False: 2.49k]
  ------------------
  245|    832|		fu_device_set_backend(self, g_value_get_object(value));
  246|    832|		break;
  247|    832|	case PROP_PROXY:
  ------------------
  |  Branch (247:2): [True: 832, False: 2.49k]
  ------------------
  248|    832|		fu_device_set_proxy(self, g_value_get_object(value));
  249|    832|		break;
  250|    832|	case PROP_PARENT:
  ------------------
  |  Branch (250:2): [True: 832, False: 2.49k]
  ------------------
  251|    832|		fu_device_set_parent(self, g_value_get_object(value));
  252|    832|		break;
  253|      0|	case PROP_VID:
  ------------------
  |  Branch (253:2): [True: 0, False: 3.32k]
  ------------------
  254|      0|		fu_device_set_vid(self, g_value_get_uint(value));
  255|      0|		break;
  256|      0|	case PROP_PID:
  ------------------
  |  Branch (256:2): [True: 0, False: 3.32k]
  ------------------
  257|      0|		fu_device_set_pid(self, g_value_get_uint(value));
  258|      0|		break;
  259|      0|	case PROP_REQUIRED_FREE:
  ------------------
  |  Branch (259:2): [True: 0, False: 3.32k]
  ------------------
  260|      0|		fu_device_set_required_free(self, g_value_get_uint64(value));
  261|      0|		break;
  262|      0|	default:
  ------------------
  |  Branch (262:2): [True: 0, False: 3.32k]
  ------------------
  263|      0|		G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
  ------------------
  |  |  679|      0|    G_OBJECT_WARN_INVALID_PSPEC ((object), "property", (property_id), (pspec))
  |  |  ------------------
  |  |  |  |  656|      0|#define G_OBJECT_WARN_INVALID_PSPEC(object, pname, property_id, pspec) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  657|      0|G_STMT_START { \
  |  |  |  |  658|      0|  GObject *_glib__object = (GObject*) (object); \
  |  |  |  |  659|      0|  GParamSpec *_glib__pspec = (GParamSpec*) (pspec); \
  |  |  |  |  660|      0|  guint _glib__property_id = (property_id); \
  |  |  |  |  661|      0|  g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'", \
  |  |  |  |  ------------------
  |  |  |  |  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuDevice"
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  |  |  |  |  347|      0|                               __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  662|      0|             __FILE__, __LINE__, \
  |  |  |  |  663|      0|             (pname), \
  |  |  |  |  664|      0|             _glib__property_id, \
  |  |  |  |  665|      0|             _glib__pspec->name, \
  |  |  |  |  666|      0|             g_type_name (G_PARAM_SPEC_TYPE (_glib__pspec)), \
  |  |  |  |  667|      0|             G_OBJECT_TYPE_NAME (_glib__object)); \
  |  |  |  |  668|      0|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  264|      0|		break;
  265|  3.32k|	}
  266|  3.32k|}
fu-device.c:fu_device_init:
 8748|    832|{
 8749|    832|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|    832|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 8750|    832|	priv->order = G_MAXINT;
  ------------------
  |  |   34|    832|#define G_MAXINT	INT_MAX
  ------------------
 8751|    832|	priv->possible_plugins = g_ptr_array_new_with_free_func(g_free);
 8752|    832|	priv->acquiesce_delay = 50; /* ms */
 8753|    832|	priv->private_flags_registered = g_array_new(FALSE, FALSE, sizeof(GQuark));
  ------------------
  |  |  814|    832|#define	FALSE	(0)
  ------------------
              	priv->private_flags_registered = g_array_new(FALSE, FALSE, sizeof(GQuark));
  ------------------
  |  |  814|    832|#define	FALSE	(0)
  ------------------
 8754|    832|	priv->private_flags = g_array_new(FALSE, FALSE, sizeof(GQuark));
  ------------------
  |  |  814|    832|#define	FALSE	(0)
  ------------------
              	priv->private_flags = g_array_new(FALSE, FALSE, sizeof(GQuark));
  ------------------
  |  |  814|    832|#define	FALSE	(0)
  ------------------
 8755|    832|	priv->proxy_gtype = G_TYPE_INVALID;
  ------------------
  |  |   55|    832|#define G_TYPE_INVALID			G_TYPE_MAKE_FUNDAMENTAL (0)
  |  |  ------------------
  |  |  |  |  221|    832|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|    832|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8756|    832|}
fu-device.c:fu_device_register_private_flags:
  270|  2.49k|{
  271|  2.49k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|  2.49k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
  272|  2.49k|	const gchar *flags[] = {
  273|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_ICON,
  ------------------
  |  |  263|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_ICON "md-set-icon"
  ------------------
  274|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_NAME,
  ------------------
  |  |  239|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_NAME "md-set-name"
  ------------------
  275|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_NAME_CATEGORY,
  ------------------
  |  |  247|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_NAME_CATEGORY "md-set-name-category"
  ------------------
  276|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_VERFMT,
  ------------------
  |  |  255|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_VERFMT "md-set-verfmt"
  ------------------
  277|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_ONLY_SUPPORTED,
  ------------------
  |  |  231|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_ONLY_SUPPORTED "only-supported"
  ------------------
  278|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_NO_AUTO_INSTANCE_IDS,
  ------------------
  |  |  215|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_NO_AUTO_INSTANCE_IDS "no-auto-instance-ids"
  ------------------
  279|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_ENSURE_SEMVER,
  ------------------
  |  |  223|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_ENSURE_SEMVER "ensure-semver"
  ------------------
  280|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_RETRY_OPEN,
  ------------------
  |  |  271|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_RETRY_OPEN "retry-open"
  ------------------
  281|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_REPLUG_MATCH_GUID,
  ------------------
  |  |  279|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_REPLUG_MATCH_GUID "replug-match-guid"
  ------------------
  282|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_INHERIT_ACTIVATION,
  ------------------
  |  |  287|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_INHERIT_ACTIVATION "inherit-activation"
  ------------------
  283|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_IS_OPEN,
  ------------------
  |  |  295|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_IS_OPEN "is-open"
  ------------------
  284|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_AUTO_PARENT_CHILDREN,
  ------------------
  |  |  311|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_AUTO_PARENT_CHILDREN "auto-parent-children"
  ------------------
  285|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_ATTACH_EXTRA_RESET,
  ------------------
  |  |  319|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_ATTACH_EXTRA_RESET "attach-extra-reset"
  ------------------
  286|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_INHIBIT_CHILDREN,
  ------------------
  |  |  327|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_INHIBIT_CHILDREN "inhibit-children"
  ------------------
  287|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_NO_AUTO_REMOVE_CHILDREN,
  ------------------
  |  |  335|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_NO_AUTO_REMOVE_CHILDREN "no-auto-remove-children"
  ------------------
  288|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_USE_PROXY_FOR_OPEN,
  ------------------
  |  |  564|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_USE_PROXY_FOR_OPEN "use-proxy-for-open"
  ------------------
  289|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_USE_PROXY_FALLBACK,
  ------------------
  |  |  343|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_USE_PROXY_FALLBACK "use-proxy-fallback"
  ------------------
  290|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_NO_AUTO_REMOVE,
  ------------------
  |  |  351|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_NO_AUTO_REMOVE "no-auto-remove"
  ------------------
  291|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_VENDOR,
  ------------------
  |  |  359|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_VENDOR "md-set-vendor"
  ------------------
  292|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_NO_LID_CLOSED,
  ------------------
  |  |  367|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_NO_LID_CLOSED "no-lid-closed"
  ------------------
  293|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_SIGNED,
  ------------------
  |  |  383|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_SIGNED "md-set-signed"
  ------------------
  294|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_AUTO_PAUSE_POLLING,
  ------------------
  |  |  391|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_AUTO_PAUSE_POLLING "auto-pause-polling"
  ------------------
  295|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_DELAYED_REMOVAL,
  ------------------
  |  |  400|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_DELAYED_REMOVAL "delayed-removal"
  ------------------
  296|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_IGNORE_SYSTEM_POWER,
  ------------------
  |  |  409|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_IGNORE_SYSTEM_POWER "ignore-system-power"
  ------------------
  297|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_SAVE_INTO_BACKUP_REMOTE,
  ------------------
  |  |  422|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_SAVE_INTO_BACKUP_REMOTE "save-into-backup-remote"
  ------------------
  298|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_FLAGS,
  ------------------
  |  |  433|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_FLAGS "md-set-flags"
  ------------------
  299|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_VERSION,
  ------------------
  |  |  441|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_VERSION "md-set-version"
  ------------------
  300|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_MD_ONLY_CHECKSUM,
  ------------------
  |  |  451|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_MD_ONLY_CHECKSUM "md-only-checksum"
  ------------------
  301|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_ADD_INSTANCE_ID_REV,
  ------------------
  |  |  459|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_ADD_INSTANCE_ID_REV "add-instance-id-rev"
  ------------------
  302|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_UNCONNECTED,
  ------------------
  |  |  467|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_UNCONNECTED "unconnected"
  ------------------
  303|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_DISPLAY_REQUIRED,
  ------------------
  |  |  475|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_DISPLAY_REQUIRED "display-required"
  ------------------
  304|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_UPDATE_PENDING,
  ------------------
  |  |  483|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_UPDATE_PENDING "update-pending"
  ------------------
  305|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_ENFORCE_REQUIRES,
  ------------------
  |  |  508|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_ENFORCE_REQUIRES "enforce-requires"
  ------------------
  306|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_HOST_FIRMWARE,
  ------------------
  |  |  516|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_HOST_FIRMWARE "host-firmware"
  ------------------
  307|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_HOST_FIRMWARE_CHILD,
  ------------------
  |  |  524|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_HOST_FIRMWARE_CHILD "host-firmware-child"
  ------------------
  308|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_HOST_CPU,
  ------------------
  |  |  532|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_HOST_CPU "host-cpu"
  ------------------
  309|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_HOST_CPU_CHILD,
  ------------------
  |  |  540|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_HOST_CPU_CHILD "host-cpu-child"
  ------------------
  310|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_EXPLICIT_ORDER,
  ------------------
  |  |  548|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_EXPLICIT_ORDER "explicit-order"
  ------------------
  311|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_INSTALL_PARENT_FIRST,
  ------------------
  |  |  575|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_INSTALL_PARENT_FIRST "install-parent-first"
  ------------------
  312|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_REGISTERED,
  ------------------
  |  |  584|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_REGISTERED "registered"
  ------------------
  313|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_ADD_COUNTERPART_GUIDS,
  ------------------
  |  |  594|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_ADD_COUNTERPART_GUIDS "add-counterpart-guids"
  ------------------
  314|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_USE_RUNTIME_VERSION,
  ------------------
  |  |  604|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_USE_RUNTIME_VERSION "use-runtime-version"
  ------------------
  315|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_SKIPS_RESTART,
  ------------------
  |  |  613|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_SKIPS_RESTART "skips-restart"
  ------------------
  316|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_COUNTERPART_VISIBLE,
  ------------------
  |  |  633|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_COUNTERPART_VISIBLE "counterpart-visible"
  ------------------
  317|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_DETACH_PREPARE_FIRMWARE,
  ------------------
  |  |  643|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_DETACH_PREPARE_FIRMWARE "detach-prepare-firmware"
  ------------------
  318|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_EMULATED_REQUIRE_SETUP,
  ------------------
  |  |  653|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_EMULATED_REQUIRE_SETUP "emulated-require-setup"
  ------------------
  319|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_INSTALL_LOOP_RESTART,
  ------------------
  |  |  663|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_INSTALL_LOOP_RESTART "install-loop-restart"
  ------------------
  320|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_REQUIRED_FREE,
  ------------------
  |  |  671|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_REQUIRED_FREE "md-set-required-free"
  ------------------
  321|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_PARENT_NAME_PREFIX,
  ------------------
  |  |  679|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_PARENT_NAME_PREFIX "parent-name-prefix"
  ------------------
  322|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_LAZY_VERFMT,
  ------------------
  |  |  689|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_LAZY_VERFMT "lazy-verfmt"
  ------------------
  323|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_NO_VERSION_EXPECTED,
  ------------------
  |  |  701|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_NO_VERSION_EXPECTED "no-version-expected"
  ------------------
  324|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_NO_GENERIC_VERSION,
  ------------------
  |  |  499|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_NO_GENERIC_VERSION "no-generic-version"
  ------------------
  325|  2.49k|	    FU_DEVICE_PRIVATE_FLAG_STRICT_EMULATION_ORDER,
  ------------------
  |  |  714|  2.49k|#define FU_DEVICE_PRIVATE_FLAG_STRICT_EMULATION_ORDER "strict-emulation-order"
  ------------------
  326|  2.49k|	};
  327|  2.49k|	GQuark quarks_tmp[G_N_ELEMENTS(flags)] = {0};
  328|  2.49k|	if (G_LIKELY(priv->private_flags_registered->len > 0))
  ------------------
  |  | 1024|  2.49k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  2.49k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  2.49k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  2.49k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  2.49k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 1.66k, False: 832]
  |  |  |  |  ------------------
  |  |  |  | 1019|  2.49k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  2.49k|   else                                         \
  |  |  |  | 1021|  2.49k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  2.49k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  2.49k|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 1.66k, False: 832]
  |  |  ------------------
  ------------------
  329|  1.66k|		return;
  330|  44.9k|	for (guint i = 0; i < G_N_ELEMENTS(flags); i++)
  ------------------
  |  |  840|  44.9k|#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
  ------------------
  |  Branch (330:20): [True: 44.0k, False: 832]
  ------------------
  331|  44.0k|		quarks_tmp[i] = g_quark_from_static_string(flags[i]);
  332|    832|	g_array_append_vals(priv->private_flags_registered, quarks, G_N_ELEMENTS(quarks));
  ------------------
  |  |  840|    832|#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
  ------------------
  333|    832|	g_array_append_vals(priv->private_flags_registered, quarks_tmp, G_N_ELEMENTS(quarks_tmp));
  ------------------
  |  |  840|    832|#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
  ------------------
  334|    832|}
fu-device.c:fu_device_find_private_flag_quark:
  387|  2.49k|{
  388|  2.49k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|  2.49k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
  389|  2.49k|	GQuark flag_quark = g_quark_from_string(flag);
  390|   143k|	for (guint i = 0; i < priv->private_flags_registered->len; i++) {
  ------------------
  |  Branch (390:20): [True: 142k, False: 1.66k]
  ------------------
  391|   142k|		GQuark flag_tmp = g_array_index(priv->private_flags_registered, GQuark, i);
  ------------------
  |  |   67|   142k|#define g_array_index(a,t,i)      (((t*) (void *) (a)->data) [(i)])
  ------------------
  392|   142k|		if (flag_quark == flag_tmp)
  ------------------
  |  Branch (392:7): [True: 832, False: 141k]
  ------------------
  393|    832|			return flag_tmp;
  394|   142k|	}
  395|  1.66k|	return 0;
  396|  2.49k|}
fu-device.c:fu_device_ensure_exported_name:
 1883|    832|{
 1884|    832|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|    832|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 1885|    832|	FuDevice *parent = fu_device_get_parent_internal(self);
 1886|       |
 1887|    832|	if (fu_device_has_private_flag(self, FU_DEVICE_PRIVATE_FLAG_PARENT_NAME_PREFIX) &&
  ------------------
  |  |  679|    832|#define FU_DEVICE_PRIVATE_FLAG_PARENT_NAME_PREFIX "parent-name-prefix"
  ------------------
  |  Branch (1887:6): [True: 0, False: 832]
  ------------------
 1888|      0|	    priv->name != NULL && parent != NULL && fu_device_get_name(parent) != NULL) {
  ------------------
  |  |  176|      0|#define fu_device_get_name(d)		     fwupd_device_get_name(FWUPD_DEVICE(d))
  ------------------
  |  Branch (1888:6): [True: 0, False: 0]
  |  Branch (1888:28): [True: 0, False: 0]
  |  Branch (1888:46): [True: 0, False: 0]
  ------------------
 1889|      0|		g_autofree gchar *name_parent =
  ------------------
  |  | 1167|      0|#define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree)
  |  |  ------------------
  |  |  |  | 1129|      0|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1890|      0|		    g_strdup_printf("%s (%s)", fu_device_get_name(parent), priv->name);
  ------------------
  |  |  176|      0|#define fu_device_get_name(d)		     fwupd_device_get_name(FWUPD_DEVICE(d))
  ------------------
 1891|      0|		fwupd_device_set_name(FWUPD_DEVICE(self), name_parent);
 1892|    832|	} else {
 1893|    832|		fwupd_device_set_name(FWUPD_DEVICE(self), priv->name);
 1894|    832|	}
 1895|    832|}
fu-device.c:fu_device_ensure_instance_hash:
 7662|  2.74k|{
 7663|  2.74k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  162|  2.74k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 7664|  2.74k|	if (priv->instance_hash != NULL)
  ------------------
  |  Branch (7664:6): [True: 2.02k, False: 724]
  ------------------
 7665|  2.02k|		return;
 7666|    724|	priv->instance_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
 7667|    724|}

fu_firmware_add_flag:
   95|   430k|{
   96|   430k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|   430k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
   97|   430k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   430k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   430k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   430k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   430k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   430k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   430k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   430k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   430k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 430k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   430k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   430k|   else                                         \
  |  |  |  |  |  | 1021|   430k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   430k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   430k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 430k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   430k|      { } \
  |  |  633|   430k|    else \
  |  |  634|   430k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   430k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   430k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 430k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   98|   430k|	priv->flags |= flag;
   99|   430k|}
fu_firmware_has_flag:
  114|   430k|{
  115|   430k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|   430k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  116|   430k|	g_return_val_if_fail(FU_IS_FIRMWARE(self), FALSE);
  ------------------
  |  |  643|   430k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   430k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   430k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   430k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   430k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   430k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   430k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   430k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 430k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   430k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   430k|   else                                         \
  |  |  |  |  |  | 1021|   430k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   430k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   430k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 430k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   430k|      { } \
  |  |  646|   430k|    else \
  |  |  647|   430k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   430k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   430k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 430k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  117|   430k|	return (priv->flags & flag) > 0;
  118|   430k|}
fu_firmware_set_offset:
  383|   430k|{
  384|   430k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|   430k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  385|   430k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   430k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   430k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   430k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   430k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   430k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   430k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   430k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   430k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 430k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   430k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   430k|   else                                         \
  |  |  |  |  |  | 1021|   430k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   430k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   430k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 430k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   430k|      { } \
  |  |  633|   430k|    else \
  |  |  634|   430k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   430k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   430k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 430k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  386|   430k|	priv->offset = offset;
  387|   430k|}
fu_firmware_set_parent:
  436|   576k|{
  437|   576k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|   576k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  438|   576k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   576k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   576k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   576k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   576k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   576k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   576k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   576k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   576k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 576k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   576k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   576k|   else                                         \
  |  |  |  |  |  | 1021|   576k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   576k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   576k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 576k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   576k|      { } \
  |  |  633|   576k|    else \
  |  |  634|   576k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   576k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   576k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 576k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  439|       |
  440|   576k|	if (priv->parent != NULL)
  ------------------
  |  Branch (440:6): [True: 0, False: 576k]
  ------------------
  441|      0|		g_object_remove_weak_pointer(G_OBJECT(priv->parent), (gpointer *)&priv->parent);
  ------------------
  |  |   56|      0|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  442|   576k|	if (parent != NULL)
  ------------------
  |  Branch (442:6): [True: 145k, False: 430k]
  ------------------
  443|   145k|		g_object_add_weak_pointer(G_OBJECT(parent), (gpointer *)&priv->parent);
  ------------------
  |  |   56|   145k|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|   145k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   145k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  444|   576k|	priv->parent = parent;
  445|   576k|}
fu_firmware_set_size:
  459|   326k|{
  460|   326k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|   326k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  461|   326k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   326k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   326k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   326k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   326k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   326k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   326k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   326k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   326k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 326k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   326k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   326k|   else                                         \
  |  |  |  |  |  | 1021|   326k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   326k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   326k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 326k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   326k|      { } \
  |  |  633|   326k|    else \
  |  |  634|   326k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   326k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   326k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 326k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  462|   326k|	priv->size = size;
  463|   326k|}
fu_firmware_get_size:
  481|   145k|{
  482|   145k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|   145k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  483|   145k|	g_return_val_if_fail(FU_IS_FIRMWARE(self), G_MAXSIZE);
  ------------------
  |  |  643|   145k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   145k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   145k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   145k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   145k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   145k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   145k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   145k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 145k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   145k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   145k|   else                                         \
  |  |  |  |  |  | 1021|   145k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   145k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   145k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 145k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   145k|      { } \
  |  |  646|   145k|    else \
  |  |  647|   145k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   145k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   145k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 145k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  484|   145k|	if (priv->size != 0)
  ------------------
  |  Branch (484:6): [True: 145k, False: 521]
  ------------------
  485|   145k|		return priv->size;
  486|    521|	if (priv->stream != NULL && priv->streamsz != 0)
  ------------------
  |  Branch (486:6): [True: 0, False: 521]
  |  Branch (486:30): [True: 0, False: 0]
  ------------------
  487|      0|		return priv->streamsz;
  488|    521|	if (priv->bytes != NULL)
  ------------------
  |  Branch (488:6): [True: 521, False: 0]
  ------------------
  489|    521|		return g_bytes_get_size(priv->bytes);
  490|      0|	return 0;
  491|    521|}
fu_firmware_set_size_max:
  506|   689k|{
  507|   689k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|   689k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  508|   689k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   689k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   689k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   689k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   689k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   689k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   689k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   689k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   689k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 689k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   689k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   689k|   else                                         \
  |  |  |  |  |  | 1021|   689k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   689k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   689k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 689k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   689k|      { } \
  |  |  633|   689k|    else \
  |  |  634|   689k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   689k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   689k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 689k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  509|   689k|	priv->size_max = size_max;
  510|   689k|}
fu_firmware_set_idx:
  541|   249k|{
  542|   249k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|   249k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  543|   249k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   249k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   249k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   249k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   249k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   249k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   249k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   249k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   249k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 249k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   249k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   249k|   else                                         \
  |  |  |  |  |  | 1021|   249k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   249k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   249k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 249k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   249k|      { } \
  |  |  633|   249k|    else \
  |  |  634|   249k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   249k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   249k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 249k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  544|   249k|	priv->idx = idx;
  545|   249k|}
fu_firmware_set_bytes:
  576|   146k|{
  577|   146k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|   146k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  578|   146k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   146k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   146k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   146k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   146k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   146k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   146k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   146k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   146k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 146k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   146k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   146k|   else                                         \
  |  |  |  |  |  | 1021|   146k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   146k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   146k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 146k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   146k|      { } \
  |  |  633|   146k|    else \
  |  |  634|   146k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   146k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   146k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 146k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  579|   146k|	g_return_if_fail(bytes != NULL);
  ------------------
  |  |  630|   146k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   146k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   146k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   146k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   146k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   146k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   146k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   146k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 146k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   146k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   146k|   else                                         \
  |  |  |  |  |  | 1021|   146k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   146k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   146k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 146k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   146k|      { } \
  |  |  633|   146k|    else \
  |  |  634|   146k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   146k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   146k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 146k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  580|   146k|	if (priv->bytes == bytes)
  ------------------
  |  Branch (580:6): [True: 0, False: 146k]
  ------------------
  581|      0|		return;
  582|   146k|	if (priv->bytes != NULL)
  ------------------
  |  Branch (582:6): [True: 0, False: 146k]
  ------------------
  583|      0|		g_bytes_unref(priv->bytes);
  584|   146k|	priv->bytes = g_bytes_ref(bytes);
  585|       |
  586|       |	/* the input stream is no longer valid */
  587|       |	g_clear_object(&priv->stream);
  ------------------
  |  |  683|   146k|#define g_clear_object(object_ptr) g_clear_pointer ((object_ptr), g_object_unref)
  |  |  ------------------
  |  |  |  |  120|   146k|  G_STMT_START                                           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|   146k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  121|   146k|  {                                                      \
  |  |  |  |  122|   146k|    G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|   146k|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  |  |  ------------------
  |  |  |  |  123|   146k|    glib_typeof ((pp)) _pp = (pp);                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   146k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  124|   146k|    glib_typeof (*(pp)) _ptr = *_pp;                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   146k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  125|   146k|    *_pp = NULL;                                         \
  |  |  |  |  126|   146k|    if (_ptr)                                            \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (126:9): [True: 0, False: 146k]
  |  |  |  |  ------------------
  |  |  |  |  127|   146k|      (destroy) (_ptr);                                  \
  |  |  |  |  128|   146k|  }                                                      \
  |  |  |  |  129|   146k|  G_STMT_END                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|   146k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 146k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  130|   146k|  GLIB_AVAILABLE_MACRO_IN_2_34
  |  |  ------------------
  ------------------
  588|   146k|}
fu_firmware_parse_stream:
 1101|   430k|{
 1102|   430k|	FuFirmwareClass *klass = FU_FIRMWARE_GET_CLASS(self);
 1103|   430k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|   430k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1104|   430k|	gsize streamsz = 0;
 1105|   430k|	g_autoptr(GInputStream) partial_stream = NULL;
  ------------------
  |  | 1162|   430k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   430k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1106|   430k|	g_autoptr(GInputStream) seekable_stream = NULL;
  ------------------
  |  | 1162|   430k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   430k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1107|   430k|	g_autoptr(GBytes) blob = NULL;
  ------------------
  |  | 1162|   430k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   430k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1108|       |
 1109|   430k|	g_return_val_if_fail(FU_IS_FIRMWARE(self), FALSE);
  ------------------
  |  |  643|   430k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   430k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   430k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   430k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   430k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   430k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   430k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   430k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 430k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   430k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   430k|   else                                         \
  |  |  |  |  |  | 1021|   430k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   430k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   430k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 430k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   430k|      { } \
  |  |  646|   430k|    else \
  |  |  647|   430k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   430k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   430k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 430k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1110|   430k|	g_return_val_if_fail(G_IS_INPUT_STREAM(stream), FALSE);
  ------------------
  |  |  643|   430k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   430k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   430k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   430k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   430k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   430k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   430k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.01M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 430k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 430k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 430k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 430k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   430k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   430k|   else                                         \
  |  |  |  |  |  | 1021|   430k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   430k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   430k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 430k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   430k|      { } \
  |  |  646|   430k|    else \
  |  |  647|   430k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   430k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   430k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 430k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1111|   430k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   430k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   430k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   430k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   430k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   430k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   430k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   430k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   861k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 430k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   430k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   430k|   else                                         \
  |  |  |  |  |  | 1021|   430k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   430k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   430k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 430k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   430k|      { } \
  |  |  646|   430k|    else \
  |  |  647|   430k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   430k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   430k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 430k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1112|       |
 1113|       |	/* sanity check */
 1114|   430k|	if (fu_firmware_has_flag(self, FU_FIRMWARE_FLAG_DONE_PARSE)) {
  ------------------
  |  Branch (1114:6): [True: 0, False: 430k]
  ------------------
 1115|      0|		g_set_error_literal(error,
 1116|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1117|      0|				    FWUPD_ERROR_NOT_SUPPORTED,
 1118|      0|				    "firmware object cannot be reused");
 1119|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1120|      0|	}
 1121|       |
 1122|       |	/* ensure the stream is seekable */
 1123|   430k|	if (!G_IS_SEEKABLE(stream) || !g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   34|   861k|#define G_IS_SEEKABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SEEKABLE))
  |  |  ------------------
  |  |  |  |  497|   430k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2313|   430k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   430k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2314|   430k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  |  |  | 2315|   430k|  if (!__inst) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2315:7): [True: 0, False: 430k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2316|   430k|    __r = FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2317|   430k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2317:12): [True: 430k, False: 0]
  |  |  |  |  |  |  |  Branch (2317:31): [True: 0, False: 430k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2318|   430k|    __r = TRUE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2319|   430k|  else \
  |  |  |  |  |  | 2320|   430k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  |  |  | 2321|   430k|  __r; \
  |  |  |  |  |  | 2322|   430k|}))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (!G_IS_SEEKABLE(stream) || !g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   33|   430k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   430k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   430k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1123:6): [True: 0, False: 430k]
  |  Branch (1123:32): [True: 0, False: 430k]
  ------------------
 1124|      0|		blob = fu_input_stream_read_bytes(stream, offset, G_MAXUINT32, NULL, error);
  ------------------
  |  |   92|      0|#define G_MAXUINT32	((guint32) 0xffffffff)
  ------------------
 1125|      0|		if (blob == NULL)
  ------------------
  |  Branch (1125:7): [True: 0, False: 0]
  ------------------
 1126|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1127|      0|		seekable_stream = g_memory_input_stream_new_from_bytes(blob);
 1128|   430k|	} else {
 1129|   430k|		seekable_stream = g_object_ref(stream);
  ------------------
  |  |  523|   430k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
 1130|   430k|	}
 1131|       |
 1132|       |	/* check size */
 1133|   430k|	if (!fu_input_stream_size(seekable_stream, &streamsz, error))
  ------------------
  |  Branch (1133:6): [True: 0, False: 430k]
  ------------------
 1134|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1135|   430k|	if (streamsz <= offset) {
  ------------------
  |  Branch (1135:6): [True: 54, False: 430k]
  ------------------
 1136|     54|		g_set_error(error,
 1137|     54|			    FWUPD_ERROR,
  ------------------
  |  |   15|     54|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1138|     54|			    FWUPD_ERROR_NOT_SUPPORTED,
 1139|     54|			    "stream size 0x%x is smaller than offset 0x%x",
 1140|     54|			    (guint)streamsz,
 1141|     54|			    (guint)offset);
 1142|     54|		return FALSE;
  ------------------
  |  |  814|     54|#define	FALSE	(0)
  ------------------
 1143|     54|	}
 1144|       |
 1145|       |	/* optional */
 1146|   430k|	if (!fu_firmware_validate_for_offset(self, seekable_stream, offset, &offset, flags, error))
  ------------------
  |  Branch (1146:6): [True: 0, False: 430k]
  ------------------
 1147|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1148|   430k|	fu_firmware_set_offset(self, offset);
 1149|       |
 1150|       |	/* validate offset hasn't been corrupted */
 1151|   430k|	if (offset >= streamsz) {
  ------------------
  |  Branch (1151:6): [True: 0, False: 430k]
  ------------------
 1152|      0|		g_set_error(error,
 1153|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1154|      0|			    FWUPD_ERROR_INVALID_FILE,
 1155|      0|			    "offset 0x%x exceeds stream size 0x%x",
 1156|      0|			    (guint)offset,
 1157|      0|			    (guint)streamsz);
 1158|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1159|      0|	}
 1160|       |
 1161|       |	/* save stream size */
 1162|   430k|	priv->streamsz = streamsz - offset;
 1163|   430k|	if (priv->streamsz == 0) {
  ------------------
  |  Branch (1163:6): [True: 0, False: 430k]
  ------------------
 1164|      0|		g_set_error_literal(error,
 1165|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1166|      0|				    FWUPD_ERROR_NOT_SUPPORTED,
 1167|      0|				    "invalid firmware as zero sized");
 1168|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1169|      0|	}
 1170|   430k|	if (priv->size_max > 0 && priv->streamsz > priv->size_max) {
  ------------------
  |  Branch (1170:6): [True: 430k, False: 0]
  |  Branch (1170:28): [True: 0, False: 430k]
  ------------------
 1171|      0|		g_autofree gchar *sz_val = g_format_size(priv->streamsz);
  ------------------
  |  | 1167|      0|#define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree)
  |  |  ------------------
  |  |  |  | 1129|      0|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1172|      0|		g_autofree gchar *sz_max = g_format_size(priv->size_max);
  ------------------
  |  | 1167|      0|#define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree)
  |  |  ------------------
  |  |  |  | 1129|      0|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1173|      0|		g_set_error(error,
 1174|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1175|      0|			    FWUPD_ERROR_INVALID_FILE,
 1176|      0|			    "%s firmware is too large (%s, limit %s)",
 1177|      0|			    G_OBJECT_TYPE_NAME(self),
  ------------------
  |  |  110|      0|#define G_OBJECT_TYPE_NAME(object)  (g_type_name (G_OBJECT_TYPE (object)))
  |  |  ------------------
  |  |  |  |  100|      0|#define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
  |  |  |  |  ------------------
  |  |  |  |  |  |  602|      0|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1178|      0|			    sz_val,
 1179|      0|			    sz_max);
 1180|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1181|      0|	}
 1182|       |
 1183|   430k|#ifndef SUPPORTED_BUILD
 1184|       |	/* we want all firmware subclasses to set this now */
 1185|   430k|	if (G_OBJECT_TYPE(self) != FU_TYPE_FIRMWARE &&
  ------------------
  |  |  100|   430k|#define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
  |  |  ------------------
  |  |  |  |  602|   430k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|   430k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (G_OBJECT_TYPE(self) != FU_TYPE_FIRMWARE &&
  ------------------
  |  |   15|   861k|#define FU_TYPE_FIRMWARE (fu_firmware_get_type())
  ------------------
  |  Branch (1185:6): [True: 430k, False: 0]
  ------------------
 1186|   430k|	    priv->size_max == FU_FIRMWARE_SIZE_MAX_DEFAULT) {
  ------------------
  |  |   11|   430k|#define FU_FIRMWARE_SIZE_MAX_DEFAULT ((100 * FU_MB) + 1)
  |  |  ------------------
  |  |  |  |   79|   430k|#define FU_MB (1ull << 20)
  |  |  ------------------
  ------------------
  |  Branch (1186:6): [True: 0, False: 430k]
  ------------------
 1187|      0|		g_critical("%s did not set firmware max size with fu_firmware_set_size_max()",
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1188|      0|			   G_OBJECT_TYPE_NAME(self));
 1189|      0|	}
 1190|   430k|#endif
 1191|       |
 1192|       |	/* any FuFirmware subclass that gets past this point might have allocated memory in
 1193|       |	 * ->tokenize() or ->parse() and needs to be destroyed before parsing again */
 1194|   430k|	fu_firmware_add_flag(self, FU_FIRMWARE_FLAG_DONE_PARSE);
 1195|       |
 1196|       |	/* this allows devices to skip reading the old firmware if the GType is unsuitable */
 1197|   430k|	if (klass->check_compatible != NULL)
  ------------------
  |  Branch (1197:6): [True: 0, False: 430k]
  ------------------
 1198|      0|		fu_firmware_add_flag(self, FU_FIRMWARE_FLAG_HAS_CHECK_COMPATIBLE);
 1199|       |
 1200|       |	/* save stream */
 1201|   430k|	if (offset == 0) {
  ------------------
  |  Branch (1201:6): [True: 2.21k, False: 428k]
  ------------------
 1202|  2.21k|		partial_stream = g_object_ref(seekable_stream);
  ------------------
  |  |  523|  2.21k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
 1203|   428k|	} else {
 1204|   428k|		partial_stream =
 1205|   428k|		    fu_partial_input_stream_new(seekable_stream, offset, priv->streamsz, error);
 1206|   428k|		if (partial_stream == NULL) {
  ------------------
  |  Branch (1206:7): [True: 0, False: 428k]
  ------------------
 1207|      0|			g_prefix_error_literal(error, "failed to cut firmware: ");
  ------------------
  |  |   11|      0|#define g_prefix_error_literal	  g_prefix_error
  ------------------
 1208|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1209|      0|		}
 1210|   428k|	}
 1211|       |
 1212|       |	/* cache */
 1213|   430k|	if (flags & FU_FIRMWARE_PARSE_FLAG_CACHE_BLOB) {
  ------------------
  |  Branch (1213:6): [True: 146k, False: 284k]
  ------------------
 1214|   146k|		if (blob == NULL) {
  ------------------
  |  Branch (1214:7): [True: 146k, False: 0]
  ------------------
 1215|   146k|			blob = fu_input_stream_read_bytes(partial_stream,
 1216|   146k|							  0x0,
 1217|   146k|							  priv->streamsz,
 1218|   146k|							  NULL,
 1219|   146k|							  error);
 1220|   146k|			if (blob == NULL)
  ------------------
  |  Branch (1220:8): [True: 0, False: 146k]
  ------------------
 1221|      0|				return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1222|   146k|		}
 1223|   146k|		fu_firmware_set_bytes(self, blob);
 1224|   146k|	}
 1225|   430k|	if (flags & FU_FIRMWARE_PARSE_FLAG_CACHE_STREAM)
  ------------------
  |  Branch (1225:6): [True: 0, False: 430k]
  ------------------
 1226|      0|		g_set_object(&priv->stream, partial_stream);
  ------------------
  |  |  750|      0|  (G_GNUC_EXTENSION ({ \
  |  |  ------------------
  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  751|      0|    G_STATIC_ASSERT (sizeof *(object_ptr) == sizeof (new_object)); \
  |  |  ------------------
  |  |  |  |  758|      0|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  ------------------
  |  |  752|      0|    /* Only one access, please; work around type aliasing */ \
  |  |  753|      0|    union { char *in; GObject **out; } _object_ptr; \
  |  |  754|      0|    _object_ptr.in = (char *) (object_ptr); \
  |  |  755|      0|    /* Check types match */ \
  |  |  756|      0|    (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |                   (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (756:13): [Folded, False: 0]
  |  |  ------------------
  |  |  757|      0|    (g_set_object) (_object_ptr.out, (GObject *) new_object); \
  |  |  758|      0|  })) \
  |  |  759|   430k|  GLIB_AVAILABLE_MACRO_IN_2_44
  ------------------
 1227|       |
 1228|       |	/* optional */
 1229|   430k|	if (klass->tokenize != NULL) {
  ------------------
  |  Branch (1229:6): [True: 0, False: 430k]
  ------------------
 1230|      0|		if (!klass->tokenize(self, partial_stream, flags, error))
  ------------------
  |  Branch (1230:7): [True: 0, False: 0]
  ------------------
 1231|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1232|      0|	}
 1233|       |
 1234|       |	/* optional */
 1235|   430k|	if (klass->parse_full != NULL)
  ------------------
  |  Branch (1235:6): [True: 0, False: 430k]
  ------------------
 1236|      0|		return klass->parse_full(self, seekable_stream, offset, flags, error);
 1237|   430k|	else if (klass->parse != NULL)
  ------------------
  |  Branch (1237:11): [True: 430k, False: 0]
  ------------------
 1238|   430k|		return klass->parse(self, partial_stream, flags, error);
 1239|       |
 1240|       |	/* verify alignment */
 1241|      0|	if (streamsz % (1ull << priv->alignment) != 0) {
  ------------------
  |  Branch (1241:6): [True: 0, False: 0]
  ------------------
 1242|      0|		g_autofree gchar *str = NULL;
  ------------------
  |  | 1167|      0|#define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree)
  |  |  ------------------
  |  |  |  | 1129|      0|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1243|      0|		str = g_format_size_full(1ull << priv->alignment, G_FORMAT_SIZE_IEC_UNITS);
 1244|      0|		g_set_error(error,
 1245|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1246|      0|			    FWUPD_ERROR_INVALID_FILE,
 1247|      0|			    "raw firmware is not aligned to 0x%x (%s)",
 1248|      0|			    (guint)(1ull << priv->alignment),
 1249|      0|			    str);
 1250|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1251|      0|	}
 1252|       |
 1253|       |	/* success */
 1254|      0|	return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1255|      0|}
fu_firmware_parse_bytes:
 1277|   430k|{
 1278|   430k|	g_autoptr(GInputStream) stream = NULL;
  ------------------
  |  | 1162|   430k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   430k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1279|       |
 1280|   430k|	g_return_val_if_fail(FU_IS_FIRMWARE(self), FALSE);
  ------------------
  |  |  643|   430k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   430k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   430k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   430k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   430k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   430k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   430k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   430k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 430k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   430k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   430k|   else                                         \
  |  |  |  |  |  | 1021|   430k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   430k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   430k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 430k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   430k|      { } \
  |  |  646|   430k|    else \
  |  |  647|   430k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   430k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   430k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 430k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1281|   430k|	g_return_val_if_fail(fw != NULL, FALSE);
  ------------------
  |  |  643|   430k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   430k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   430k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   430k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   430k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   430k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   430k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   430k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 430k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   430k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   430k|   else                                         \
  |  |  |  |  |  | 1021|   430k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   430k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   430k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 430k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   430k|      { } \
  |  |  646|   430k|    else \
  |  |  647|   430k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   430k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   430k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 430k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1282|   430k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   430k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   430k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   430k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   430k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   430k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   430k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   430k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   861k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 430k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   430k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   430k|   else                                         \
  |  |  |  |  |  | 1021|   430k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   430k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   430k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 430k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   430k|      { } \
  |  |  646|   430k|    else \
  |  |  647|   430k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   430k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   430k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 430k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1283|       |
 1284|   430k|	stream = g_memory_input_stream_new_from_bytes(fw);
 1285|   430k|	return fu_firmware_parse_stream(self, stream, offset, flags, error);
 1286|   430k|}
fu_firmware_add_image_gtype:
 1868|  77.3k|{
 1869|  77.3k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|  77.3k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1870|       |
 1871|  77.3k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|  77.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  77.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  77.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  77.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  77.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  77.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  77.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  77.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  77.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  77.3k|   else                                         \
  |  |  |  |  |  | 1021|  77.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  77.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  77.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  77.3k|      { } \
  |  |  633|  77.3k|    else \
  |  |  634|  77.3k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  77.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  77.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1872|  77.3k|	g_return_if_fail(type != G_TYPE_INVALID);
  ------------------
  |  |  630|  77.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  77.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  77.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  77.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  77.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  77.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  77.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  77.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  77.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  77.3k|   else                                         \
  |  |  |  |  |  | 1021|  77.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  77.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  77.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  77.3k|      { } \
  |  |  633|  77.3k|    else \
  |  |  634|  77.3k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  77.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  77.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1873|       |
 1874|  77.3k|	g_type_ensure(type);
 1875|  77.3k|	if (priv->image_gtypes == NULL)
  ------------------
  |  Branch (1875:6): [True: 77.3k, False: 0]
  ------------------
 1876|  77.3k|		priv->image_gtypes = g_array_new(FALSE, FALSE, sizeof(GType));
  ------------------
  |  |  814|  77.3k|#define	FALSE	(0)
  ------------------
              		priv->image_gtypes = g_array_new(FALSE, FALSE, sizeof(GType));
  ------------------
  |  |  814|  77.3k|#define	FALSE	(0)
  ------------------
 1877|  77.3k|	g_array_append_val(priv->image_gtypes, type);
  ------------------
  |  |   64|  77.3k|#define g_array_append_val(a,v)	  g_array_append_vals (a, &(v), 1)
  ------------------
 1878|  77.3k|}
fu_firmware_add_image:
 1943|   145k|{
 1944|   145k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|   145k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1945|       |
 1946|   145k|	g_return_val_if_fail(FU_IS_FIRMWARE(self), FALSE);
  ------------------
  |  |  643|   145k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   145k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   145k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   145k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   145k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   145k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   145k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   145k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 145k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   145k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   145k|   else                                         \
  |  |  |  |  |  | 1021|   145k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   145k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   145k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 145k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   145k|      { } \
  |  |  646|   145k|    else \
  |  |  647|   145k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   145k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   145k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 145k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1947|   145k|	g_return_val_if_fail(FU_IS_FIRMWARE(img), FALSE);
  ------------------
  |  |  643|   145k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   145k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   145k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   145k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   145k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   145k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   145k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   145k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 145k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   145k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   145k|   else                                         \
  |  |  |  |  |  | 1021|   145k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   145k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   145k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 145k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   145k|      { } \
  |  |  646|   145k|    else \
  |  |  647|   145k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   145k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   145k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 145k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1948|   145k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   145k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   145k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   145k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   145k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   145k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   145k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   145k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   291k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 145k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   145k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   145k|   else                                         \
  |  |  |  |  |  | 1021|   145k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   145k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   145k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 145k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   145k|      { } \
  |  |  646|   145k|    else \
  |  |  647|   145k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   145k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   145k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 145k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1949|       |
 1950|       |	/* check depth */
 1951|   145k|	if (priv->depth > FU_FIRMWARE_IMAGE_DEPTH_MAX) {
  ------------------
  |  |   70|   145k|#define FU_FIRMWARE_IMAGE_DEPTH_MAX  50
  ------------------
  |  Branch (1951:6): [True: 0, False: 145k]
  ------------------
 1952|      0|		g_set_error(error,
 1953|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1954|      0|			    FWUPD_ERROR_INVALID_DATA,
 1955|      0|			    "images are nested too deep, limit is %u",
 1956|      0|			    (guint)FU_FIRMWARE_IMAGE_DEPTH_MAX);
  ------------------
  |  |   70|      0|#define FU_FIRMWARE_IMAGE_DEPTH_MAX  50
  ------------------
 1957|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1958|      0|	}
 1959|       |
 1960|       |	/* check image is a permissible GType */
 1961|   145k|	if (!fu_firmware_check_image_gtype(self, G_OBJECT_TYPE(img), error))
  ------------------
  |  |  100|   145k|#define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
  |  |  ------------------
  |  |  |  |  602|   145k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|   145k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1961:6): [True: 0, False: 145k]
  ------------------
 1962|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1963|       |
 1964|       |	/* dedupe */
 1965|   145k|	if (priv->flags & FU_FIRMWARE_FLAG_DEDUPE_ID) {
  ------------------
  |  Branch (1965:6): [True: 0, False: 145k]
  ------------------
 1966|      0|		for (guint i = 0; i < priv->images->len; i++) {
  ------------------
  |  Branch (1966:21): [True: 0, False: 0]
  ------------------
 1967|      0|			FuFirmware *img_tmp = g_ptr_array_index(priv->images, i);
  ------------------
  |  |  138|      0|#define    g_ptr_array_index(array,index_) ((array)->pdata)[index_]
  ------------------
 1968|      0|			if (g_strcmp0(fu_firmware_get_id(img_tmp), fu_firmware_get_id(img)) == 0) {
  ------------------
  |  Branch (1968:8): [True: 0, False: 0]
  ------------------
 1969|      0|				g_ptr_array_remove_index(priv->images, i);
 1970|      0|				break;
 1971|      0|			}
 1972|      0|		}
 1973|      0|	}
 1974|   145k|	if (priv->flags & FU_FIRMWARE_FLAG_DEDUPE_IDX) {
  ------------------
  |  Branch (1974:6): [True: 0, False: 145k]
  ------------------
 1975|      0|		for (guint i = 0; i < priv->images->len; i++) {
  ------------------
  |  Branch (1975:21): [True: 0, False: 0]
  ------------------
 1976|      0|			FuFirmware *img_tmp = g_ptr_array_index(priv->images, i);
  ------------------
  |  |  138|      0|#define    g_ptr_array_index(array,index_) ((array)->pdata)[index_]
  ------------------
 1977|      0|			if (fu_firmware_get_idx(img_tmp) == fu_firmware_get_idx(img)) {
  ------------------
  |  Branch (1977:8): [True: 0, False: 0]
  ------------------
 1978|      0|				g_ptr_array_remove_index(priv->images, i);
 1979|      0|				break;
 1980|      0|			}
 1981|      0|		}
 1982|      0|	}
 1983|       |
 1984|       |	/* sanity check */
 1985|   145k|	if (priv->images_max > 0 && priv->images->len >= priv->images_max) {
  ------------------
  |  Branch (1985:6): [True: 0, False: 145k]
  |  Branch (1985:30): [True: 0, False: 0]
  ------------------
 1986|      0|		g_set_error(error,
 1987|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1988|      0|			    FWUPD_ERROR_INVALID_DATA,
 1989|      0|			    "too many images, limit is %u",
 1990|      0|			    priv->images_max);
 1991|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1992|      0|	}
 1993|       |
 1994|   145k|	g_ptr_array_add(priv->images, g_object_ref(img));
  ------------------
  |  |  523|   145k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
 1995|       |
 1996|       |	/* set the other way around */
 1997|   145k|	fu_firmware_set_parent(img, self);
 1998|   145k|	fu_firmware_set_depth(img, priv->depth + 1);
 1999|       |
 2000|       |	/* success */
 2001|   145k|	return TRUE;
  ------------------
  |  |  818|   145k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   145k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2002|   145k|}
fu-firmware.c:fu_firmware_class_init:
 2746|      1|{
 2747|      1|	GObjectClass *object_class = G_OBJECT_CLASS(klass);
  ------------------
  |  |   63|      1|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2748|      1|	GParamSpec *pspec;
 2749|       |
 2750|      1|	object_class->finalize = fu_firmware_finalize;
 2751|      1|	object_class->get_property = fu_firmware_get_property;
 2752|      1|	object_class->set_property = fu_firmware_set_property;
 2753|      1|	object_class->constructed = fu_firmware_constructed;
 2754|       |
 2755|       |	/**
 2756|       |	 * FuFirmware:parent:
 2757|       |	 *
 2758|       |	 * The firmware parent.
 2759|       |	 *
 2760|       |	 * Since: 1.8.2
 2761|       |	 */
 2762|      1|	pspec = g_param_spec_object("parent",
 2763|      1|				    NULL,
 2764|      1|				    NULL,
 2765|      1|				    FU_TYPE_FIRMWARE,
  ------------------
  |  |   15|      1|#define FU_TYPE_FIRMWARE (fu_firmware_get_type())
  ------------------
 2766|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 2767|      1|	g_object_class_install_property(object_class, PROP_PARENT, pspec);
 2768|      1|}
fu-firmware.c:fu_firmware_finalize:
 2720|   430k|{
 2721|   430k|	FuFirmware *self = FU_FIRMWARE(object);
 2722|   430k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|   430k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 2723|   430k|	g_free(priv->version);
 2724|   430k|	g_free(priv->id);
 2725|   430k|	g_free(priv->filename);
 2726|   430k|	if (priv->bytes != NULL)
  ------------------
  |  Branch (2726:6): [True: 146k, False: 284k]
  ------------------
 2727|   146k|		g_bytes_unref(priv->bytes);
 2728|   430k|	if (priv->stream != NULL)
  ------------------
  |  Branch (2728:6): [True: 0, False: 430k]
  ------------------
 2729|      0|		g_object_unref(priv->stream);
 2730|   430k|	if (priv->chunks != NULL)
  ------------------
  |  Branch (2730:6): [True: 0, False: 430k]
  ------------------
 2731|      0|		g_ptr_array_unref(priv->chunks);
 2732|   430k|	if (priv->image_gtypes != NULL)
  ------------------
  |  Branch (2732:6): [True: 77.3k, False: 353k]
  ------------------
 2733|  77.3k|		g_array_unref(priv->image_gtypes);
 2734|   430k|	if (priv->patches != NULL)
  ------------------
  |  Branch (2734:6): [True: 0, False: 430k]
  ------------------
 2735|      0|		g_ptr_array_unref(priv->patches);
 2736|   430k|	if (priv->magic != NULL)
  ------------------
  |  Branch (2736:6): [True: 0, False: 430k]
  ------------------
 2737|      0|		g_ptr_array_unref(priv->magic);
 2738|   430k|	if (priv->parent != NULL)
  ------------------
  |  Branch (2738:6): [True: 0, False: 430k]
  ------------------
 2739|      0|		g_object_remove_weak_pointer(G_OBJECT(priv->parent), (gpointer *)&priv->parent);
  ------------------
  |  |   56|      0|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2740|   430k|	g_ptr_array_unref(priv->images);
 2741|   430k|	G_OBJECT_CLASS(fu_firmware_parent_class)->finalize(object);
  ------------------
  |  |   63|   430k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|   430k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|   430k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2742|   430k|}
fu-firmware.c:fu_firmware_set_property:
 2683|   430k|{
 2684|   430k|	FuFirmware *self = FU_FIRMWARE(object);
 2685|   430k|	switch (prop_id) {
 2686|   430k|	case PROP_PARENT:
  ------------------
  |  Branch (2686:2): [True: 430k, False: 0]
  ------------------
 2687|   430k|		fu_firmware_set_parent(self, g_value_get_object(value));
 2688|   430k|		break;
 2689|      0|	default:
  ------------------
  |  Branch (2689:2): [True: 0, False: 430k]
  ------------------
 2690|      0|		G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
  ------------------
  |  |  679|      0|    G_OBJECT_WARN_INVALID_PSPEC ((object), "property", (property_id), (pspec))
  |  |  ------------------
  |  |  |  |  656|      0|#define G_OBJECT_WARN_INVALID_PSPEC(object, pname, property_id, pspec) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  657|      0|G_STMT_START { \
  |  |  |  |  658|      0|  GObject *_glib__object = (GObject*) (object); \
  |  |  |  |  659|      0|  GParamSpec *_glib__pspec = (GParamSpec*) (pspec); \
  |  |  |  |  660|      0|  guint _glib__property_id = (property_id); \
  |  |  |  |  661|      0|  g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'", \
  |  |  |  |  ------------------
  |  |  |  |  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  |  |  |  |  347|      0|                               __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  662|      0|             __FILE__, __LINE__, \
  |  |  |  |  663|      0|             (pname), \
  |  |  |  |  664|      0|             _glib__property_id, \
  |  |  |  |  665|      0|             _glib__pspec->name, \
  |  |  |  |  666|      0|             g_type_name (G_PARAM_SPEC_TYPE (_glib__pspec)), \
  |  |  |  |  667|      0|             G_OBJECT_TYPE_NAME (_glib__object)); \
  |  |  |  |  668|      0|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2691|      0|		break;
 2692|   430k|	}
 2693|   430k|}
fu-firmware.c:fu_firmware_constructed:
 2705|   430k|{
 2706|   430k|	FuFirmware *self = FU_FIRMWARE(obj);
 2707|   430k|	FuFirmwareClass *klass = FU_FIRMWARE_GET_CLASS(self);
 2708|   430k|	if (klass->add_magic != NULL)
  ------------------
  |  Branch (2708:6): [True: 0, False: 430k]
  ------------------
 2709|      0|		klass->add_magic(self);
 2710|   430k|	if (G_TYPE_FROM_CLASS(klass) != FU_TYPE_FIRMWARE && klass->parse_full == NULL &&
  ------------------
  |  |  613|   430k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  ------------------
              	if (G_TYPE_FROM_CLASS(klass) != FU_TYPE_FIRMWARE && klass->parse_full == NULL &&
  ------------------
  |  |   15|   861k|#define FU_TYPE_FIRMWARE (fu_firmware_get_type())
  ------------------
  |  Branch (2710:6): [True: 430k, False: 0]
  |  Branch (2710:54): [True: 430k, False: 0]
  ------------------
 2711|   430k|	    klass->parse == NULL)
  ------------------
  |  Branch (2711:6): [True: 0, False: 430k]
  ------------------
 2712|      0|		fu_firmware_add_flag(self, FU_FIRMWARE_FLAG_IS_ABSTRACT);
 2713|       |
 2714|       |	/* chain up to parent */
 2715|   430k|	G_OBJECT_CLASS(fu_firmware_parent_class)->constructed(obj);
  ------------------
  |  |   63|   430k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|   430k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|   430k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2716|   430k|}
fu-firmware.c:fu_firmware_init:
 2697|   430k|{
 2698|   430k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|   430k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 2699|   430k|	priv->images = g_ptr_array_new_with_free_func((GDestroyNotify)g_object_unref);
 2700|   430k|	priv->size_max = FU_FIRMWARE_SIZE_MAX_DEFAULT;
  ------------------
  |  |   11|   430k|#define FU_FIRMWARE_SIZE_MAX_DEFAULT ((100 * FU_MB) + 1)
  |  |  ------------------
  |  |  |  |   79|   430k|#define FU_MB (1ull << 20)
  |  |  ------------------
  ------------------
 2701|   430k|}
fu-firmware.c:fu_firmware_fuzzer_iface_init:
 3076|      1|{
 3077|      1|	iface->test_input = fu_firmware_fuzzer_test_input;
 3078|      1|	iface->build_example = fu_firmware_fuzzer_build_example;
 3079|      1|}
fu-firmware.c:fu_firmware_validate_for_offset:
 1046|   430k|{
 1047|   430k|	FuFirmwareClass *klass = FU_FIRMWARE_GET_CLASS(self);
 1048|   430k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|   430k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1049|   430k|	gsize streamsz = 0;
 1050|       |
 1051|       |	/* not implemented */
 1052|   430k|	if (klass->validate == NULL)
  ------------------
  |  Branch (1052:6): [True: 430k, False: 0]
  ------------------
 1053|   430k|		return TRUE;
  ------------------
  |  |  818|   430k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   430k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1054|       |
 1055|       |	/* fuzzing */
 1056|      0|	if (!fu_firmware_has_flag(self, FU_FIRMWARE_FLAG_ALWAYS_SEARCH) &&
  ------------------
  |  Branch (1056:6): [True: 0, False: 0]
  ------------------
 1057|      0|	    (flags & FU_FIRMWARE_PARSE_FLAG_NO_SEARCH) > 0) {
  ------------------
  |  Branch (1057:6): [True: 0, False: 0]
  ------------------
 1058|      0|		return klass->validate(self, stream, offset, error);
 1059|      0|	}
 1060|       |
 1061|       |	/* try all the magic values, if provided */
 1062|      0|	if (priv->magic != NULL)
  ------------------
  |  Branch (1062:6): [True: 0, False: 0]
  ------------------
 1063|      0|		return fu_firmware_validate_with_magic(self, stream, offset, offset_found, error);
 1064|       |
 1065|       |	/* limit the size of firmware we search as brute force is expensive */
 1066|      0|	if (!fu_input_stream_size(stream, &streamsz, error))
  ------------------
  |  Branch (1066:6): [True: 0, False: 0]
  ------------------
 1067|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1068|      0|	if (streamsz < FU_FIRMWARE_SEARCH_MAGIC_BUFSZ_MAX) {
  ------------------
  |  |   79|      0|#define FU_FIRMWARE_SEARCH_MAGIC_BUFSZ_MAX (64 * FU_KB)
  |  |  ------------------
  |  |  |  |   70|      0|#define FU_KB (1ull << 10)
  |  |  ------------------
  ------------------
  |  Branch (1068:6): [True: 0, False: 0]
  ------------------
 1069|      0|		for (gsize offset_tmp = offset; offset_tmp < streamsz; offset_tmp++) {
  ------------------
  |  Branch (1069:35): [True: 0, False: 0]
  ------------------
 1070|      0|			if (klass->validate(self, stream, offset_tmp, NULL)) {
  ------------------
  |  Branch (1070:8): [True: 0, False: 0]
  ------------------
 1071|      0|				*offset_found = offset_tmp;
 1072|      0|				return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1073|      0|			}
 1074|      0|		}
 1075|      0|	}
 1076|       |
 1077|       |	/* check in more detail */
 1078|      0|	return klass->validate(self, stream, offset, error);
 1079|      0|}
fu-firmware.c:fu_firmware_check_image_gtype:
 1901|   145k|{
 1902|   145k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|   145k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1903|   145k|	if (priv->image_gtypes == NULL) {
  ------------------
  |  Branch (1903:6): [True: 0, False: 145k]
  ------------------
 1904|      0|#ifndef SUPPORTED_BUILD
 1905|      0|		g_critical("%s did not add image GType %s with fu_firmware_add_image_gtype()",
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1906|      0|			   G_OBJECT_TYPE_NAME(self),
 1907|      0|			   g_type_name(gtype));
 1908|      0|#endif
 1909|      0|		return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1910|      0|	}
 1911|   145k|	for (guint i = 0; i < priv->image_gtypes->len; i++) {
  ------------------
  |  Branch (1911:20): [True: 145k, False: 0]
  ------------------
 1912|   145k|		GType gtype_tmp = g_array_index(priv->image_gtypes, GType, i);
  ------------------
  |  |   67|   145k|#define g_array_index(a,t,i)      (((t*) (void *) (a)->data) [(i)])
  ------------------
 1913|   145k|		if (gtype_tmp == gtype)
  ------------------
  |  Branch (1913:7): [True: 145k, False: 0]
  ------------------
 1914|   145k|			return TRUE;
  ------------------
  |  |  818|   145k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   145k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1915|   145k|	}
 1916|      0|	g_set_error(error,
 1917|      0|		    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1918|      0|		    FWUPD_ERROR_NOT_SUPPORTED,
 1919|      0|		    "cannot add %s to %s",
 1920|      0|		    g_type_name(gtype),
 1921|      0|		    G_OBJECT_TYPE_NAME(self));
  ------------------
  |  |  110|      0|#define G_OBJECT_TYPE_NAME(object)  (g_type_name (G_OBJECT_TYPE (object)))
  |  |  ------------------
  |  |  |  |  100|      0|#define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
  |  |  |  |  ------------------
  |  |  |  |  |  |  602|      0|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1922|      0|	return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1923|   145k|}
fu-firmware.c:fu_firmware_set_depth:
 1833|   145k|{
 1834|   145k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   66|   145k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1835|   145k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   145k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   145k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   145k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   145k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   145k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   145k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   145k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   145k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 145k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   145k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   145k|   else                                         \
  |  |  |  |  |  | 1021|   145k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   145k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   145k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 145k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   145k|      { } \
  |  |  633|   145k|    else \
  |  |  634|   145k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   145k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   145k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 145k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1836|   145k|	priv->depth = depth;
 1837|   145k|}

fu_fuzzer_test_input:
   32|    832|{
   33|    832|	FuFuzzerInterface *iface = FU_FUZZER_GET_IFACE(self);
   34|    832|	if (iface->test_input == NULL) {
  ------------------
  |  Branch (34:6): [True: 0, False: 832]
  ------------------
   35|      0|		g_set_error_literal(error,
   36|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
   37|      0|				    FWUPD_ERROR_NOT_SUPPORTED,
   38|      0|				    "FuFuzzer->test_input() not implemented");
   39|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
   40|      0|	}
   41|    832|	return iface->test_input(self, blob, error);
   42|    832|}
fu-fuzzer.c:fu_fuzzer_default_init:
   15|      1|{
   16|      1|}

fu_input_stream_read_byte_array:
  272|   682k|{
  273|   682k|	guint8 tmp[0x8000]; /* nocheck:zero-init */
  274|   682k|	g_autoptr(GByteArray) buf = g_byte_array_new();
  ------------------
  |  | 1162|   682k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   682k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  275|   682k|	g_autoptr(GError) error_local = NULL;
  ------------------
  |  | 1162|   682k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   682k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  276|       |
  277|   682k|	g_return_val_if_fail(G_IS_INPUT_STREAM(stream), NULL);
  ------------------
  |  |  643|   682k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   682k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   682k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   682k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   682k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   682k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   682k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  4.77M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 682k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 682k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 682k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 682k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   682k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   682k|   else                                         \
  |  |  |  |  |  | 1021|   682k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   682k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   682k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 682k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   682k|      { } \
  |  |  646|   682k|    else \
  |  |  647|   682k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   682k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   682k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  278|   682k|	g_return_val_if_fail(progress == NULL || FU_IS_PROGRESS(progress), NULL);
  ------------------
  |  |  643|   682k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   682k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   682k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   682k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   682k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   682k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   682k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.36M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 682k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   682k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   682k|   else                                         \
  |  |  |  |  |  | 1021|   682k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   682k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   682k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 682k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   682k|      { } \
  |  |  646|   682k|    else \
  |  |  647|   682k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   682k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   682k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  279|   682k|	g_return_val_if_fail(error == NULL || *error == NULL, NULL);
  ------------------
  |  |  643|   682k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   682k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   682k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   682k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   682k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   682k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   682k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.36M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 682k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   682k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   682k|   else                                         \
  |  |  |  |  |  | 1021|   682k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   682k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   682k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 682k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   682k|      { } \
  |  |  646|   682k|    else \
  |  |  647|   682k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   682k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   682k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  280|       |
  281|       |	/* this is invalid */
  282|   682k|	if (count == 0) {
  ------------------
  |  Branch (282:6): [True: 0, False: 682k]
  ------------------
  283|      0|		g_set_error_literal(error,
  284|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  285|      0|				    FWUPD_ERROR_NOT_SUPPORTED,
  286|      0|				    "read size must be non-zero");
  287|      0|		return NULL;
  288|      0|	}
  289|       |
  290|       |	/* seek back to start */
  291|   682k|	if (G_IS_SEEKABLE(stream) && g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   34|  1.36M|#define G_IS_SEEKABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SEEKABLE))
  |  |  ------------------
  |  |  |  |  497|   682k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2313|   682k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   682k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2314|   682k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  |  |  | 2315|   682k|  if (!__inst) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2315:7): [True: 0, False: 682k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2316|   682k|    __r = FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2317|   682k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2317:12): [True: 682k, False: 0]
  |  |  |  |  |  |  |  Branch (2317:31): [True: 0, False: 682k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2318|   682k|    __r = TRUE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2319|   682k|  else \
  |  |  |  |  |  | 2320|   682k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  |  |  | 2321|   682k|  __r; \
  |  |  |  |  |  | 2322|   682k|}))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (34:36): [True: 682k, False: 0]
  |  |  ------------------
  ------------------
              	if (G_IS_SEEKABLE(stream) && g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   33|   682k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   682k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   682k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (291:31): [True: 682k, False: 0]
  ------------------
  292|   682k|		if (!g_seekable_seek(G_SEEKABLE(stream), offset, G_SEEK_SET, NULL, error))
  ------------------
  |  |   33|   682k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   682k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   682k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (292:7): [True: 0, False: 682k]
  ------------------
  293|      0|			return NULL;
  294|   682k|	}
  295|       |
  296|       |	/* read from stream in 32kB chunks */
  297|   689k|	while (TRUE) {
  ------------------
  |  |  818|   689k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   689k|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (818:14): [True: 689k, Folded]
  |  |  ------------------
  ------------------
  298|   689k|		gssize sz;
  299|   689k|		sz = g_input_stream_read(stream,
  300|   689k|					 tmp,
  301|   689k|					 MIN(count - buf->len, sizeof(tmp)),
  ------------------
  |  |  825|   689k|#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (825:21): [True: 682k, False: 6.28k]
  |  |  ------------------
  ------------------
  302|   689k|					 NULL,
  303|   689k|					 &error_local);
  304|   689k|		if (sz == 0)
  ------------------
  |  Branch (304:7): [True: 604, False: 688k]
  ------------------
  305|    604|			break;
  306|   688k|		if (sz < 0) {
  ------------------
  |  Branch (306:7): [True: 0, False: 688k]
  ------------------
  307|      0|			g_set_error_literal(error,
  308|      0|					    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  309|      0|					    FWUPD_ERROR_INVALID_FILE,
  310|      0|					    error_local->message);
  311|      0|			return NULL;
  312|      0|		}
  313|       |
  314|       |		/* update progress */
  315|   688k|		if (progress != NULL)
  ------------------
  |  Branch (315:7): [True: 0, False: 688k]
  ------------------
  316|      0|			fu_progress_set_percentage_full(progress, buf->len, count);
  317|       |
  318|   688k|		g_byte_array_append(buf, tmp, sz);
  319|   688k|		if (buf->len >= count)
  ------------------
  |  Branch (319:7): [True: 681k, False: 6.87k]
  ------------------
  320|   681k|			break;
  321|   688k|	}
  322|       |
  323|       |	/* no data was read */
  324|   682k|	if (buf->len == 0) {
  ------------------
  |  Branch (324:6): [True: 3, False: 682k]
  ------------------
  325|      3|		g_set_error_literal(error,
  326|      3|				    FWUPD_ERROR,
  ------------------
  |  |   15|      3|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  327|      3|				    FWUPD_ERROR_INVALID_FILE,
  328|      3|				    "no data could be read");
  329|      3|		return NULL;
  330|      3|	}
  331|       |
  332|       |	/* success */
  333|   682k|	return g_steal_pointer(&buf);
  ------------------
  |  |  222|   682k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  334|   682k|}
fu_input_stream_read_bytes:
  358|   146k|{
  359|   146k|	g_autoptr(GByteArray) buf = NULL;
  ------------------
  |  | 1162|   146k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   146k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  360|   146k|	g_return_val_if_fail(G_IS_INPUT_STREAM(stream), NULL);
  ------------------
  |  |  643|   146k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   146k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   146k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   146k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   146k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   146k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   146k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.02M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 146k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 146k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 146k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 146k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   146k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   146k|   else                                         \
  |  |  |  |  |  | 1021|   146k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   146k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   146k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 146k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   146k|      { } \
  |  |  646|   146k|    else \
  |  |  647|   146k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   146k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   146k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 146k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  361|   146k|	g_return_val_if_fail(progress == NULL || FU_IS_PROGRESS(progress), NULL);
  ------------------
  |  |  643|   146k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   146k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   146k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   146k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   146k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   146k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   146k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   292k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 146k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   146k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   146k|   else                                         \
  |  |  |  |  |  | 1021|   146k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   146k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   146k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 146k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   146k|      { } \
  |  |  646|   146k|    else \
  |  |  647|   146k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   146k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   146k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 146k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  362|   146k|	g_return_val_if_fail(error == NULL || *error == NULL, NULL);
  ------------------
  |  |  643|   146k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   146k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   146k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   146k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   146k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   146k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   146k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   292k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 146k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   146k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   146k|   else                                         \
  |  |  |  |  |  | 1021|   146k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   146k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   146k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 146k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   146k|      { } \
  |  |  646|   146k|    else \
  |  |  647|   146k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   146k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   146k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 146k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  363|   146k|	buf = fu_input_stream_read_byte_array(stream, offset, count, progress, error);
  364|   146k|	if (buf == NULL)
  ------------------
  |  Branch (364:6): [True: 0, False: 146k]
  ------------------
  365|      0|		return NULL;
  366|   146k|	return g_byte_array_free_to_bytes(g_steal_pointer(&buf));
  ------------------
  |  |  222|   146k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  367|   146k|}
fu_input_stream_size:
  419|   859k|{
  420|   859k|	g_return_val_if_fail(G_IS_INPUT_STREAM(stream), FALSE);
  ------------------
  |  |  643|   859k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   859k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   859k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   859k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   859k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   859k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   859k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  6.01M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 859k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 859k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 859k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 859k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   859k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   859k|   else                                         \
  |  |  |  |  |  | 1021|   859k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   859k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   859k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 859k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   859k|      { } \
  |  |  646|   859k|    else \
  |  |  647|   859k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   859k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   859k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 859k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  421|   859k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   859k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   859k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   859k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   859k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   859k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   859k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   859k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.71M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 859k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   859k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   859k|   else                                         \
  |  |  |  |  |  | 1021|   859k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   859k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   859k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 859k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   859k|      { } \
  |  |  646|   859k|    else \
  |  |  647|   859k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   859k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   859k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 859k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  422|       |
  423|       |	/* streaming from unseekable stream */
  424|   859k|	if (!G_IS_SEEKABLE(stream) || !g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   34|  1.71M|#define G_IS_SEEKABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SEEKABLE))
  |  |  ------------------
  |  |  |  |  497|   859k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2313|   859k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   859k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2314|   859k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  |  |  | 2315|   859k|  if (!__inst) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2315:7): [True: 0, False: 859k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2316|   859k|    __r = FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2317|   859k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2317:12): [True: 859k, False: 0]
  |  |  |  |  |  |  |  Branch (2317:31): [True: 0, False: 859k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2318|   859k|    __r = TRUE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2319|   859k|  else \
  |  |  |  |  |  | 2320|   859k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  |  |  | 2321|   859k|  __r; \
  |  |  |  |  |  | 2322|   859k|}))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (!G_IS_SEEKABLE(stream) || !g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   33|   859k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   859k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   859k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (424:6): [True: 0, False: 859k]
  |  Branch (424:32): [True: 0, False: 859k]
  ------------------
  425|      0|		if (val != NULL)
  ------------------
  |  Branch (425:7): [True: 0, False: 0]
  ------------------
  426|      0|			*val = G_MAXSIZE;
  ------------------
  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  427|      0|		return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  428|      0|	}
  429|       |
  430|   859k|	if (!g_seekable_seek(G_SEEKABLE(stream), 0, G_SEEK_END, NULL, error)) {
  ------------------
  |  |   33|   859k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   859k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   859k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (430:6): [True: 0, False: 859k]
  ------------------
  431|      0|		g_prefix_error_literal(error, "seek to end: ");
  ------------------
  |  |   11|      0|#define g_prefix_error_literal	  g_prefix_error
  ------------------
  432|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  433|      0|	}
  434|   859k|	if (val != NULL)
  ------------------
  |  Branch (434:6): [True: 859k, False: 0]
  ------------------
  435|   859k|		*val = g_seekable_tell(G_SEEKABLE(stream));
  ------------------
  |  |   33|   859k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   859k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   859k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  436|       |
  437|       |	/* success */
  438|   859k|	return TRUE;
  ------------------
  |  |  818|   859k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   859k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  439|   859k|}

fu_memread_uint16:
  142|  41.1k|{
  143|  41.1k|	guint16 val_hw, val_native;
  144|  41.1k|	memcpy(&val_hw, buf, sizeof(val_hw)); /* nocheck:blocked */
  145|  41.1k|	switch (endian) {
  146|      0|	case G_BIG_ENDIAN:
  ------------------
  |  |  185|      0|#define G_BIG_ENDIAN    4321
  ------------------
  |  Branch (146:2): [True: 0, False: 41.1k]
  ------------------
  147|      0|		val_native = GUINT16_FROM_BE(val_hw); /* nocheck:blocked */
  ------------------
  |  |  388|      0|#define GUINT16_FROM_BE(val)	(GUINT16_TO_BE (val))
  |  |  ------------------
  |  |  |  |  162|      0|#define GUINT16_TO_BE(val)	(GUINT16_SWAP_LE_BE (val))
  |  |  |  |  ------------------
  |  |  |  |  |  |  351|      0|#    define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  191|      0|#define GUINT16_SWAP_LE_BE_CONSTANT(val)	((guint16) ( \
  |  |  |  |  |  |  |  |  192|      0|    (guint16) ((guint16) (val) >> 8) |	\
  |  |  |  |  |  |  |  |  193|      0|    (guint16) ((guint16) (val) << 8)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  148|      0|		break;
  149|  41.1k|	case G_LITTLE_ENDIAN:
  ------------------
  |  |  184|  41.1k|#define G_LITTLE_ENDIAN 1234
  ------------------
  |  Branch (149:2): [True: 41.1k, False: 0]
  ------------------
  150|  41.1k|		val_native = GUINT16_FROM_LE(val_hw); /* nocheck:blocked */
  ------------------
  |  |  386|  41.1k|#define GUINT16_FROM_LE(val)	(GUINT16_TO_LE (val))
  |  |  ------------------
  |  |  |  |  160|  41.1k|#define GUINT16_TO_LE(val)	((guint16) (val))
  |  |  ------------------
  ------------------
  151|  41.1k|		break;
  152|      0|	default:
  ------------------
  |  Branch (152:2): [True: 0, False: 41.1k]
  ------------------
  153|      0|		val_native = val_hw;
  154|      0|		break;
  155|  41.1k|	}
  156|  41.1k|	return val_native;
  157|  41.1k|}
fu_memchk_read:
  325|   473k|{
  326|   473k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   473k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   473k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   473k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   473k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   473k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   473k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   473k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.41M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 826, False: 472k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 472k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   473k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   473k|   else                                         \
  |  |  |  |  |  | 1021|   473k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   473k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   473k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 473k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   473k|      { } \
  |  |  646|   473k|    else \
  |  |  647|   473k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuCommon"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   473k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   473k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 473k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  327|   473k|	if (n == 0)
  ------------------
  |  Branch (327:6): [True: 0, False: 473k]
  ------------------
  328|      0|		return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  329|   473k|	if (n > bufsz) {
  ------------------
  |  Branch (329:6): [True: 32, False: 473k]
  ------------------
  330|     32|		g_set_error(error,
  331|     32|			    FWUPD_ERROR,
  ------------------
  |  |   15|     32|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  332|     32|			    FWUPD_ERROR_READ,
  333|     32|			    "attempted to read 0x%02x bytes from buffer of 0x%02x",
  334|     32|			    (guint)n,
  335|     32|			    (guint)bufsz);
  336|     32|		return FALSE;
  ------------------
  |  |  814|     32|#define	FALSE	(0)
  ------------------
  337|     32|	}
  338|   473k|	if (fu_size_checked_add(offset, n) == G_MAXSIZE) {
  ------------------
  |  |   84|   473k|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|   473k|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  |  Branch (338:6): [True: 0, False: 473k]
  ------------------
  339|      0|		g_set_error(error,
  340|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  341|      0|			    FWUPD_ERROR_READ,
  342|      0|			    "offset 0x%02x + 0x%02x overflowed",
  343|      0|			    (guint)offset,
  344|      0|			    (guint)n);
  345|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  346|      0|	}
  347|   473k|	if (offset > bufsz || n + offset > bufsz) {
  ------------------
  |  Branch (347:6): [True: 0, False: 473k]
  |  Branch (347:24): [True: 88, False: 472k]
  ------------------
  348|     88|		g_set_error(error,
  349|     88|			    FWUPD_ERROR,
  ------------------
  |  |   15|     88|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  350|     88|			    FWUPD_ERROR_READ,
  351|     88|			    "attempted to read 0x%02x bytes at offset 0x%02x from buffer of 0x%02x",
  352|     88|			    (guint)n,
  353|     88|			    (guint)offset,
  354|     88|			    (guint)bufsz);
  355|     88|		return FALSE;
  ------------------
  |  |  814|     88|#define	FALSE	(0)
  ------------------
  356|     88|	}
  357|   472k|	return TRUE;
  ------------------
  |  |  818|   472k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   472k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  358|   473k|}

fu_partial_input_stream_new:
  160|   428k|{
  161|   428k|	gsize base_sz = 0;
  162|   428k|	g_autoptr(FuPartialInputStream) self = g_object_new(FU_TYPE_PARTIAL_INPUT_STREAM, NULL);
  ------------------
  |  | 1162|   428k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   428k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
              	g_autoptr(FuPartialInputStream) self = g_object_new(FU_TYPE_PARTIAL_INPUT_STREAM, NULL);
  ------------------
  |  |   11|   428k|#define FU_TYPE_PARTIAL_INPUT_STREAM (fu_partial_input_stream_get_type())
  ------------------
  163|       |
  164|   428k|	g_return_val_if_fail(G_IS_INPUT_STREAM(stream), NULL);
  ------------------
  |  |  643|   428k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   428k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   428k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   428k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   428k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   428k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   428k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.99M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 428k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 428k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 428k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 428k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   428k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   428k|   else                                         \
  |  |  |  |  |  | 1021|   428k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   428k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   428k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 428k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   428k|      { } \
  |  |  646|   428k|    else \
  |  |  647|   428k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuPartialInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   428k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   428k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 428k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  165|   428k|	g_return_val_if_fail(error == NULL || *error == NULL, NULL);
  ------------------
  |  |  643|   428k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   428k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   428k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   428k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   428k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   428k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   428k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   856k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 428k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   428k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   428k|   else                                         \
  |  |  |  |  |  | 1021|   428k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   428k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   428k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 428k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   428k|      { } \
  |  |  646|   428k|    else \
  |  |  647|   428k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuPartialInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   428k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   428k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 428k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  166|       |
  167|   428k|	self->base_stream = g_object_ref(stream);
  ------------------
  |  |  523|   428k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
  168|   428k|	self->offset = offset;
  169|       |
  170|       |	/* sanity check */
  171|   428k|	if (!fu_input_stream_size(stream, &base_sz, error)) {
  ------------------
  |  Branch (171:6): [True: 0, False: 428k]
  ------------------
  172|      0|		g_prefix_error_literal(error, "failed to get size: ");
  ------------------
  |  |   11|      0|#define g_prefix_error_literal	  g_prefix_error
  ------------------
  173|      0|		return NULL;
  174|      0|	}
  175|   428k|	if (size == G_MAXSIZE) {
  ------------------
  |  |   84|   428k|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|   428k|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  |  Branch (175:6): [True: 0, False: 428k]
  ------------------
  176|      0|		if (offset > base_sz) {
  ------------------
  |  Branch (176:7): [True: 0, False: 0]
  ------------------
  177|      0|			g_set_error(error,
  178|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  179|      0|				    FWUPD_ERROR_INVALID_DATA,
  180|      0|				    "base stream was 0x%x bytes in size "
  181|      0|				    "and tried to create partial stream @0x%x",
  182|      0|				    (guint)base_sz,
  183|      0|				    (guint)offset);
  184|      0|			return NULL;
  185|      0|		}
  186|      0|		self->size = base_sz - offset;
  187|   428k|	} else {
  188|   428k|		if (fu_size_checked_add(offset, size) > base_sz) {
  ------------------
  |  Branch (188:7): [True: 0, False: 428k]
  ------------------
  189|      0|			g_set_error(error,
  190|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  191|      0|				    FWUPD_ERROR_INVALID_DATA,
  192|      0|				    "base stream was 0x%x bytes in size, and tried to create "
  193|      0|				    "partial stream @0x%x of 0x%x bytes",
  194|      0|				    (guint)base_sz,
  195|      0|				    (guint)offset,
  196|      0|				    (guint)size);
  197|      0|			return NULL;
  198|      0|		}
  199|   428k|		self->size = size;
  200|   428k|	}
  201|       |
  202|       |	/* success */
  203|   428k|	return G_INPUT_STREAM(g_steal_pointer(&self));
  ------------------
  |  |   33|   428k|#define G_INPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_INPUT_STREAM, GInputStream))
  |  |  ------------------
  |  |  |  |  484|   428k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   428k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  204|   428k|}
fu-partial-input-stream.c:fu_partial_input_stream_class_init:
  272|      1|{
  273|      1|	GObjectClass *object_class = G_OBJECT_CLASS(klass);
  ------------------
  |  |   63|      1|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  274|      1|	GInputStreamClass *istream_class = G_INPUT_STREAM_CLASS(klass);
  ------------------
  |  |   34|      1|#define G_INPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_INPUT_STREAM, GInputStreamClass))
  |  |  ------------------
  |  |  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  275|      1|	istream_class->read_fn = fu_partial_input_stream_read;
  276|      1|	object_class->finalize = fu_partial_input_stream_finalize;
  277|      1|}
fu-partial-input-stream.c:fu_partial_input_stream_read:
  246|   684k|{
  247|   684k|	FuPartialInputStream *self = FU_PARTIAL_INPUT_STREAM(stream);
  248|   684k|	g_return_val_if_fail(FU_IS_PARTIAL_INPUT_STREAM(self), -1);
  ------------------
  |  |  643|   684k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   684k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   684k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   684k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   684k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   684k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   684k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   684k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 684k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   684k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   684k|   else                                         \
  |  |  |  |  |  | 1021|   684k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   684k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   684k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 684k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   684k|      { } \
  |  |  646|   684k|    else \
  |  |  647|   684k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuPartialInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   684k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   684k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 684k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  249|   684k|	g_return_val_if_fail(error == NULL || *error == NULL, -1);
  ------------------
  |  |  643|   684k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   684k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   684k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   684k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   684k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   684k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   684k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.05M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 684k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 684k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   684k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   684k|   else                                         \
  |  |  |  |  |  | 1021|   684k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   684k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   684k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 684k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   684k|      { } \
  |  |  646|   684k|    else \
  |  |  647|   684k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuPartialInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   684k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   684k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 684k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|   684k|	if (self->size < (gsize)g_seekable_tell(G_SEEKABLE(stream))) {
  ------------------
  |  |   33|   684k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   684k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   684k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (250:6): [True: 0, False: 684k]
  ------------------
  251|      0|		g_set_error_literal(error,
  252|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  253|      0|				    FWUPD_ERROR_INVALID_DATA,
  254|      0|				    "base stream is outside seekable range");
  255|      0|		return -1;
  256|      0|	}
  257|   684k|	count = MIN(count, self->size - g_seekable_tell(G_SEEKABLE(stream)));
  ------------------
  |  |  825|   684k|#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (825:21): [True: 539k, False: 145k]
  |  |  ------------------
  ------------------
  258|   684k|	return g_input_stream_read(self->base_stream, buffer, count, cancellable, error);
  259|   684k|}
fu-partial-input-stream.c:fu_partial_input_stream_finalize:
  263|   428k|{
  264|   428k|	FuPartialInputStream *self = FU_PARTIAL_INPUT_STREAM(object);
  265|   428k|	if (self->base_stream != NULL)
  ------------------
  |  Branch (265:6): [True: 428k, False: 0]
  ------------------
  266|   428k|		g_object_unref(self->base_stream);
  267|   428k|	G_OBJECT_CLASS(fu_partial_input_stream_parent_class)->finalize(object);
  ------------------
  |  |   63|   428k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|   428k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|   428k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  268|   428k|}
fu-partial-input-stream.c:fu_partial_input_stream_init:
  281|   428k|{
  282|   428k|}
fu-partial-input-stream.c:fu_partial_input_stream_seekable_iface_init:
  137|      1|{
  138|      1|	iface->tell = fu_partial_input_stream_tell;
  139|      1|	iface->can_seek = fu_partial_input_stream_can_seek;
  140|      1|	iface->seek = fu_partial_input_stream_seek;
  141|      1|	iface->can_truncate = fu_partial_input_stream_can_truncate;
  142|      1|	iface->truncate_fn = fu_partial_input_stream_truncate;
  143|      1|}
fu-partial-input-stream.c:fu_partial_input_stream_tell:
   70|  1.51M|{
   71|  1.51M|	FuPartialInputStream *self = FU_PARTIAL_INPUT_STREAM(seekable);
   72|  1.51M|	return g_seekable_tell(G_SEEKABLE(self->base_stream)) - self->offset;
  ------------------
  |  |   33|  1.51M|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|  1.51M|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|  1.51M|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   73|  1.51M|}
fu-partial-input-stream.c:fu_partial_input_stream_can_seek:
   77|   677k|{
   78|   677k|	FuPartialInputStream *self = FU_PARTIAL_INPUT_STREAM(seekable);
   79|   677k|	return g_seekable_can_seek(G_SEEKABLE(self->base_stream));
  ------------------
  |  |   33|   677k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   677k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   677k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   80|   677k|}
fu-partial-input-stream.c:fu_partial_input_stream_seek:
   88|   677k|{
   89|   677k|	FuPartialInputStream *self = FU_PARTIAL_INPUT_STREAM(seekable);
   90|       |
   91|   677k|	g_return_val_if_fail(FU_IS_PARTIAL_INPUT_STREAM(self), FALSE);
  ------------------
  |  |  643|   677k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   677k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   677k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   677k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   677k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   677k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   677k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   677k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 677k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   677k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   677k|   else                                         \
  |  |  |  |  |  | 1021|   677k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   677k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   677k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 677k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   677k|      { } \
  |  |  646|   677k|    else \
  |  |  647|   677k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuPartialInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   677k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   677k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 677k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   92|   677k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   677k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   677k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   677k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   677k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   677k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   677k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   677k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.35M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 677k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   677k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   677k|   else                                         \
  |  |  |  |  |  | 1021|   677k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   677k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   677k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 677k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   677k|      { } \
  |  |  646|   677k|    else \
  |  |  647|   677k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuPartialInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   677k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   677k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 677k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   93|       |
   94|   677k|	if (type == G_SEEK_CUR) {
  ------------------
  |  Branch (94:6): [True: 0, False: 677k]
  ------------------
   95|      0|		goffset pos = g_seekable_tell(G_SEEKABLE(self->base_stream));
  ------------------
  |  |   33|      0|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   96|      0|		return g_seekable_seek(G_SEEKABLE(self->base_stream),
  ------------------
  |  |   33|      0|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   97|      0|				       self->offset + pos + offset,
   98|      0|				       G_SEEK_SET,
   99|      0|				       cancellable,
  100|      0|				       error);
  101|      0|	}
  102|   677k|	if (type == G_SEEK_END) {
  ------------------
  |  Branch (102:6): [True: 0, False: 677k]
  ------------------
  103|      0|		return g_seekable_seek(G_SEEKABLE(self->base_stream),
  ------------------
  |  |   33|      0|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  104|      0|				       self->offset + self->size + offset,
  105|      0|				       G_SEEK_SET,
  106|      0|				       cancellable,
  107|      0|				       error);
  108|      0|	}
  109|   677k|	return g_seekable_seek(G_SEEKABLE(self->base_stream),
  ------------------
  |  |   33|   677k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   677k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   677k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  110|   677k|			       self->offset + offset,
  111|   677k|			       G_SEEK_SET,
  112|   677k|			       cancellable,
  113|   677k|			       error);
  114|   677k|}
fu-partial-input-stream.c:fu_partial_input_stream_codec_iface_init:
   64|      1|{
   65|      1|	iface->add_string = fu_partial_input_stream_add_string;
   66|      1|}

fu-udev-device.c:fu_udev_device_class_init:
 2639|      1|{
 2640|      1|	FuDeviceClass *device_class = FU_DEVICE_CLASS(klass);
 2641|      1|	GObjectClass *object_class = G_OBJECT_CLASS(klass);
  ------------------
  |  |   63|      1|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2642|      1|	GParamSpec *pspec;
 2643|       |
 2644|      1|	object_class->finalize = fu_udev_device_finalize;
 2645|      1|	object_class->get_property = fu_udev_device_get_property;
 2646|      1|	object_class->set_property = fu_udev_device_set_property;
 2647|      1|	device_class->probe = fu_udev_device_probe;
 2648|      1|	device_class->rescan = fu_udev_device_rescan;
 2649|      1|	device_class->incorporate = fu_udev_device_incorporate;
 2650|      1|	device_class->invalidate = fu_udev_device_invalidate;
 2651|      1|	device_class->open = fu_udev_device_open;
 2652|      1|	device_class->close = fu_udev_device_close;
 2653|      1|	device_class->to_string = fu_udev_device_to_string;
 2654|      1|	device_class->bind_driver = fu_udev_device_bind_driver;
 2655|      1|	device_class->unbind_driver = fu_udev_device_unbind_driver;
 2656|      1|	device_class->probe_complete = fu_udev_device_probe_complete;
 2657|      1|	device_class->from_json = fu_udev_device_from_json;
 2658|      1|	device_class->add_json = fu_udev_device_add_json;
 2659|       |
 2660|       |	/**
 2661|       |	 * FuUdevDevice::changed:
 2662|       |	 * @self: the #FuUdevDevice instance that emitted the signal
 2663|       |	 *
 2664|       |	 * The ::changed signal is emitted when the low-level GUdevDevice has changed.
 2665|       |	 *
 2666|       |	 * Since: 1.1.2
 2667|       |	 **/
 2668|      1|	signals[SIGNAL_CHANGED] = g_signal_new("changed",
 2669|      1|					       G_TYPE_FROM_CLASS(object_class),
  ------------------
  |  |  613|      1|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  ------------------
 2670|      1|					       G_SIGNAL_RUN_LAST,
 2671|      1|					       0,
 2672|      1|					       NULL,
 2673|      1|					       NULL,
 2674|      1|					       g_cclosure_marshal_VOID__VOID,
 2675|      1|					       G_TYPE_NONE,
  ------------------
  |  |   62|      1|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2676|      1|					       0);
 2677|       |
 2678|       |	/**
 2679|       |	 * FuUdevDevice:subsystem:
 2680|       |	 *
 2681|       |	 * The device subsystem.
 2682|       |	 *
 2683|       |	 * Since: 1.1.2
 2684|       |	 */
 2685|      1|	pspec = g_param_spec_string("subsystem",
 2686|      1|				    NULL,
 2687|      1|				    NULL,
 2688|      1|				    NULL,
 2689|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 2690|      1|	g_object_class_install_property(object_class, PROP_SUBSYSTEM, pspec);
 2691|       |
 2692|       |	/**
 2693|       |	 * FuUdevDevice:bind-id:
 2694|       |	 *
 2695|       |	 * The bind ID to use when binding a new driver.
 2696|       |	 *
 2697|       |	 * Since: 1.7.2
 2698|       |	 */
 2699|      1|	pspec = g_param_spec_string("bind-id",
 2700|      1|				    NULL,
 2701|      1|				    NULL,
 2702|      1|				    NULL,
 2703|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 2704|      1|	g_object_class_install_property(object_class, PROP_BIND_ID, pspec);
 2705|       |
 2706|       |	/**
 2707|       |	 * FuUdevDevice:driver:
 2708|       |	 *
 2709|       |	 * The driver being used for the device.
 2710|       |	 *
 2711|       |	 * Since: 1.5.3
 2712|       |	 */
 2713|      1|	pspec = g_param_spec_string("driver",
 2714|      1|				    NULL,
 2715|      1|				    NULL,
 2716|      1|				    NULL,
 2717|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 2718|      1|	g_object_class_install_property(object_class, PROP_DRIVER, pspec);
 2719|       |
 2720|       |	/**
 2721|       |	 * FuUdevDevice:device-file:
 2722|       |	 *
 2723|       |	 * The low level file to use for device access.
 2724|       |	 *
 2725|       |	 * Since: 1.3.1
 2726|       |	 */
 2727|      1|	pspec = g_param_spec_string("device-file",
 2728|      1|				    NULL,
 2729|      1|				    NULL,
 2730|      1|				    NULL,
 2731|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 2732|      1|	g_object_class_install_property(object_class, PROP_DEVICE_FILE, pspec);
 2733|       |
 2734|       |	/**
 2735|       |	 * FuUdevDevice:devtype:
 2736|       |	 *
 2737|       |	 * The device type.
 2738|       |	 *
 2739|       |	 * Since: 2.0.0
 2740|       |	 */
 2741|      1|	pspec = g_param_spec_string("devtype",
 2742|      1|				    NULL,
 2743|      1|				    NULL,
 2744|       |				    NULL,
 2745|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 2746|      1|	g_object_class_install_property(object_class, PROP_DEVTYPE, pspec);
 2747|      1|}
fu-udev-device.c:fu_udev_device_finalize:
 2591|    832|{
 2592|    832|	FuUdevDevice *self = FU_UDEV_DEVICE(object);
 2593|    832|	FuUdevDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   72|    832|#define GET_PRIVATE(o) (fu_udev_device_get_instance_private(o))
  ------------------
 2594|       |
 2595|    832|	g_hash_table_unref(priv->properties);
 2596|    832|	g_free(priv->subsystem);
 2597|    832|	g_free(priv->devtype);
 2598|    832|	g_free(priv->bind_id);
 2599|    832|	g_free(priv->driver);
 2600|    832|	g_free(priv->device_file);
 2601|    832|	if (priv->io_channel != NULL)
  ------------------
  |  Branch (2601:6): [True: 0, False: 832]
  ------------------
 2602|      0|		g_object_unref(priv->io_channel);
 2603|       |
 2604|    832|	G_OBJECT_CLASS(fu_udev_device_parent_class)->finalize(object);
  ------------------
  |  |   63|    832|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|    832|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|    832|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2605|    832|}
fu-udev-device.c:fu_udev_device_init:
 2621|    832|{
 2622|    832|	FuUdevDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   72|    832|#define GET_PRIVATE(o) (fu_udev_device_get_instance_private(o))
  ------------------
 2623|    832|	priv->properties = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
 2624|    832|	fu_device_set_acquiesce_delay(FU_DEVICE(self), 2500);
 2625|    832|	fu_device_add_flag(FU_DEVICE(self), FWUPD_DEVICE_FLAG_CAN_EMULATION_TAG);
 2626|    832|	fu_device_register_private_flag(FU_DEVICE(self), FU_UDEV_DEVICE_FLAG_SYSFS_USE_PHYSICAL_ID);
  ------------------
  |  |   32|    832|#define FU_UDEV_DEVICE_FLAG_SYSFS_USE_PHYSICAL_ID "sysfs-use-physical-id"
  ------------------
 2627|    832|	g_signal_connect(FU_DEVICE(self),
  ------------------
  |  |  501|    832|    g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
  ------------------
 2628|    832|			 "notify::vid",
 2629|    832|			 G_CALLBACK(fu_udev_device_vid_notify_cb),
 2630|    832|			 NULL);
 2631|       |	g_signal_connect(FU_DEVICE(self),
  ------------------
  |  |  501|    832|    g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
  ------------------
 2632|    832|			 "notify::pid",
 2633|    832|			 G_CALLBACK(fu_udev_device_pid_notify_cb),
 2634|    832|			 NULL);
 2635|    832|}
fu-udev-device.c:fu_udev_device_vid_notify_cb:
 2609|    676|{
 2610|    676|	fu_device_add_instance_u16(device, "VEN", fu_device_get_vid(device));
 2611|    676|}
fu-udev-device.c:fu_udev_device_pid_notify_cb:
 2615|    697|{
 2616|    697|	fu_device_add_instance_u16(device, "DEV", fu_device_get_pid(device));
 2617|    697|}

fu_usb_config_descriptor_new:
  163|   169k|{
  164|   169k|	return FU_USB_CONFIG_DESCRIPTOR(g_object_new(FU_TYPE_USB_CONFIG_DESCRIPTOR, NULL));
  ------------------
  |  |   11|   169k|#define FU_TYPE_USB_CONFIG_DESCRIPTOR (fu_usb_config_descriptor_get_type())
  ------------------
  165|   169k|}
fu-usb-config-descriptor.c:fu_usb_config_descriptor_class_init:
  143|      1|{
  144|      1|	FuFirmwareClass *firmware_class = FU_FIRMWARE_CLASS(klass);
  145|      1|	firmware_class->parse = fu_usb_config_descriptor_parse;
  146|      1|}
fu-usb-config-descriptor.c:fu_usb_config_descriptor_parse:
  119|   169k|{
  120|   169k|	FuUsbConfigDescriptor *self = FU_USB_CONFIG_DESCRIPTOR(firmware);
  121|   169k|	g_autoptr(FuUsbDescriptorHdr) st = NULL;
  ------------------
  |  | 1162|   169k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   169k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  122|       |
  123|       |	/* parse */
  124|   169k|	st = fu_usb_descriptor_hdr_parse_stream(stream, 0x0, error);
  125|   169k|	if (st == NULL)
  ------------------
  |  Branch (125:6): [True: 35, False: 169k]
  ------------------
  126|     35|		return FALSE;
  ------------------
  |  |  814|     35|#define	FALSE	(0)
  ------------------
  127|   169k|	self->configuration = fu_usb_descriptor_hdr_get_configuration(st);
  128|   169k|	self->configuration_value = fu_usb_descriptor_hdr_get_configuration_value(st);
  129|       |
  130|       |	/* success */
  131|   169k|	return TRUE;
  ------------------
  |  |  818|   169k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   169k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  132|   169k|}
fu-usb-config-descriptor.c:fu_usb_config_descriptor_init:
  150|   169k|{
  151|   169k|	fu_firmware_set_size_max(FU_FIRMWARE(self), 1 * FU_MB);
  ------------------
  |  |   79|   169k|#define FU_MB (1ull << 20)
  ------------------
  152|   169k|}
fu-usb-config-descriptor.c:fu_usb_config_descriptor_codec_iface_init:
  136|      1|{
  137|      1|	iface->add_json = fu_usb_config_descriptor_add_json;
  138|      1|	iface->from_json = fu_usb_config_descriptor_from_json;
  139|      1|}

fu-usb-descriptor.c:fu_usb_descriptor_class_init:
   35|      1|{
   36|      1|	FuFirmwareClass *firmware_class = FU_FIRMWARE_CLASS(klass);
   37|      1|	firmware_class->parse = fu_usb_descriptor_parse;
   38|      1|}
fu-usb-descriptor.c:fu_usb_descriptor_parse:
   19|   249k|{
   20|   249k|	g_autoptr(FuUsbBaseHdr) st = NULL;
  ------------------
  |  | 1162|   249k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   249k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
   21|       |
   22|       |	/* parse */
   23|   249k|	st = fu_usb_base_hdr_parse_stream(stream, 0x0, error);
   24|   249k|	if (st == NULL)
  ------------------
  |  Branch (24:6): [True: 188, False: 249k]
  ------------------
   25|    188|		return FALSE;
  ------------------
  |  |  814|    188|#define	FALSE	(0)
  ------------------
   26|   249k|	fu_firmware_set_size(firmware, fu_usb_base_hdr_get_length(st));
   27|   249k|	fu_firmware_set_idx(firmware, fu_usb_base_hdr_get_descriptor_type(st));
   28|       |
   29|       |	/* success */
   30|   249k|	return TRUE;
  ------------------
  |  |  818|   249k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   249k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
   31|   249k|}
fu-usb-descriptor.c:fu_usb_descriptor_init:
   42|   430k|{
   43|   430k|	fu_firmware_set_size_max(FU_FIRMWARE(self), 1 * FU_MB);
  ------------------
  |  |   79|   430k|#define FU_MB (1ull << 20)
  ------------------
   44|   430k|}

fu-usb-device.c:fu_usb_device_class_init:
 3190|      1|{
 3191|      1|	GObjectClass *object_class = G_OBJECT_CLASS(klass);
  ------------------
  |  |   63|      1|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3192|      1|	FuDeviceClass *device_class = FU_DEVICE_CLASS(klass);
 3193|      1|	GParamSpec *pspec;
 3194|       |
 3195|      1|	object_class->finalize = fu_usb_device_finalize;
 3196|      1|	object_class->get_property = fu_usb_device_get_property;
 3197|      1|	object_class->set_property = fu_usb_device_set_property;
 3198|      1|	device_class->open = fu_usb_device_open;
 3199|      1|	device_class->setup = fu_usb_device_setup;
 3200|      1|	device_class->ready = fu_usb_device_ready;
 3201|      1|	device_class->close = fu_usb_device_close;
 3202|      1|	device_class->probe = fu_usb_device_probe;
 3203|      1|	device_class->invalidate = fu_usb_device_invalidate;
 3204|      1|	device_class->to_string = fu_usb_device_to_string;
 3205|      1|	device_class->incorporate = fu_usb_device_incorporate;
 3206|      1|	device_class->convert_version = fu_usb_device_convert_version;
 3207|      1|	device_class->from_json = fu_usb_device_from_json;
 3208|      1|	device_class->add_json = fu_usb_device_add_json;
 3209|       |
 3210|       |	/* used as device flags */
 3211|      1|	quarks[QUARK_ADD_INSTANCE_ID_REV] =
 3212|      1|	    g_quark_from_static_string(FU_DEVICE_PRIVATE_FLAG_ADD_INSTANCE_ID_REV);
  ------------------
  |  |  459|      1|#define FU_DEVICE_PRIVATE_FLAG_ADD_INSTANCE_ID_REV "add-instance-id-rev"
  ------------------
 3213|       |
 3214|       |	/**
 3215|       |	 * FuUsbDevice:libusb-device:
 3216|       |	 *
 3217|       |	 * The low-level #libusb_device.
 3218|       |	 *
 3219|       |	 * Since: 2.0.0
 3220|       |	 */
 3221|      1|	pspec =
 3222|      1|	    g_param_spec_pointer("libusb-device",
 3223|      1|				 NULL,
 3224|       |				 NULL,
 3225|      1|				 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 3226|      1|	g_object_class_install_property(object_class, PROP_LIBUSB_DEVICE, pspec);
 3227|      1|}
fu-usb-device.c:fu_usb_device_finalize:
  254|    832|{
  255|    832|	FuUsbDevice *self = FU_USB_DEVICE(object);
  256|    832|	FuUsbDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   85|    832|#define GET_PRIVATE(o) (fu_usb_device_get_instance_private(o))
  ------------------
  257|       |
  258|    832|	if (priv->handle != NULL)
  ------------------
  |  Branch (258:6): [True: 0, False: 832]
  ------------------
  259|      0|		libusb_close(priv->handle);
  260|    832|	if (priv->usb_device != NULL)
  ------------------
  |  Branch (260:6): [True: 0, False: 832]
  ------------------
  261|      0|		libusb_unref_device(priv->usb_device);
  262|    832|	if (priv->device_interfaces != NULL)
  ------------------
  |  Branch (262:6): [True: 0, False: 832]
  ------------------
  263|      0|		g_ptr_array_unref(priv->device_interfaces);
  264|    832|	g_ptr_array_unref(priv->interfaces);
  265|    832|	g_ptr_array_unref(priv->bos_descriptors);
  266|    832|	g_ptr_array_unref(priv->hid_descriptors);
  267|    832|	g_ptr_array_unref(priv->cfg_descriptors);
  268|       |
  269|    832|	G_OBJECT_CLASS(fu_usb_device_parent_class)->finalize(object);
  ------------------
  |  |   63|    832|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|    832|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|    832|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  270|    832|}
fu-usb-device.c:fu_usb_device_set_property:
  240|    832|{
  241|    832|	FuUsbDevice *self = FU_USB_DEVICE(object);
  242|    832|	switch (prop_id) {
  243|    832|	case PROP_LIBUSB_DEVICE:
  ------------------
  |  Branch (243:2): [True: 832, False: 0]
  ------------------
  244|    832|		fu_usb_device_set_dev(self, g_value_get_pointer(value));
  245|    832|		break;
  246|      0|	default:
  ------------------
  |  Branch (246:2): [True: 0, False: 832]
  ------------------
  247|      0|		G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
  ------------------
  |  |  679|      0|    G_OBJECT_WARN_INVALID_PSPEC ((object), "property", (property_id), (pspec))
  |  |  ------------------
  |  |  |  |  656|      0|#define G_OBJECT_WARN_INVALID_PSPEC(object, pname, property_id, pspec) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  657|      0|G_STMT_START { \
  |  |  |  |  658|      0|  GObject *_glib__object = (GObject*) (object); \
  |  |  |  |  659|      0|  GParamSpec *_glib__pspec = (GParamSpec*) (pspec); \
  |  |  |  |  660|      0|  guint _glib__property_id = (property_id); \
  |  |  |  |  661|      0|  g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'", \
  |  |  |  |  ------------------
  |  |  |  |  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |    9|      0|#define G_LOG_DOMAIN "FuUsbDevice"
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  |  |  |  |  347|      0|                               __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  662|      0|             __FILE__, __LINE__, \
  |  |  |  |  663|      0|             (pname), \
  |  |  |  |  664|      0|             _glib__property_id, \
  |  |  |  |  665|      0|             _glib__pspec->name, \
  |  |  |  |  666|      0|             g_type_name (G_PARAM_SPEC_TYPE (_glib__pspec)), \
  |  |  |  |  667|      0|             G_OBJECT_TYPE_NAME (_glib__object)); \
  |  |  |  |  668|      0|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  248|      0|		break;
  249|    832|	}
  250|    832|}
fu-usb-device.c:fu_usb_device_set_dev:
  202|    832|{
  203|    832|	FuUsbDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   85|    832|#define GET_PRIVATE(o) (fu_usb_device_get_instance_private(o))
  ------------------
  204|       |
  205|       |	/* allow replacement */
  206|    832|	g_clear_pointer(&priv->usb_device, libusb_unref_device);
  ------------------
  |  |  120|    832|  G_STMT_START                                           \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  121|    832|  {                                                      \
  |  |  122|    832|    G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \
  |  |  ------------------
  |  |  |  |  758|    832|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  ------------------
  |  |  123|    832|    glib_typeof ((pp)) _pp = (pp);                       \
  |  |  ------------------
  |  |  |  |  238|    832|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  124|    832|    glib_typeof (*(pp)) _ptr = *_pp;                     \
  |  |  ------------------
  |  |  |  |  238|    832|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  125|    832|    *_pp = NULL;                                         \
  |  |  126|    832|    if (_ptr)                                            \
  |  |  ------------------
  |  |  |  Branch (126:9): [True: 0, False: 832]
  |  |  ------------------
  |  |  127|    832|      (destroy) (_ptr);                                  \
  |  |  128|    832|  }                                                      \
  |  |  129|    832|  G_STMT_END                                             \
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  130|    832|  GLIB_AVAILABLE_MACRO_IN_2_34
  ------------------
  207|    832|	if (usb_device != NULL)
  ------------------
  |  Branch (207:6): [True: 0, False: 832]
  ------------------
  208|      0|		priv->usb_device = libusb_ref_device(usb_device);
  209|    832|}
fu-usb-device.c:fu_usb_device_add_interface_internal:
 1375|  77.1k|{
 1376|  77.1k|	FuUsbDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   85|  77.1k|#define GET_PRIVATE(o) (fu_usb_device_get_instance_private(o))
  ------------------
 1377|  77.1k|	g_ptr_array_add(priv->interfaces, g_object_ref(iface));
  ------------------
  |  |  523|  77.1k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
 1378|  77.1k|}
fu-usb-device.c:fu_usb_device_init:
  274|    832|{
  275|    832|	FuUsbDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   85|    832|#define GET_PRIVATE(o) (fu_usb_device_get_instance_private(o))
  ------------------
  276|    832|	priv->configuration = -1;
  277|    832|	priv->interfaces = g_ptr_array_new_with_free_func((GDestroyNotify)g_object_unref);
  278|    832|	priv->bos_descriptors = g_ptr_array_new_with_free_func((GDestroyNotify)g_object_unref);
  279|    832|	priv->cfg_descriptors = g_ptr_array_new_with_free_func((GDestroyNotify)g_object_unref);
  280|    832|	priv->hid_descriptors = g_ptr_array_new_with_free_func((GDestroyNotify)g_object_unref);
  281|    832|	fu_device_set_acquiesce_delay(FU_DEVICE(self), 2500);
  282|    832|	fu_device_register_private_flag(FU_DEVICE(self), FU_DEVICE_PRIVATE_FLAG_HAS_DS20);
  ------------------
  |  |  723|    832|#define FU_DEVICE_PRIVATE_FLAG_HAS_DS20 "has-ds20"
  ------------------
  283|    832|	fu_device_retry_add_recovery(FU_DEVICE(self),
  284|    832|				     FWUPD_ERROR,
  ------------------
  |  |   15|    832|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  285|    832|				     FWUPD_ERROR_PERMISSION_DENIED,
  286|    832|				     NULL);
  287|    832|	g_signal_connect(FU_DEVICE(self),
  ------------------
  |  |  501|    832|    g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
  ------------------
  288|    832|			 "notify::vid",
  289|    832|			 G_CALLBACK(fu_usb_device_vid_notify_cb),
  290|    832|			 NULL);
  291|       |	g_signal_connect(FU_DEVICE(self),
  ------------------
  |  |  501|    832|    g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
  ------------------
  292|    832|			 "notify::pid",
  293|    832|			 G_CALLBACK(fu_usb_device_pid_notify_cb),
  294|    832|			 NULL);
  295|    832|}
fu-usb-device.c:fu_usb_device_vid_notify_cb:
  213|    676|{
  214|    676|	fu_device_add_instance_u16(device, "VID", fu_device_get_vid(device));
  215|    676|}
fu-usb-device.c:fu_usb_device_pid_notify_cb:
  219|    697|{
  220|    697|	fu_device_add_instance_u16(device, "PID", fu_device_get_pid(device));
  221|    697|}
fu-usb-device.c:fu_usb_device_fuzzer_iface_init:
 3183|      1|{
 3184|      1|	iface->test_input = fu_usb_device_fuzzer_test_input;
 3185|      1|	iface->build_example = fu_usb_device_fuzzer_build_example;
 3186|      1|}
fu-usb-device.c:fu_usb_device_fuzzer_test_input:
 3165|    832|{
 3166|    832|	FuUsbDevice *self = FU_USB_DEVICE(fuzzer);
 3167|    832|	return fu_usb_device_parse_descriptor(self, blob, error);
 3168|    832|}
fu-usb-device.c:fu_usb_device_parse_descriptor:
 1822|    832|{
 1823|    832|	FuUsbDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   85|    832|#define GET_PRIVATE(o) (fu_usb_device_get_instance_private(o))
  ------------------
 1824|    832|	gsize offset = 0;
 1825|    832|	g_autoptr(FuUsbDeviceHdr) st = NULL;
  ------------------
  |  | 1162|    832|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|    832|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1826|    832|	g_autoptr(FuUsbInterface) iface_last = NULL;
  ------------------
  |  | 1162|    832|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|    832|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1827|       |
 1828|       |	/* sanity check */
 1829|    832|	if (g_bytes_get_size(blob) > FU_USB_DEVICE_DESCRIPTOR_SIZE_MAX) {
  ------------------
  |  |   90|    832|#define FU_USB_DEVICE_DESCRIPTOR_SIZE_MAX (18 + (64 * FU_KB)) /* dev descr + max-size raw descr */
  |  |  ------------------
  |  |  |  |   70|    832|#define FU_KB (1ull << 10)
  |  |  ------------------
  ------------------
  |  Branch (1829:6): [True: 6, False: 826]
  ------------------
 1830|      6|		g_set_error(error,
 1831|      6|			    FWUPD_ERROR,
  ------------------
  |  |   15|      6|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1832|      6|			    FWUPD_ERROR_INVALID_DATA,
 1833|      6|			    "USB descriptor was too large: limit is 0x%x bytes",
 1834|      6|			    (guint)FU_USB_DEVICE_DESCRIPTOR_SIZE_MAX);
  ------------------
  |  |   90|      6|#define FU_USB_DEVICE_DESCRIPTOR_SIZE_MAX (18 + (64 * FU_KB)) /* dev descr + max-size raw descr */
  |  |  ------------------
  |  |  |  |   70|      6|#define FU_KB (1ull << 10)
  |  |  ------------------
  ------------------
 1835|      6|		return FALSE;
  ------------------
  |  |  814|      6|#define	FALSE	(0)
  ------------------
 1836|      6|	}
 1837|       |
 1838|    826|	st = fu_usb_device_hdr_parse_bytes(blob, offset, error);
 1839|    826|	if (st == NULL)
  ------------------
  |  Branch (1839:6): [True: 75, False: 751]
  ------------------
 1840|     75|		return FALSE;
  ------------------
  |  |  814|     75|#define	FALSE	(0)
  ------------------
 1841|    751|	priv->desc.bLength = fu_usb_device_hdr_get_length(st);
 1842|    751|	priv->desc.bDescriptorType = FU_USB_DEVICE_HDR_DEFAULT_DESCRIPTOR_TYPE;
  ------------------
  |  |  311|    751|#define FU_USB_DEVICE_HDR_DEFAULT_DESCRIPTOR_TYPE FU_USB_DESCRIPTOR_KIND_DEVICE
  ------------------
 1843|    751|	priv->desc.bcdUSB = fu_usb_device_hdr_get_usb(st);
 1844|    751|	priv->desc.bDeviceClass = fu_usb_device_hdr_get_device_class(st);
 1845|    751|	priv->desc.bDeviceSubClass = fu_usb_device_hdr_get_device_sub_class(st);
 1846|    751|	priv->desc.bDeviceProtocol = fu_usb_device_hdr_get_device_protocol(st);
 1847|    751|	priv->desc.bMaxPacketSize0 = fu_usb_device_hdr_get_max_packet_size0(st);
 1848|    751|	fu_device_set_vid(FU_DEVICE(self), fu_usb_device_hdr_get_vendor(st));
 1849|    751|	fu_device_set_pid(FU_DEVICE(self), fu_usb_device_hdr_get_product(st));
 1850|    751|	priv->desc.bcdDevice = fu_usb_device_hdr_get_device(st);
 1851|    751|	priv->desc.iManufacturer = fu_usb_device_hdr_get_manufacturer_idx(st);
 1852|    751|	priv->desc.iProduct = fu_usb_device_hdr_get_product_idx(st);
 1853|    751|	priv->desc.iSerialNumber = fu_usb_device_hdr_get_serial_number_idx(st);
 1854|    751|	priv->desc.bNumConfigurations = fu_usb_device_hdr_get_num_configurations(st);
 1855|       |
 1856|    751|	offset += fu_usb_device_hdr_get_length(st);
 1857|   472k|	while (offset < g_bytes_get_size(blob)) {
  ------------------
  |  Branch (1857:9): [True: 472k, False: 225]
  ------------------
 1858|   472k|		FuUsbDescriptorKind descriptor_kind;
 1859|   472k|		g_autoptr(FuUsbBaseHdr) st_base = NULL;
  ------------------
  |  | 1162|   472k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   472k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1860|   472k|		g_autoptr(GError) error_local = NULL;
  ------------------
  |  | 1162|   472k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   472k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1861|       |
 1862|       |		/* this is common to all descriptor types */
 1863|   472k|		st_base = fu_usb_base_hdr_parse_bytes(blob, offset, &error_local);
 1864|   472k|		if (st_base == NULL) {
  ------------------
  |  Branch (1864:7): [True: 88, False: 472k]
  ------------------
 1865|     88|			if (g_error_matches(error_local, FWUPD_ERROR, FWUPD_ERROR_INVALID_FILE))
  ------------------
  |  |   15|     88|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  |  Branch (1865:8): [True: 0, False: 88]
  ------------------
 1866|      0|				break;
 1867|     88|			if (g_error_matches(error_local, FWUPD_ERROR, FWUPD_ERROR_INVALID_DATA))
  ------------------
  |  |   15|     88|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  |  Branch (1867:8): [True: 0, False: 88]
  ------------------
 1868|      0|				break;
 1869|     88|			g_propagate_error(error, g_steal_pointer(&error_local));
  ------------------
  |  |  222|     88|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
 1870|     88|			return FALSE;
  ------------------
  |  |  814|     88|#define	FALSE	(0)
  ------------------
 1871|     88|		}
 1872|       |
 1873|       |		/* sanity check */
 1874|   472k|		if (fu_usb_base_hdr_get_length(st_base) == 0) {
  ------------------
  |  Branch (1874:7): [True: 64, False: 472k]
  ------------------
 1875|     64|			g_set_error_literal(error,
 1876|     64|					    FWUPD_ERROR,
  ------------------
  |  |   15|     64|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1877|     64|					    FWUPD_ERROR_INVALID_DATA,
 1878|     64|					    "USB descriptor had impossible zero size");
 1879|     64|			return FALSE;
  ------------------
  |  |  814|     64|#define	FALSE	(0)
  ------------------
 1880|     64|		}
 1881|       |
 1882|       |		/* config, interface or endpoint */
 1883|   472k|		descriptor_kind = fu_usb_base_hdr_get_descriptor_type(st_base);
 1884|   472k|		if (descriptor_kind == FU_USB_DESCRIPTOR_KIND_CONFIG) {
  ------------------
  |  Branch (1884:7): [True: 169k, False: 302k]
  ------------------
 1885|   169k|			g_autoptr(FuUsbConfigDescriptor) cfg_descriptor =
  ------------------
  |  | 1162|   169k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   169k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1886|   169k|			    fu_usb_config_descriptor_new();
 1887|   169k|			if (!fu_firmware_parse_bytes(FU_FIRMWARE(cfg_descriptor),
  ------------------
  |  Branch (1887:8): [True: 35, False: 169k]
  ------------------
 1888|   169k|						     blob,
 1889|   169k|						     offset,
 1890|   169k|						     FU_FIRMWARE_PARSE_FLAG_NONE,
 1891|   169k|						     error))
 1892|     35|				return FALSE;
  ------------------
  |  |  814|     35|#define	FALSE	(0)
  ------------------
 1893|   169k|			g_ptr_array_add(priv->cfg_descriptors, g_steal_pointer(&cfg_descriptor));
  ------------------
  |  |  222|   169k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
 1894|   302k|		} else if (descriptor_kind == FU_USB_DESCRIPTOR_KIND_INTERFACE) {
  ------------------
  |  Branch (1894:14): [True: 77.3k, False: 225k]
  ------------------
 1895|  77.3k|			g_autoptr(FuUsbInterface) iface = g_object_new(FU_TYPE_USB_INTERFACE, NULL);
  ------------------
  |  | 1162|  77.3k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  77.3k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
              			g_autoptr(FuUsbInterface) iface = g_object_new(FU_TYPE_USB_INTERFACE, NULL);
  ------------------
  |  |   12|  77.3k|#define FU_TYPE_USB_INTERFACE (fu_usb_interface_get_type())
  ------------------
 1896|  77.3k|			if (!fu_firmware_parse_bytes(FU_FIRMWARE(iface),
  ------------------
  |  Branch (1896:8): [True: 232, False: 77.1k]
  ------------------
 1897|  77.3k|						     blob,
 1898|  77.3k|						     offset,
 1899|  77.3k|						     FU_FIRMWARE_PARSE_FLAG_NONE,
 1900|  77.3k|						     error))
 1901|    232|				return FALSE;
  ------------------
  |  |  814|    232|#define	FALSE	(0)
  ------------------
 1902|  77.1k|			fu_usb_device_add_interface_internal(self, iface);
 1903|       |
 1904|       |			/* the next descriptor is the custom one, so just add as a child */
 1905|  77.1k|			if (fu_usb_interface_get_class(iface) ==
  ------------------
  |  Branch (1905:8): [True: 16.6k, False: 60.5k]
  ------------------
 1906|  77.1k|			    FU_USB_CLASS_APPLICATION_SPECIFIC) {
 1907|  16.6k|				g_autoptr(FuUsbDescriptor) img =
  ------------------
  |  | 1162|  16.6k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  16.6k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1908|  16.6k|				    g_object_new(FU_TYPE_USB_DESCRIPTOR, NULL);
  ------------------
  |  |   12|  16.6k|#define FU_TYPE_USB_DESCRIPTOR (fu_usb_descriptor_get_type())
  ------------------
 1909|  16.6k|				if (!fu_firmware_parse_bytes(
  ------------------
  |  Branch (1909:9): [True: 57, False: 16.5k]
  ------------------
 1910|  16.6k|					FU_FIRMWARE(img),
 1911|  16.6k|					blob,
 1912|  16.6k|					offset + fu_usb_base_hdr_get_length(st_base),
 1913|  16.6k|					FU_FIRMWARE_PARSE_FLAG_CACHE_BLOB,
 1914|  16.6k|					error))
 1915|     57|					return FALSE;
  ------------------
  |  |  814|     57|#define	FALSE	(0)
  ------------------
 1916|  16.5k|				if (!fu_firmware_add_image(FU_FIRMWARE(iface),
  ------------------
  |  Branch (1916:9): [True: 0, False: 16.5k]
  ------------------
 1917|  16.5k|							   FU_FIRMWARE(img),
 1918|  16.5k|							   error))
 1919|      0|					return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1920|  16.5k|				if (!fu_size_checked_inc(&offset,
  ------------------
  |  Branch (1920:9): [True: 0, False: 16.5k]
  ------------------
 1921|  16.5k|							 fu_firmware_get_size(FU_FIRMWARE(img)),
 1922|  16.5k|							 error))
 1923|      0|					return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1924|  16.5k|			}
 1925|       |
 1926|  77.0k|			g_set_object(&iface_last, iface);
  ------------------
  |  |  750|  77.0k|  (G_GNUC_EXTENSION ({ \
  |  |  ------------------
  |  |  |  |   54|  77.0k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  751|  77.0k|    G_STATIC_ASSERT (sizeof *(object_ptr) == sizeof (new_object)); \
  |  |  ------------------
  |  |  |  |  758|  77.0k|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  ------------------
  |  |  752|  77.0k|    /* Only one access, please; work around type aliasing */ \
  |  |  753|  77.0k|    union { char *in; GObject **out; } _object_ptr; \
  |  |  754|  77.0k|    _object_ptr.in = (char *) (object_ptr); \
  |  |  755|  77.0k|    /* Check types match */ \
  |  |  756|  77.0k|    (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |                   (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \
  |  |  ------------------
  |  |  |  |  814|  77.0k|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (756:13): [Folded, False: 77.0k]
  |  |  ------------------
  |  |  757|  77.0k|    (g_set_object) (_object_ptr.out, (GObject *) new_object); \
  |  |  758|  77.0k|  })) \
  |  |  759|  77.0k|  GLIB_AVAILABLE_MACRO_IN_2_44
  ------------------
 1927|   225k|		} else if (descriptor_kind == FU_USB_DESCRIPTOR_KIND_ENDPOINT) {
  ------------------
  |  Branch (1927:14): [True: 25.9k, False: 199k]
  ------------------
 1928|  25.9k|			g_autoptr(FuUsbEndpoint) ep = g_object_new(FU_TYPE_USB_ENDPOINT, NULL);
  ------------------
  |  | 1162|  25.9k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  25.9k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
              			g_autoptr(FuUsbEndpoint) ep = g_object_new(FU_TYPE_USB_ENDPOINT, NULL);
  ------------------
  |  |   12|  25.9k|#define FU_TYPE_USB_ENDPOINT (fu_usb_endpoint_get_type())
  ------------------
 1929|  25.9k|			if (!fu_firmware_parse_bytes(FU_FIRMWARE(ep),
  ------------------
  |  Branch (1929:8): [True: 40, False: 25.9k]
  ------------------
 1930|  25.9k|						     blob,
 1931|  25.9k|						     offset,
 1932|  25.9k|						     FU_FIRMWARE_PARSE_FLAG_NONE,
 1933|  25.9k|						     error))
 1934|     40|				return FALSE;
  ------------------
  |  |  814|     40|#define	FALSE	(0)
  ------------------
 1935|  25.9k|			if (iface_last == NULL) {
  ------------------
  |  Branch (1935:8): [True: 14.3k, False: 11.5k]
  ------------------
 1936|  14.3k|				g_debug("endpoint 0x%x without prior interface, ignoring",
  ------------------
  |  |  351|  14.3k|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    9|  14.3k|#define G_LOG_DOMAIN "FuUsbDevice"
  |  |  ------------------
  |  |  352|  14.3k|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|  14.3k|                               __VA_ARGS__)
  ------------------
 1937|  14.3k|					fu_usb_endpoint_get_number(ep));
 1938|  14.3k|			} else {
 1939|  11.5k|				fu_usb_interface_add_endpoint(iface_last, ep);
 1940|  11.5k|			}
 1941|   199k|		} else if (descriptor_kind == FU_USB_DESCRIPTOR_KIND_HID) {
  ------------------
  |  Branch (1941:14): [True: 12.2k, False: 187k]
  ------------------
 1942|  12.2k|			g_autoptr(FuUsbHidDescriptor) hid_descriptor =
  ------------------
  |  | 1162|  12.2k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  12.2k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1943|  12.2k|			    g_object_new(FU_TYPE_USB_HID_DESCRIPTOR, NULL);
  ------------------
  |  |   11|  12.2k|#define FU_TYPE_USB_HID_DESCRIPTOR (fu_usb_hid_descriptor_get_type())
  ------------------
 1944|  12.2k|			if (!fu_firmware_parse_bytes(FU_FIRMWARE(hid_descriptor),
  ------------------
  |  Branch (1944:8): [True: 10, False: 12.2k]
  ------------------
 1945|  12.2k|						     blob,
 1946|  12.2k|						     offset,
 1947|  12.2k|						     FU_FIRMWARE_PARSE_FLAG_NONE,
 1948|  12.2k|						     error))
 1949|     10|				return FALSE;
  ------------------
  |  |  814|     10|#define	FALSE	(0)
  ------------------
 1950|  12.2k|			if (iface_last == NULL) {
  ------------------
  |  Branch (1950:8): [True: 593, False: 11.6k]
  ------------------
 1951|    593|				g_debug("hid descriptor without prior interface, ignoring");
  ------------------
  |  |  351|    593|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    9|    593|#define G_LOG_DOMAIN "FuUsbDevice"
  |  |  ------------------
  |  |  352|    593|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|    593|                               __VA_ARGS__)
  ------------------
 1952|  11.6k|			} else {
 1953|  11.6k|				fu_usb_hid_descriptor_set_iface_number(
 1954|  11.6k|				    hid_descriptor,
 1955|  11.6k|				    fu_usb_interface_get_number(iface_last));
 1956|  11.6k|				g_ptr_array_add(priv->hid_descriptors,
 1957|  11.6k|						g_steal_pointer(&hid_descriptor));
  ------------------
  |  |  222|  11.6k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
 1958|  11.6k|			}
 1959|   187k|		} else {
 1960|   187k|			const gchar *str = fu_usb_descriptor_kind_to_string(descriptor_kind);
 1961|   187k|			g_debug("usb descriptor type 0x%x [%s] not processed",
  ------------------
  |  |  351|   187k|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    9|   187k|#define G_LOG_DOMAIN "FuUsbDevice"
  |  |  ------------------
  |  |  352|   187k|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|   374k|                               __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (353:32): [True: 166k, False: 21.3k]
  |  |  ------------------
  ------------------
 1962|   187k|				descriptor_kind,
 1963|   187k|				str != NULL ? str : "unknown");
 1964|   187k|		}
 1965|   471k|		if (!fu_size_checked_inc(&offset, fu_usb_base_hdr_get_length(st_base), error))
  ------------------
  |  Branch (1965:7): [True: 0, False: 471k]
  ------------------
 1966|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1967|   471k|	}
 1968|       |
 1969|       |	/* success */
 1970|    225|	return TRUE;
  ------------------
  |  |  818|    225|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    225|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1971|    751|}

fu_usb_endpoint_get_number:
  184|  14.3k|{
  185|  14.3k|	g_return_val_if_fail(FU_IS_USB_ENDPOINT(self), 0);
  ------------------
  |  |  643|  14.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  14.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  14.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  14.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  14.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  14.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  14.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  14.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 14.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  14.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  14.3k|   else                                         \
  |  |  |  |  |  | 1021|  14.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  14.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  14.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 14.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  14.3k|      { } \
  |  |  646|  14.3k|    else \
  |  |  647|  14.3k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  14.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  14.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 14.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  186|  14.3k|	return (self->endpoint_descriptor.bEndpointAddress) & 0xf;
  187|  14.3k|}
fu-usb-endpoint.c:fu_usb_endpoint_class_init:
  252|      1|{
  253|      1|	FuFirmwareClass *firmware_class = FU_FIRMWARE_CLASS(klass);
  254|      1|	firmware_class->parse = fu_usb_endpoint_parse;
  255|      1|}
fu-usb-endpoint.c:fu_usb_endpoint_parse:
  213|  25.9k|{
  214|  25.9k|	FuUsbEndpoint *self = FU_USB_ENDPOINT(firmware);
  215|  25.9k|	g_autoptr(FuUsbEndpointHdr) st = NULL;
  ------------------
  |  | 1162|  25.9k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  25.9k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  216|       |
  217|       |	/* FuUsbDescriptor */
  218|  25.9k|	if (!FU_FIRMWARE_CLASS(fu_usb_endpoint_parent_class)->parse(firmware, stream, flags, error))
  ------------------
  |  Branch (218:6): [True: 0, False: 25.9k]
  ------------------
  219|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  220|       |
  221|       |	/* parse */
  222|  25.9k|	st = fu_usb_endpoint_hdr_parse_stream(stream, 0x0, error);
  223|  25.9k|	if (st == NULL)
  ------------------
  |  Branch (223:6): [True: 40, False: 25.9k]
  ------------------
  224|     40|		return FALSE;
  ------------------
  |  |  814|     40|#define	FALSE	(0)
  ------------------
  225|  25.9k|	self->endpoint_descriptor.bLength = fu_usb_endpoint_hdr_get_length(st);
  226|  25.9k|	self->endpoint_descriptor.bDescriptorType = fu_usb_endpoint_hdr_get_descriptor_type(st);
  227|  25.9k|	self->endpoint_descriptor.bEndpointAddress = fu_usb_endpoint_hdr_get_endpoint_address(st);
  228|  25.9k|	self->endpoint_descriptor.bmAttributes = fu_usb_endpoint_hdr_get_attributes(st);
  229|  25.9k|	self->endpoint_descriptor.wMaxPacketSize = fu_usb_endpoint_hdr_get_max_packet_size(st);
  230|  25.9k|	self->endpoint_descriptor.bInterval = fu_usb_endpoint_hdr_get_interval(st);
  231|  25.9k|	self->endpoint_descriptor.bRefresh = 0;
  232|  25.9k|	self->endpoint_descriptor.bSynchAddress = 0;
  233|       |
  234|       |	/* success */
  235|  25.9k|	return TRUE;
  ------------------
  |  |  818|  25.9k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  25.9k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  236|  25.9k|}
fu-usb-endpoint.c:fu_usb_endpoint_init:
  247|  25.9k|{
  248|  25.9k|}
fu-usb-endpoint.c:fu_usb_endpoint_codec_iface_init:
  240|      1|{
  241|      1|	iface->add_json = fu_usb_endpoint_add_json;
  242|      1|	iface->from_json = fu_usb_endpoint_from_json;
  243|      1|}

fu_usb_hid_descriptor_set_iface_number:
   93|  11.6k|{
   94|  11.6k|	g_return_if_fail(FU_IS_USB_HID_DESCRIPTOR(self));
  ------------------
  |  |  630|  11.6k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  11.6k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  11.6k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  11.6k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  11.6k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  11.6k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  11.6k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  11.6k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11.6k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  11.6k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  11.6k|   else                                         \
  |  |  |  |  |  | 1021|  11.6k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  11.6k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  11.6k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 11.6k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  11.6k|      { } \
  |  |  633|  11.6k|    else \
  |  |  634|  11.6k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  11.6k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  11.6k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   95|  11.6k|	self->iface_number = iface_number;
   96|  11.6k|}
fu-usb-hid-descriptor.c:fu_usb_hid_descriptor_class_init:
  192|      1|{
  193|      1|	GObjectClass *object_class = G_OBJECT_CLASS(klass);
  ------------------
  |  |   63|      1|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  194|      1|	FuFirmwareClass *firmware_class = FU_FIRMWARE_CLASS(klass);
  195|      1|	object_class->finalize = fu_usb_hid_descriptor_finalize;
  196|      1|	firmware_class->parse = fu_usb_hid_descriptor_parse;
  197|      1|}
fu-usb-hid-descriptor.c:fu_usb_hid_descriptor_finalize:
  183|  12.2k|{
  184|  12.2k|	FuUsbHidDescriptor *self = FU_USB_HID_DESCRIPTOR(object);
  185|  12.2k|	if (self->blob != NULL)
  ------------------
  |  Branch (185:6): [True: 0, False: 12.2k]
  ------------------
  186|      0|		g_bytes_unref(self->blob);
  187|  12.2k|	G_OBJECT_CLASS(fu_usb_hid_descriptor_parent_class)->finalize(object);
  ------------------
  |  |   63|  12.2k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|  12.2k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|  12.2k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|  12.2k|}
fu-usb-hid-descriptor.c:fu_usb_hid_descriptor_parse:
  154|  12.2k|{
  155|  12.2k|	FuUsbHidDescriptor *self = FU_USB_HID_DESCRIPTOR(firmware);
  156|  12.2k|	g_autoptr(FuUsbHidDescriptorHdr) st = NULL;
  ------------------
  |  | 1162|  12.2k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  12.2k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  157|       |
  158|       |	/* parse */
  159|  12.2k|	st = fu_usb_hid_descriptor_hdr_parse_stream(stream, 0x0, error);
  160|  12.2k|	if (st == NULL)
  ------------------
  |  Branch (160:6): [True: 10, False: 12.2k]
  ------------------
  161|     10|		return FALSE;
  ------------------
  |  |  814|     10|#define	FALSE	(0)
  ------------------
  162|  12.2k|	self->descriptor_length = fu_usb_hid_descriptor_hdr_get_class_descriptor_length(st);
  163|       |
  164|       |	/* success */
  165|  12.2k|	return TRUE;
  ------------------
  |  |  818|  12.2k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  12.2k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  166|  12.2k|}
fu-usb-hid-descriptor.c:fu_usb_hid_descriptor_init:
  177|  12.2k|{
  178|  12.2k|	fu_firmware_set_size_max(FU_FIRMWARE(self), 1 * FU_MB);
  ------------------
  |  |   79|  12.2k|#define FU_MB (1ull << 20)
  ------------------
  179|  12.2k|}
fu-usb-hid-descriptor.c:fu_usb_hid_descriptor_codec_iface_init:
  170|      1|{
  171|      1|	iface->add_json = fu_usb_hid_descriptor_add_json;
  172|      1|	iface->from_json = fu_usb_hid_descriptor_from_json;
  173|      1|}

fu_usb_interface_get_number:
  270|  11.6k|{
  271|  11.6k|	g_return_val_if_fail(FU_IS_USB_INTERFACE(self), 0);
  ------------------
  |  |  643|  11.6k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  11.6k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  11.6k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  11.6k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  11.6k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  11.6k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  11.6k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  11.6k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11.6k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  11.6k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  11.6k|   else                                         \
  |  |  |  |  |  | 1021|  11.6k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  11.6k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  11.6k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 11.6k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  11.6k|      { } \
  |  |  646|  11.6k|    else \
  |  |  647|  11.6k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  11.6k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  11.6k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  272|  11.6k|	return self->iface.bInterfaceNumber;
  273|  11.6k|}
fu_usb_interface_get_class:
  304|  77.1k|{
  305|  77.1k|	g_return_val_if_fail(FU_IS_USB_INTERFACE(self), 0);
  ------------------
  |  |  643|  77.1k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  77.1k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  77.1k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  77.1k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  77.1k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  77.1k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  77.1k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  77.1k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77.1k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  77.1k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  77.1k|   else                                         \
  |  |  |  |  |  | 1021|  77.1k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  77.1k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  77.1k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77.1k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  77.1k|      { } \
  |  |  646|  77.1k|    else \
  |  |  647|  77.1k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  77.1k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  77.1k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77.1k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  306|  77.1k|	return self->iface.bInterfaceClass;
  307|  77.1k|}
fu_usb_interface_add_endpoint:
  382|  11.5k|{
  383|  11.5k|	g_return_if_fail(FU_IS_USB_INTERFACE(self));
  ------------------
  |  |  630|  11.5k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  11.5k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  11.5k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  11.5k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  11.5k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  11.5k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  11.5k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  11.5k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11.5k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  11.5k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  11.5k|   else                                         \
  |  |  |  |  |  | 1021|  11.5k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  11.5k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  11.5k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 11.5k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  11.5k|      { } \
  |  |  633|  11.5k|    else \
  |  |  634|  11.5k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  11.5k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  11.5k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  384|  11.5k|	g_return_if_fail(FU_IS_USB_ENDPOINT(endpoint));
  ------------------
  |  |  630|  11.5k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  11.5k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  11.5k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  11.5k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  11.5k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  11.5k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  11.5k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  11.5k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11.5k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  11.5k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  11.5k|   else                                         \
  |  |  |  |  |  | 1021|  11.5k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  11.5k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  11.5k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 11.5k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  11.5k|      { } \
  |  |  633|  11.5k|    else \
  |  |  634|  11.5k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  11.5k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  11.5k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  385|  11.5k|	g_ptr_array_add(self->endpoints, g_object_ref(endpoint));
  ------------------
  |  |  523|  11.5k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
  386|  11.5k|}
fu-usb-interface.c:fu_usb_interface_class_init:
  460|      1|{
  461|      1|	GObjectClass *object_class = G_OBJECT_CLASS(klass);
  ------------------
  |  |   63|      1|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  462|      1|	FuFirmwareClass *firmware_class = FU_FIRMWARE_CLASS(klass);
  463|      1|	object_class->finalize = fu_usb_interface_finalize;
  464|      1|	firmware_class->parse = fu_usb_interface_parse;
  465|      1|	firmware_class->export = fu_usb_interface_export;
  466|      1|}
fu-usb-interface.c:fu_usb_interface_finalize:
  444|  77.3k|{
  445|  77.3k|	FuUsbInterface *self = FU_USB_INTERFACE(object);
  446|  77.3k|	g_ptr_array_unref(self->endpoints);
  447|  77.3k|	G_OBJECT_CLASS(fu_usb_interface_parent_class)->finalize(object);
  ------------------
  |  |   63|  77.3k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|  77.3k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|  77.3k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  448|  77.3k|}
fu-usb-interface.c:fu_usb_interface_parse:
  393|  77.3k|{
  394|  77.3k|	FuUsbInterface *self = FU_USB_INTERFACE(firmware);
  395|  77.3k|	g_autoptr(FuUsbInterfaceHdr) st = NULL;
  ------------------
  |  | 1162|  77.3k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  77.3k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  396|       |
  397|       |	/* FuUsbDescriptor */
  398|  77.3k|	if (!FU_FIRMWARE_CLASS(fu_usb_interface_parent_class)
  ------------------
  |  Branch (398:6): [True: 0, False: 77.3k]
  ------------------
  399|  77.3k|		 ->parse(firmware, stream, flags, error))
  400|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  401|       |
  402|       |	/* parse as proper interface with endpoints */
  403|  77.3k|	st = fu_usb_interface_hdr_parse_stream(stream, 0x0, error);
  404|  77.3k|	if (st == NULL)
  ------------------
  |  Branch (404:6): [True: 44, False: 77.3k]
  ------------------
  405|     44|		return FALSE;
  ------------------
  |  |  814|     44|#define	FALSE	(0)
  ------------------
  406|  77.3k|	self->iface.bLength = fu_usb_interface_hdr_get_length(st);
  407|  77.3k|	self->iface.bDescriptorType = FU_USB_INTERFACE_HDR_DEFAULT_DESCRIPTOR_TYPE;
  ------------------
  |  |  447|  77.3k|#define FU_USB_INTERFACE_HDR_DEFAULT_DESCRIPTOR_TYPE FU_USB_DESCRIPTOR_KIND_INTERFACE
  ------------------
  408|  77.3k|	self->iface.bInterfaceNumber = fu_usb_interface_hdr_get_interface_number(st);
  409|  77.3k|	self->iface.bAlternateSetting = fu_usb_interface_hdr_get_alternate_setting(st);
  410|  77.3k|	self->iface.bNumEndpoints = fu_usb_interface_hdr_get_num_endpoints(st);
  411|  77.3k|	self->iface.bInterfaceClass = fu_usb_interface_hdr_get_interface_class(st);
  412|  77.3k|	self->iface.bInterfaceSubClass = fu_usb_interface_hdr_get_interface_sub_class(st);
  413|  77.3k|	self->iface.bInterfaceProtocol = fu_usb_interface_hdr_get_interface_protocol(st);
  414|  77.3k|	self->iface.iInterface = fu_usb_interface_hdr_get_interface(st);
  415|  77.3k|	fu_firmware_set_size(FU_FIRMWARE(self), self->iface.bLength);
  416|       |
  417|       |	/* extra data */
  418|  77.3k|	if (self->iface.bLength > st->buf->len) {
  ------------------
  |  Branch (418:6): [True: 2.21k, False: 75.1k]
  ------------------
  419|  2.21k|		g_autoptr(GByteArray) buf = NULL;
  ------------------
  |  | 1162|  2.21k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  2.21k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  420|  2.21k|		buf = fu_input_stream_read_byte_array(stream,
  421|  2.21k|						      st->buf->len,
  422|  2.21k|						      self->iface.bLength - st->buf->len,
  423|  2.21k|						      NULL,
  424|  2.21k|						      error);
  425|  2.21k|		if (buf == NULL)
  ------------------
  |  Branch (425:7): [True: 3, False: 2.21k]
  ------------------
  426|      3|			return FALSE;
  ------------------
  |  |  814|      3|#define	FALSE	(0)
  ------------------
  427|  2.21k|		if (!fu_usb_interface_parse_extra(self, buf->data, buf->len, error))
  ------------------
  |  Branch (427:7): [True: 185, False: 2.02k]
  ------------------
  428|    185|			return FALSE;
  ------------------
  |  |  814|    185|#define	FALSE	(0)
  ------------------
  429|  2.21k|	}
  430|       |
  431|       |	/* success */
  432|  77.1k|	return TRUE;
  ------------------
  |  |  818|  77.1k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  77.1k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  433|  77.3k|}
fu-usb-interface.c:fu_usb_interface_init:
  452|  77.3k|{
  453|  77.3k|	self->endpoints = g_ptr_array_new_with_free_func(g_object_unref);
  454|  77.3k|	fu_firmware_add_image_gtype(FU_FIRMWARE(self), FU_TYPE_USB_DESCRIPTOR);
  ------------------
  |  |   12|  77.3k|#define FU_TYPE_USB_DESCRIPTOR (fu_usb_descriptor_get_type())
  ------------------
  455|  77.3k|	fu_firmware_set_size_max(FU_FIRMWARE(self), 1 * FU_MB);
  ------------------
  |  |   79|  77.3k|#define FU_MB (1ull << 20)
  ------------------
  456|  77.3k|}
fu-usb-interface.c:fu_usb_interface_codec_iface_init:
  437|      1|{
  438|      1|	iface->add_json = fu_usb_interface_add_json;
  439|      1|	iface->from_json = fu_usb_interface_from_json;
  440|      1|}
fu-usb-interface.c:fu_usb_interface_parse_extra:
   56|  2.21k|{
   57|  2.21k|	gsize offset = 0;
   58|  2.21k|	g_autoptr(GBytes) bytes = g_bytes_new(buf, bufsz);
  ------------------
  |  | 1162|  2.21k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  2.21k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
   59|       |
   60|       |	/* this is common to all descriptor types */
   61|   131k|	while (offset < bufsz) {
  ------------------
  |  Branch (61:9): [True: 129k, False: 2.02k]
  ------------------
   62|   129k|		g_autoptr(FuUsbDescriptor) img = g_object_new(FU_TYPE_USB_DESCRIPTOR, NULL);
  ------------------
  |  | 1162|   129k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   129k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
              		g_autoptr(FuUsbDescriptor) img = g_object_new(FU_TYPE_USB_DESCRIPTOR, NULL);
  ------------------
  |  |   12|   129k|#define FU_TYPE_USB_DESCRIPTOR (fu_usb_descriptor_get_type())
  ------------------
   63|   129k|		if (!fu_firmware_parse_bytes(FU_FIRMWARE(img),
  ------------------
  |  Branch (63:7): [True: 185, False: 129k]
  ------------------
   64|   129k|					     bytes,
   65|   129k|					     offset,
   66|   129k|					     FU_FIRMWARE_PARSE_FLAG_CACHE_BLOB,
   67|   129k|					     error))
   68|    185|			return FALSE;
  ------------------
  |  |  814|    185|#define	FALSE	(0)
  ------------------
   69|   129k|		if (!fu_firmware_add_image(FU_FIRMWARE(self), FU_FIRMWARE(img), error))
  ------------------
  |  Branch (69:7): [True: 0, False: 129k]
  ------------------
   70|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
   71|   129k|		if (!fu_size_checked_inc(&offset, fu_firmware_get_size(FU_FIRMWARE(img)), error))
  ------------------
  |  Branch (71:7): [True: 0, False: 129k]
  ------------------
   72|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
   73|   129k|	}
   74|  2.02k|	return TRUE;
  ------------------
  |  |  818|  2.02k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  2.02k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
   75|  2.21k|}

g_dbus_error_register_error:
  366|     22|{
  367|     22|  gboolean ret;
  368|     22|  QuarkCodePair pair;
  369|     22|  RegisteredError *re;
  370|       |
  371|     22|  g_return_val_if_fail (dbus_error_name != NULL, FALSE);
  ------------------
  |  |  643|     22|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     22|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     22|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     22|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     22| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     22|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     22|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     22|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 22, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     22|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     22|   else                                         \
  |  |  |  |  |  | 1021|     22|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     22|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     22|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 22, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     22|      { } \
  |  |  646|     22|    else \
  |  |  647|     22|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     22|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     22|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 22]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  372|       |
  373|     22|  ret = FALSE;
  ------------------
  |  |  814|     22|#define	FALSE	(0)
  ------------------
  374|       |
  375|     22|  G_LOCK (error_lock);
  ------------------
  |  |  135|     22|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|     22|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  376|       |
  377|     22|  if (quark_code_pair_to_re == NULL)
  ------------------
  |  Branch (377:7): [True: 1, False: 21]
  ------------------
  378|      1|    {
  379|      1|      g_assert (dbus_error_name_to_re == NULL); /* check invariant */
  ------------------
  |  |  231|      1|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      1|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      1|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      1| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      1|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      1|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      1|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      1|   else                                         \
  |  |  |  |  |  | 1021|      1|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      1|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      1|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      1|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      1|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  380|      1|      quark_code_pair_to_re = g_hash_table_new ((GHashFunc) quark_code_pair_hash_func,
  381|      1|                                                (GEqualFunc) quark_code_pair_equal_func);
  382|      1|      dbus_error_name_to_re = g_hash_table_new_full (g_str_hash,
  383|      1|                                                     g_str_equal,
  384|      1|                                                     NULL,
  385|      1|                                                     (GDestroyNotify) registered_error_free);
  386|      1|    }
  387|       |
  388|     22|  if (g_hash_table_lookup (dbus_error_name_to_re, dbus_error_name) != NULL)
  ------------------
  |  Branch (388:7): [True: 0, False: 22]
  ------------------
  389|      0|    goto out;
  390|       |
  391|     22|  pair.error_domain = error_domain;
  392|     22|  pair.error_code = error_code;
  393|       |
  394|     22|  if (g_hash_table_lookup (quark_code_pair_to_re, &pair) != NULL)
  ------------------
  |  Branch (394:7): [True: 0, False: 22]
  ------------------
  395|      0|    goto out;
  396|       |
  397|     22|  re = g_new0 (RegisteredError, 1);
  ------------------
  |  |  307|     22|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|     22|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     22|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|     22|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|     22|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|     22|	  gpointer __p;						\
  |  |  |  |  239|     22|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 22]
  |  |  |  |  ------------------
  |  |  |  |  240|     22|	    __p = g_##func (__n);				\
  |  |  |  |  241|     22|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 22, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|     22|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|     22|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|     22|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 22]
  |  |  |  |  |  Branch (242:26): [True: 22, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|     22|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|     22|	  else							\
  |  |  |  |  245|     22|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|     22|	  __p;							\
  |  |  |  |  247|     22|	}))
  |  |  ------------------
  ------------------
  398|     22|  re->pair = pair;
  399|     22|  re->dbus_error_name = g_strdup (dbus_error_name);
  400|       |
  401|     22|  g_hash_table_insert (quark_code_pair_to_re, &(re->pair), re);
  402|     22|  g_hash_table_insert (dbus_error_name_to_re, re->dbus_error_name, re);
  403|       |
  404|     22|  ret = TRUE;
  ------------------
  |  |  818|     22|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     22|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  405|       |
  406|     22| out:
  407|     22|  G_UNLOCK (error_lock);
  ------------------
  |  |  136|     22|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|     22|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  408|     22|  return ret;
  409|     22|}
gdbuserror.c:quark_code_pair_hash_func:
  311|     44|{
  312|     44|  gint val;
  313|     44|  val = pair->error_domain + pair->error_code;
  314|     44|  return g_int_hash (&val);
  315|     44|}

g_input_stream_read:
  166|  1.37M|{
  167|  1.37M|  GInputStreamClass *class;
  168|  1.37M|  gssize res;
  169|       |
  170|  1.37M|  g_return_val_if_fail (G_IS_INPUT_STREAM (stream), -1);
  ------------------
  |  |  643|  1.37M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.37M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.37M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.37M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.37M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.37M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.37M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  9.61M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.37M, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.37M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.37M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.37M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.37M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.37M|   else                                         \
  |  |  |  |  |  | 1021|  1.37M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.37M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.37M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.37M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.37M|      { } \
  |  |  646|  1.37M|    else \
  |  |  647|  1.37M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.37M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.37M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.37M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  171|  1.37M|  g_return_val_if_fail (buffer != NULL, 0);
  ------------------
  |  |  643|  1.37M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.37M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.37M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.37M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.37M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.37M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.37M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.37M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.37M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.37M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.37M|   else                                         \
  |  |  |  |  |  | 1021|  1.37M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.37M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.37M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.37M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.37M|      { } \
  |  |  646|  1.37M|    else \
  |  |  647|  1.37M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.37M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.37M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.37M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  172|       |
  173|  1.37M|  if (count == 0)
  ------------------
  |  Branch (173:7): [True: 587, False: 1.37M]
  ------------------
  174|    587|    return 0;
  175|       |  
  176|  1.37M|  if (((gssize) count) < 0)
  ------------------
  |  Branch (176:7): [True: 0, False: 1.37M]
  ------------------
  177|      0|    {
  178|      0|      g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
  ------------------
  |  |   39|      0|#define G_IO_ERROR g_io_error_quark()
  ------------------
  179|      0|		   _("Too large count value passed to %s"), G_STRFUNC);
  ------------------
  |  |   17|      0|#define _(String) glib_gettext(String)
  ------------------
              		   _("Too large count value passed to %s"), G_STRFUNC);
  ------------------
  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  ------------------
  180|      0|      return -1;
  181|      0|    }
  182|       |
  183|  1.37M|  class = G_INPUT_STREAM_GET_CLASS (stream);
  ------------------
  |  |   37|  1.37M|#define G_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_INPUT_STREAM, GInputStreamClass))
  |  |  ------------------
  |  |  |  |  527|  1.37M|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|  1.37M|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  184|       |
  185|  1.37M|  if (class->read_fn == NULL) 
  ------------------
  |  Branch (185:7): [True: 0, False: 1.37M]
  ------------------
  186|      0|    {
  187|      0|      g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
  ------------------
  |  |   39|      0|#define G_IO_ERROR g_io_error_quark()
  ------------------
  188|      0|                           _("Input stream doesn’t implement read"));
  ------------------
  |  |   17|      0|#define _(String) glib_gettext(String)
  ------------------
  189|      0|      return -1;
  190|      0|    }
  191|       |
  192|  1.37M|  if (!g_input_stream_set_pending (stream, error))
  ------------------
  |  Branch (192:7): [True: 0, False: 1.37M]
  ------------------
  193|      0|    return -1;
  194|       |
  195|  1.37M|  if (cancellable)
  ------------------
  |  Branch (195:7): [True: 0, False: 1.37M]
  ------------------
  196|      0|    g_cancellable_push_current (cancellable);
  197|       |  
  198|  1.37M|  res = class->read_fn (stream, buffer, count, cancellable, error);
  199|       |
  200|  1.37M|  if (cancellable)
  ------------------
  |  Branch (200:7): [True: 0, False: 1.37M]
  ------------------
  201|      0|    g_cancellable_pop_current (cancellable);
  202|       |  
  203|  1.37M|  g_input_stream_clear_pending (stream);
  204|       |
  205|  1.37M|  return res;
  206|  1.37M|}
g_input_stream_close:
  520|   859k|{
  521|   859k|  GInputStreamClass *class;
  522|   859k|  gboolean res;
  523|       |
  524|   859k|  g_return_val_if_fail (G_IS_INPUT_STREAM (stream), FALSE);
  ------------------
  |  |  643|   859k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   859k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   859k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   859k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   859k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   859k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   859k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  6.01M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 859k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 859k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 859k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 859k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   859k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   859k|   else                                         \
  |  |  |  |  |  | 1021|   859k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   859k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   859k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 859k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   859k|      { } \
  |  |  646|   859k|    else \
  |  |  647|   859k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   859k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   859k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 859k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  525|       |
  526|   859k|  class = G_INPUT_STREAM_GET_CLASS (stream);
  ------------------
  |  |   37|   859k|#define G_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_INPUT_STREAM, GInputStreamClass))
  |  |  ------------------
  |  |  |  |  527|   859k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|   859k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  527|       |
  528|   859k|  if (stream->priv->closed)
  ------------------
  |  Branch (528:7): [True: 0, False: 859k]
  ------------------
  529|      0|    return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  530|       |
  531|   859k|  res = TRUE;
  ------------------
  |  |  818|   859k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   859k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  532|       |
  533|   859k|  if (!g_input_stream_set_pending (stream, error))
  ------------------
  |  Branch (533:7): [True: 0, False: 859k]
  ------------------
  534|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  535|       |
  536|   859k|  if (cancellable)
  ------------------
  |  Branch (536:7): [True: 0, False: 859k]
  ------------------
  537|      0|    g_cancellable_push_current (cancellable);
  538|       |
  539|   859k|  if (class->close_fn)
  ------------------
  |  Branch (539:7): [True: 430k, False: 428k]
  ------------------
  540|   430k|    res = class->close_fn (stream, cancellable, error);
  541|       |
  542|   859k|  if (cancellable)
  ------------------
  |  Branch (542:7): [True: 0, False: 859k]
  ------------------
  543|      0|    g_cancellable_pop_current (cancellable);
  544|       |
  545|   859k|  g_input_stream_clear_pending (stream);
  546|       |  
  547|   859k|  stream->priv->closed = TRUE;
  ------------------
  |  |  818|   859k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   859k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  548|       |  
  549|   859k|  return res;
  550|   859k|}
g_input_stream_set_pending:
 1231|  2.23M|{
 1232|  2.23M|  g_return_val_if_fail (G_IS_INPUT_STREAM (stream), FALSE);
  ------------------
  |  |  643|  2.23M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.23M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.23M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.23M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.23M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.23M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.23M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  15.6M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.23M, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 2.23M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 2.23M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.23M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.23M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.23M|   else                                         \
  |  |  |  |  |  | 1021|  2.23M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.23M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.23M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.23M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.23M|      { } \
  |  |  646|  2.23M|    else \
  |  |  647|  2.23M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  2.23M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.23M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.23M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1233|       |  
 1234|  2.23M|  if (stream->priv->closed)
  ------------------
  |  Branch (1234:7): [True: 0, False: 2.23M]
  ------------------
 1235|      0|    {
 1236|      0|      g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_CLOSED,
  ------------------
  |  |   39|      0|#define G_IO_ERROR g_io_error_quark()
  ------------------
 1237|      0|                           _("Stream is already closed"));
  ------------------
  |  |   17|      0|#define _(String) glib_gettext(String)
  ------------------
 1238|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1239|      0|    }
 1240|       |  
 1241|  2.23M|  if (stream->priv->pending)
  ------------------
  |  Branch (1241:7): [True: 0, False: 2.23M]
  ------------------
 1242|      0|    {
 1243|      0|      g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_PENDING,
  ------------------
  |  |   39|      0|#define G_IO_ERROR g_io_error_quark()
  ------------------
 1244|       |		/* Translators: This is an error you get if there is already an
 1245|       |		 * operation running against this stream when you try to start
 1246|       |		 * one */
 1247|      0|		 _("Stream has outstanding operation"));
  ------------------
  |  |   17|      0|#define _(String) glib_gettext(String)
  ------------------
 1248|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1249|      0|    }
 1250|       |  
 1251|  2.23M|  stream->priv->pending = TRUE;
  ------------------
  |  |  818|  2.23M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  2.23M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1252|  2.23M|  return TRUE;
  ------------------
  |  |  818|  2.23M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  2.23M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1253|  2.23M|}
g_input_stream_clear_pending:
 1263|  2.23M|{
 1264|  2.23M|  g_return_if_fail (G_IS_INPUT_STREAM (stream));
  ------------------
  |  |  630|  2.23M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.23M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.23M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.23M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.23M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.23M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.23M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  15.6M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.23M, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 2.23M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 2.23M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.23M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.23M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.23M|   else                                         \
  |  |  |  |  |  | 1021|  2.23M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.23M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.23M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.23M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.23M|      { } \
  |  |  633|  2.23M|    else \
  |  |  634|  2.23M|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  2.23M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.23M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.23M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1265|       |  
 1266|  2.23M|  stream->priv->pending = FALSE;
  ------------------
  |  |  814|  2.23M|#define	FALSE	(0)
  ------------------
 1267|  2.23M|}
ginputstream.c:g_input_stream_class_init:
  107|      1|{
  108|      1|  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
  ------------------
  |  |   63|      1|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  109|       |  
  110|      1|  gobject_class->dispose = g_input_stream_dispose;
  111|       |  
  112|      1|  klass->skip = g_input_stream_real_skip;
  113|      1|  klass->read_async = g_input_stream_real_read_async;
  114|      1|  klass->read_finish = g_input_stream_real_read_finish;
  115|      1|  klass->skip_async = g_input_stream_real_skip_async;
  116|      1|  klass->skip_finish = g_input_stream_real_skip_finish;
  117|      1|  klass->close_async = g_input_stream_real_close_async;
  118|      1|  klass->close_finish = g_input_stream_real_close_finish;
  119|      1|}
ginputstream.c:g_input_stream_dispose:
   93|   859k|{
   94|   859k|  GInputStream *stream;
   95|       |
   96|   859k|  stream = G_INPUT_STREAM (object);
  ------------------
  |  |   33|   859k|#define G_INPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_INPUT_STREAM, GInputStream))
  |  |  ------------------
  |  |  |  |  484|   859k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   859k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   97|       |  
   98|   859k|  if (!stream->priv->closed)
  ------------------
  |  Branch (98:7): [True: 859k, False: 0]
  ------------------
   99|   859k|    g_input_stream_close (stream, NULL, NULL);
  100|       |
  101|   859k|  G_OBJECT_CLASS (g_input_stream_parent_class)->dispose (object);
  ------------------
  |  |   63|   859k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|   859k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|   859k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  102|   859k|}
ginputstream.c:g_input_stream_init:
  123|   859k|{
  124|   859k|  stream->priv = g_input_stream_get_instance_private (stream);
  125|   859k|}

g_memory_input_stream_new:
  177|   430k|{
  178|   430k|  GInputStream *stream;
  179|       |
  180|   430k|  stream = g_object_new (G_TYPE_MEMORY_INPUT_STREAM, NULL);
  ------------------
  |  |   32|   430k|#define G_TYPE_MEMORY_INPUT_STREAM         (g_memory_input_stream_get_type ())
  ------------------
  181|       |
  182|   430k|  return stream;
  183|   430k|}
g_memory_input_stream_new_from_bytes:
  222|   430k|{
  223|       |  
  224|   430k|  GInputStream *stream;
  225|       |
  226|   430k|  stream = g_memory_input_stream_new ();
  227|       |
  228|   430k|  g_memory_input_stream_add_bytes (G_MEMORY_INPUT_STREAM (stream),
  ------------------
  |  |   33|   430k|#define G_MEMORY_INPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_MEMORY_INPUT_STREAM, GMemoryInputStream))
  |  |  ------------------
  |  |  |  |  484|   430k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   430k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  229|   430k|				   bytes);
  230|       |
  231|   430k|  return stream;
  232|   430k|}
g_memory_input_stream_add_bytes:
  276|   430k|{
  277|   430k|  GMemoryInputStreamPrivate *priv;
  278|       | 
  279|   430k|  g_return_if_fail (G_IS_MEMORY_INPUT_STREAM (stream));
  ------------------
  |  |  630|   430k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   430k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   430k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   430k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   430k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   430k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   430k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.01M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 430k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 430k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 430k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 430k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   430k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   430k|   else                                         \
  |  |  |  |  |  | 1021|   430k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   430k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   430k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 430k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   430k|      { } \
  |  |  633|   430k|    else \
  |  |  634|   430k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   430k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   430k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 430k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  280|   430k|  g_return_if_fail (bytes != NULL);
  ------------------
  |  |  630|   430k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   430k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   430k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   430k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   430k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   430k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   430k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   430k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 430k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   430k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   430k|   else                                         \
  |  |  |  |  |  | 1021|   430k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   430k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   430k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 430k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   430k|      { } \
  |  |  633|   430k|    else \
  |  |  634|   430k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   430k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   430k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 430k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  281|       |
  282|   430k|  priv = stream->priv;
  283|       |
  284|   430k|  priv->chunks = g_slist_append (priv->chunks, g_bytes_ref (bytes));
  285|   430k|  priv->len += g_bytes_get_size (bytes);
  286|   430k|}
gmemoryinputstream.c:g_memory_input_stream_class_init:
  113|      1|{
  114|      1|  GObjectClass *object_class;
  115|      1|  GInputStreamClass *istream_class;
  116|       |
  117|      1|  object_class = G_OBJECT_CLASS (klass);
  ------------------
  |  |   63|      1|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  118|      1|  object_class->finalize     = g_memory_input_stream_finalize;
  119|       |  
  120|      1|  istream_class = G_INPUT_STREAM_CLASS (klass);
  ------------------
  |  |   34|      1|#define G_INPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_INPUT_STREAM, GInputStreamClass))
  |  |  ------------------
  |  |  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  121|      1|  istream_class->read_fn  = g_memory_input_stream_read;
  122|      1|  istream_class->skip  = g_memory_input_stream_skip;
  123|      1|  istream_class->close_fn = g_memory_input_stream_close;
  124|       |
  125|      1|  istream_class->skip_async  = g_memory_input_stream_skip_async;
  126|      1|  istream_class->skip_finish  = g_memory_input_stream_skip_finish;
  127|      1|  istream_class->close_async = g_memory_input_stream_close_async;
  128|      1|  istream_class->close_finish = g_memory_input_stream_close_finish;
  129|      1|}
gmemoryinputstream.c:g_memory_input_stream_finalize:
  133|   430k|{
  134|   430k|  GMemoryInputStream        *stream;
  135|   430k|  GMemoryInputStreamPrivate *priv;
  136|       |
  137|   430k|  stream = G_MEMORY_INPUT_STREAM (object);
  ------------------
  |  |   33|   430k|#define G_MEMORY_INPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_MEMORY_INPUT_STREAM, GMemoryInputStream))
  |  |  ------------------
  |  |  |  |  484|   430k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   430k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  138|   430k|  priv = stream->priv;
  139|       |
  140|   430k|  g_slist_free_full (priv->chunks, (GDestroyNotify)g_bytes_unref);
  141|       |
  142|   430k|  G_OBJECT_CLASS (g_memory_input_stream_parent_class)->finalize (object);
  ------------------
  |  |   63|   430k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|   430k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|   430k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  143|   430k|}
gmemoryinputstream.c:g_memory_input_stream_read:
  294|   688k|{
  295|   688k|  GMemoryInputStream *memory_stream;
  296|   688k|  GMemoryInputStreamPrivate *priv;
  297|   688k|  GSList *l;
  298|   688k|  GBytes *chunk;
  299|   688k|  gsize len;
  300|   688k|  gsize offset, start, rest, size;
  301|       |
  302|   688k|  memory_stream = G_MEMORY_INPUT_STREAM (stream);
  ------------------
  |  |   33|   688k|#define G_MEMORY_INPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_MEMORY_INPUT_STREAM, GMemoryInputStream))
  |  |  ------------------
  |  |  |  |  484|   688k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   688k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  303|   688k|  priv = memory_stream->priv;
  304|       |
  305|   688k|  count = MIN (count, priv->len - priv->pos);
  ------------------
  |  |  825|   688k|#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (825:21): [True: 541k, False: 147k]
  |  |  ------------------
  ------------------
  306|       |
  307|   688k|  offset = 0;
  308|   688k|  for (l = priv->chunks; l; l = l->next) 
  ------------------
  |  Branch (308:26): [True: 688k, False: 17]
  ------------------
  309|   688k|    {
  310|   688k|      chunk = (GBytes *)l->data;
  311|   688k|      len = g_bytes_get_size (chunk);
  312|       |
  313|   688k|      if (offset + len > priv->pos)
  ------------------
  |  Branch (313:11): [True: 688k, False: 17]
  ------------------
  314|   688k|        break;
  315|       |
  316|     17|      offset += len;
  317|     17|    }
  318|       |  
  319|   688k|  start = priv->pos - offset;
  320|   688k|  rest = count;
  321|       |
  322|  1.37M|  for (; l && rest > 0; l = l->next)
  ------------------
  |  Branch (322:10): [True: 688k, False: 688k]
  |  Branch (322:15): [True: 688k, False: 0]
  ------------------
  323|   688k|    {
  324|   688k|      const guint8* chunk_data;
  325|   688k|      chunk = (GBytes *)l->data;
  326|       |
  327|   688k|      chunk_data = g_bytes_get_data (chunk, &len);
  328|       |
  329|   688k|      size = MIN (rest, len - start);
  ------------------
  |  |  825|   688k|#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (825:21): [True: 541k, False: 147k]
  |  |  ------------------
  ------------------
  330|       |
  331|   688k|      memcpy ((guint8 *)buffer + (count - rest), chunk_data + start, size);
  332|   688k|      rest -= size;
  333|       |
  334|   688k|      start = 0;
  335|   688k|    }
  336|       |
  337|   688k|  priv->pos += count;
  338|       |
  339|   688k|  return count;
  340|   688k|}
gmemoryinputstream.c:g_memory_input_stream_close:
  364|   430k|{
  365|   430k|  return TRUE;
  ------------------
  |  |  818|   430k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   430k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  366|   430k|}
gmemoryinputstream.c:g_memory_input_stream_init:
  164|   430k|{
  165|   430k|  stream->priv = g_memory_input_stream_get_instance_private (stream);
  166|   430k|}
gmemoryinputstream.c:g_memory_input_stream_seekable_iface_init:
  147|      1|{
  148|      1|  iface->tell         = g_memory_input_stream_tell;
  149|      1|  iface->can_seek     = g_memory_input_stream_can_seek;
  150|      1|  iface->seek         = g_memory_input_stream_seek;
  151|      1|  iface->can_truncate = g_memory_input_stream_can_truncate;
  152|      1|  iface->truncate_fn  = g_memory_input_stream_truncate;
  153|      1|}
gmemoryinputstream.c:g_memory_input_stream_tell:
  426|  2.37M|{
  427|  2.37M|  GMemoryInputStream *memory_stream;
  428|  2.37M|  GMemoryInputStreamPrivate *priv;
  429|       |
  430|  2.37M|  memory_stream = G_MEMORY_INPUT_STREAM (seekable);
  ------------------
  |  |   33|  2.37M|#define G_MEMORY_INPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_MEMORY_INPUT_STREAM, GMemoryInputStream))
  |  |  ------------------
  |  |  |  |  484|  2.37M|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|  2.37M|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  431|  2.37M|  priv = memory_stream->priv;
  432|       |
  433|  2.37M|  return priv->pos;
  434|  2.37M|}
gmemoryinputstream.c:g_memory_input_stream_can_seek:
  438|  1.97M|{
  439|  1.97M|  return TRUE;
  ------------------
  |  |  818|  1.97M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.97M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  440|  1.97M|}
gmemoryinputstream.c:g_memory_input_stream_seek:
  448|  1.54M|{
  449|  1.54M|  GMemoryInputStream *memory_stream;
  450|  1.54M|  GMemoryInputStreamPrivate *priv;
  451|  1.54M|  goffset absolute;
  452|       |
  453|  1.54M|  memory_stream = G_MEMORY_INPUT_STREAM (seekable);
  ------------------
  |  |   33|  1.54M|#define G_MEMORY_INPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_MEMORY_INPUT_STREAM, GMemoryInputStream))
  |  |  ------------------
  |  |  |  |  484|  1.54M|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|  1.54M|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  454|  1.54M|  priv = memory_stream->priv;
  455|       |
  456|  1.54M|  switch (type) 
  457|  1.54M|    {
  458|      0|    case G_SEEK_CUR:
  ------------------
  |  Branch (458:5): [True: 0, False: 1.54M]
  ------------------
  459|      0|      absolute = priv->pos + offset;
  460|      0|      break;
  461|       |
  462|   682k|    case G_SEEK_SET:
  ------------------
  |  Branch (462:5): [True: 682k, False: 859k]
  ------------------
  463|   682k|      absolute = offset;
  464|   682k|      break;
  465|       |
  466|   859k|    case G_SEEK_END:
  ------------------
  |  Branch (466:5): [True: 859k, False: 682k]
  ------------------
  467|   859k|      absolute = priv->len + offset;
  468|   859k|      break;
  469|       |  
  470|      0|    default:
  ------------------
  |  Branch (470:5): [True: 0, False: 1.54M]
  ------------------
  471|      0|      g_set_error_literal (error,
  472|      0|                           G_IO_ERROR,
  ------------------
  |  |   39|      0|#define G_IO_ERROR g_io_error_quark()
  ------------------
  473|      0|                           G_IO_ERROR_INVALID_ARGUMENT,
  474|      0|                           _("Invalid GSeekType supplied"));
  ------------------
  |  |   17|      0|#define _(String) glib_gettext(String)
  ------------------
  475|       |
  476|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  477|  1.54M|    }
  478|       |
  479|  1.54M|  if (absolute < 0 || (gsize) absolute > priv->len)
  ------------------
  |  Branch (479:7): [True: 0, False: 1.54M]
  |  Branch (479:23): [True: 0, False: 1.54M]
  ------------------
  480|      0|    {
  481|      0|      g_set_error_literal (error,
  482|      0|                           G_IO_ERROR,
  ------------------
  |  |   39|      0|#define G_IO_ERROR g_io_error_quark()
  ------------------
  483|      0|                           G_IO_ERROR_INVALID_ARGUMENT,
  484|      0|                           _("Invalid seek request"));
  ------------------
  |  |   17|      0|#define _(String) glib_gettext(String)
  ------------------
  485|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  486|      0|    }
  487|       |
  488|  1.54M|  priv->pos = absolute;
  489|       |
  490|  1.54M|  return TRUE;
  ------------------
  |  |  818|  1.54M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.54M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  491|  1.54M|}
gmemoryinputstream.c:g_memory_input_stream_pollable_iface_init:
  157|      1|{
  158|      1|  iface->is_readable   = g_memory_input_stream_is_readable;
  159|      1|  iface->create_source = g_memory_input_stream_create_source;
  160|      1|}

gpollableinputstream.c:g_pollable_input_stream_default_init:
   51|      1|{
   52|      1|  iface->can_poll         = g_pollable_input_stream_default_can_poll;
   53|      1|  iface->read_nonblocking = g_pollable_input_stream_default_read_nonblocking;
   54|      1|}

g_seekable_tell:
   66|  3.88M|{
   67|  3.88M|  GSeekableIface *iface;
   68|       |
   69|  3.88M|  g_return_val_if_fail (G_IS_SEEKABLE (seekable), 0);
  ------------------
  |  |  643|  3.88M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.88M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.88M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.88M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.88M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.88M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.88M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  27.2M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.88M, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.88M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.88M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.88M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.88M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.88M|   else                                         \
  |  |  |  |  |  | 1021|  3.88M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.88M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.88M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.88M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.88M|      { } \
  |  |  646|  3.88M|    else \
  |  |  647|  3.88M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  3.88M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.88M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.88M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|       |
   71|  3.88M|  iface = G_SEEKABLE_GET_IFACE (seekable);
  ------------------
  |  |   35|  3.88M|#define G_SEEKABLE_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_SEEKABLE, GSeekableIface))
  |  |  ------------------
  |  |  |  |  540|  3.88M|#define G_TYPE_INSTANCE_GET_INTERFACE(instance, g_type, c_type) (_G_TYPE_IGI ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2310|  3.88M|#define _G_TYPE_IGI(ip, gt, ct)         ((ct*) g_type_interface_peek (((GTypeInstance*) ip)->g_class, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   72|       |
   73|  3.88M|  return (* iface->tell) (seekable);
   74|  3.88M|}
g_seekable_can_seek:
   86|  2.65M|{
   87|  2.65M|  GSeekableIface *iface;
   88|       |  
   89|  2.65M|  g_return_val_if_fail (G_IS_SEEKABLE (seekable), FALSE);
  ------------------
  |  |  643|  2.65M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.65M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.65M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.65M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.65M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.65M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.65M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  18.5M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.65M, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 2.65M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 2.65M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.65M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.65M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.65M|   else                                         \
  |  |  |  |  |  | 1021|  2.65M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.65M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.65M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.65M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.65M|      { } \
  |  |  646|  2.65M|    else \
  |  |  647|  2.65M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  2.65M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.65M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.65M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   90|       |
   91|  2.65M|  iface = G_SEEKABLE_GET_IFACE (seekable);
  ------------------
  |  |   35|  2.65M|#define G_SEEKABLE_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_SEEKABLE, GSeekableIface))
  |  |  ------------------
  |  |  |  |  540|  2.65M|#define G_TYPE_INSTANCE_GET_INTERFACE(instance, g_type, c_type) (_G_TYPE_IGI ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2310|  2.65M|#define _G_TYPE_IGI(ip, gt, ct)         ((ct*) g_type_interface_peek (((GTypeInstance*) ip)->g_class, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   92|       |
   93|  2.65M|  return (* iface->can_seek) (seekable);
   94|  2.65M|}
g_seekable_seek:
  130|  2.21M|{
  131|  2.21M|  GSeekableIface *iface;
  132|       |  
  133|  2.21M|  g_return_val_if_fail (G_IS_SEEKABLE (seekable), FALSE);
  ------------------
  |  |  643|  2.21M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.21M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.21M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.21M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.21M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.21M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.21M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  15.5M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.21M, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 2.21M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 2.21M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.21M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.21M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.21M|   else                                         \
  |  |  |  |  |  | 1021|  2.21M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.21M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.21M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.21M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.21M|      { } \
  |  |  646|  2.21M|    else \
  |  |  647|  2.21M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  2.21M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.21M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.21M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  134|       |
  135|  2.21M|  iface = G_SEEKABLE_GET_IFACE (seekable);
  ------------------
  |  |   35|  2.21M|#define G_SEEKABLE_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_SEEKABLE, GSeekableIface))
  |  |  ------------------
  |  |  |  |  540|  2.21M|#define G_TYPE_INSTANCE_GET_INTERFACE(instance, g_type, c_type) (_G_TYPE_IGI ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2310|  2.21M|#define _G_TYPE_IGI(ip, gt, ct)         ((ct*) g_type_interface_peek (((GTypeInstance*) ip)->g_class, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  136|       |
  137|  2.21M|  return (* iface->seek) (seekable, offset, type, cancellable, error);
  138|  2.21M|}
gseekable.c:g_seekable_default_init:
   53|      1|{
   54|      1|}

g_array_new:
  182|  79.0k|{
  183|  79.0k|  g_return_val_if_fail (elt_size > 0, NULL);
  ------------------
  |  |  643|  79.0k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  79.0k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  79.0k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  79.0k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  79.0k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  79.0k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  79.0k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  79.0k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 79.0k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  79.0k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  79.0k|   else                                         \
  |  |  |  |  |  | 1021|  79.0k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  79.0k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  79.0k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 79.0k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  79.0k|      { } \
  |  |  646|  79.0k|    else \
  |  |  647|  79.0k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  79.0k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  79.0k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 79.0k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  184|       |
  185|  79.0k|  return g_array_sized_new (zero_terminated, clear, elt_size, 0);
  186|  79.0k|}
g_array_sized_new:
  260|  1.23M|{
  261|  1.23M|  GRealArray *array;
  262|       |  
  263|  1.23M|  g_return_val_if_fail (elt_size > 0, NULL);
  ------------------
  |  |  643|  1.23M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.23M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.23M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.23M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.23M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.23M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.23M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.23M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.23M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.23M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.23M|   else                                         \
  |  |  |  |  |  | 1021|  1.23M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.23M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.23M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.23M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.23M|      { } \
  |  |  646|  1.23M|    else \
  |  |  647|  1.23M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.23M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.23M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.23M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  264|       |
  265|  1.23M|  array = g_slice_new (GRealArray);
  ------------------
  |  |   46|  1.23M|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  ------------------
  266|       |
  267|  1.23M|  array->data            = NULL;
  268|  1.23M|  array->len             = 0;
  269|  1.23M|  array->alloc           = 0;
  270|  1.23M|  array->zero_terminated = (zero_terminated ? 1 : 0);
  ------------------
  |  Branch (270:29): [True: 0, False: 1.23M]
  ------------------
  271|  1.23M|  array->clear           = (clear ? 1 : 0);
  ------------------
  |  Branch (271:29): [True: 0, False: 1.23M]
  ------------------
  272|  1.23M|  array->elt_size        = elt_size;
  273|  1.23M|  array->clear_func      = NULL;
  274|       |
  275|  1.23M|  g_atomic_ref_count_init (&array->ref_count);
  276|       |
  277|  1.23M|  if (array->zero_terminated || reserved_size != 0)
  ------------------
  |  Branch (277:7): [True: 0, False: 1.23M]
  |  Branch (277:33): [True: 0, False: 1.23M]
  ------------------
  278|      0|    {
  279|      0|      g_array_maybe_expand (array, reserved_size);
  280|      0|      g_array_zero_terminate(array);
  ------------------
  |  |  157|      0|#define g_array_zero_terminate(array) G_STMT_START{                     \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  158|      0|  if ((array)->zero_terminated)                                         \
  |  |  ------------------
  |  |  |  Branch (158:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  159|      0|    g_array_elt_zero ((array), (array)->len, 1);                        \
  |  |  ------------------
  |  |  |  |  156|      0|  (memset (g_array_elt_pos ((array), pos), 0,  g_array_elt_len ((array), len)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define g_array_elt_pos(array,i) ((array)->data + g_array_elt_len((array),(i)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      0|#define g_array_elt_len(array,i) ((array)->elt_size * (i))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 (memset (g_array_elt_pos ((array), pos), 0,  g_array_elt_len ((array), len)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      0|#define g_array_elt_len(array,i) ((array)->elt_size * (i))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  160|      0|}G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  281|      0|    }
  282|       |
  283|  1.23M|  return (GArray*) array;
  284|  1.23M|}
g_array_unref:
  358|  1.08M|{
  359|  1.08M|  GRealArray *rarray = (GRealArray*) array;
  360|  1.08M|  g_return_if_fail (array);
  ------------------
  |  |  630|  1.08M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.08M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.08M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.08M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.08M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.08M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.08M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.08M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.08M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.08M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.08M|   else                                         \
  |  |  |  |  |  | 1021|  1.08M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.08M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.08M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.08M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.08M|      { } \
  |  |  633|  1.08M|    else \
  |  |  634|  1.08M|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  1.08M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.08M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.08M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  361|       |
  362|  1.08M|  if (g_atomic_ref_count_dec (&rarray->ref_count))
  ------------------
  |  Branch (362:7): [True: 1.08M, False: 0]
  ------------------
  363|  1.08M|    array_free (rarray, FREE_SEGMENT);
  364|  1.08M|}
g_array_free:
  412|   146k|{
  413|   146k|  GRealArray *array = (GRealArray*) farray;
  414|   146k|  ArrayFreeFlags flags;
  415|       |
  416|   146k|  g_return_val_if_fail (array, NULL);
  ------------------
  |  |  643|   146k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   146k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   146k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   146k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   146k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   146k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   146k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   146k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 146k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   146k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   146k|   else                                         \
  |  |  |  |  |  | 1021|   146k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   146k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   146k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 146k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   146k|      { } \
  |  |  646|   146k|    else \
  |  |  647|   146k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   146k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   146k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 146k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  417|       |
  418|   146k|  flags = (free_segment ? FREE_SEGMENT : 0);
  ------------------
  |  Branch (418:12): [True: 0, False: 146k]
  ------------------
  419|       |
  420|       |  /* if others are holding a reference, preserve the wrapper but do free/return the data */
  421|   146k|  if (!g_atomic_ref_count_dec (&array->ref_count))
  ------------------
  |  Branch (421:7): [True: 0, False: 146k]
  ------------------
  422|      0|    flags |= PRESERVE_WRAPPER;
  423|       |
  424|   146k|  return array_free (array, flags);
  425|   146k|}
g_array_append_vals:
  491|  1.24M|{
  492|  1.24M|  GRealArray *array = (GRealArray*) farray;
  493|       |
  494|  1.24M|  g_return_val_if_fail (array, NULL);
  ------------------
  |  |  643|  1.24M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.24M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.24M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.24M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.24M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.24M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.24M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.24M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.24M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.24M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.24M|   else                                         \
  |  |  |  |  |  | 1021|  1.24M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.24M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.24M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.24M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.24M|      { } \
  |  |  646|  1.24M|    else \
  |  |  647|  1.24M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.24M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.24M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.24M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  495|       |
  496|  1.24M|  if (len == 0)
  ------------------
  |  Branch (496:7): [True: 0, False: 1.24M]
  ------------------
  497|      0|    return farray;
  498|       |
  499|  1.24M|  g_array_maybe_expand (array, len);
  500|       |
  501|  1.24M|  memcpy (g_array_elt_pos (array, array->len), data, 
  ------------------
  |  |  154|  1.24M|#define g_array_elt_pos(array,i) ((array)->data + g_array_elt_len((array),(i)))
  |  |  ------------------
  |  |  |  |  153|  1.24M|#define g_array_elt_len(array,i) ((array)->elt_size * (i))
  |  |  ------------------
  ------------------
  502|  1.24M|          g_array_elt_len (array, len));
  ------------------
  |  |  153|  1.24M|#define g_array_elt_len(array,i) ((array)->elt_size * (i))
  ------------------
  503|       |
  504|  1.24M|  array->len += len;
  505|       |
  506|  1.24M|  g_array_zero_terminate (array);
  ------------------
  |  |  157|  1.24M|#define g_array_zero_terminate(array) G_STMT_START{                     \
  |  |  ------------------
  |  |  |  |  874|  1.24M|#define G_STMT_START  do
  |  |  ------------------
  |  |  158|  1.24M|  if ((array)->zero_terminated)                                         \
  |  |  ------------------
  |  |  |  Branch (158:7): [True: 0, False: 1.24M]
  |  |  ------------------
  |  |  159|  1.24M|    g_array_elt_zero ((array), (array)->len, 1);                        \
  |  |  ------------------
  |  |  |  |  156|      0|  (memset (g_array_elt_pos ((array), pos), 0,  g_array_elt_len ((array), len)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define g_array_elt_pos(array,i) ((array)->data + g_array_elt_len((array),(i)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      0|#define g_array_elt_len(array,i) ((array)->elt_size * (i))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 (memset (g_array_elt_pos ((array), pos), 0,  g_array_elt_len ((array), len)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      0|#define g_array_elt_len(array,i) ((array)->elt_size * (i))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  160|  1.24M|}G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.24M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.24M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  507|       |
  508|  1.24M|  return farray;
  509|  1.24M|}
g_ptr_array_new_with_free_func:
 1305|   513k|{
 1306|   513k|  return ptr_array_new (0, element_free_func);
 1307|   513k|}
g_ptr_array_unref:
 1395|   513k|{
 1396|   513k|  GRealPtrArray *rarray = (GRealPtrArray *)array;
 1397|       |
 1398|   513k|  g_return_if_fail (array);
  ------------------
  |  |  630|   513k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   513k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   513k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   513k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   513k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   513k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   513k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   513k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 513k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   513k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   513k|   else                                         \
  |  |  |  |  |  | 1021|   513k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   513k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   513k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 513k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   513k|      { } \
  |  |  633|   513k|    else \
  |  |  634|   513k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   513k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   513k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 513k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1399|       |
 1400|   513k|  if (g_atomic_ref_count_dec (&rarray->ref_count))
  ------------------
  |  Branch (1400:7): [True: 513k, False: 0]
  ------------------
 1401|   513k|    ptr_array_free (array, FREE_SEGMENT);
 1402|   513k|}
g_ptr_array_add:
 1807|   416k|{
 1808|   416k|  GRealPtrArray *rarray = (GRealPtrArray *)array;
 1809|       |
 1810|   416k|  g_return_if_fail (rarray);
  ------------------
  |  |  630|   416k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   416k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   416k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   416k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   416k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   416k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   416k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   416k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 416k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   416k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   416k|   else                                         \
  |  |  |  |  |  | 1021|   416k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   416k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   416k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 416k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   416k|      { } \
  |  |  633|   416k|    else \
  |  |  634|   416k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   416k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   416k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 416k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1811|   416k|  g_return_if_fail (rarray->len == 0 || (rarray->len != 0 && rarray->pdata != NULL));
  ------------------
  |  |  630|   416k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   416k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   416k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   416k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   416k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   416k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   416k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.01M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 393k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 393k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 22.0k, False: 393k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   416k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   416k|   else                                         \
  |  |  |  |  |  | 1021|   416k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   416k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   416k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 416k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   416k|      { } \
  |  |  633|   416k|    else \
  |  |  634|   416k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   416k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   416k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 416k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1812|       |
 1813|   416k|  g_ptr_array_maybe_expand (rarray, 1);
 1814|       |
 1815|   416k|  rarray->pdata[rarray->len++] = data;
 1816|   416k|}
g_byte_array_new:
 2230|  1.15M|{
 2231|  1.15M|  return (GByteArray *)g_array_sized_new (FALSE, FALSE, 1, 0);
  ------------------
  |  |  814|  1.15M|#define	FALSE	(0)
  ------------------
                return (GByteArray *)g_array_sized_new (FALSE, FALSE, 1, 0);
  ------------------
  |  |  814|  1.15M|#define	FALSE	(0)
  ------------------
 2232|  1.15M|}
g_byte_array_free:
 2326|   146k|{
 2327|   146k|  return (guint8 *)g_array_free ((GArray *)array, free_segment);
 2328|   146k|}
g_byte_array_free_to_bytes:
 2350|   146k|{
 2351|   146k|  gsize length;
 2352|       |
 2353|   146k|  g_return_val_if_fail (array != NULL, NULL);
  ------------------
  |  |  643|   146k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   146k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   146k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   146k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   146k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   146k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   146k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   146k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 146k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   146k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   146k|   else                                         \
  |  |  |  |  |  | 1021|   146k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   146k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   146k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 146k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   146k|      { } \
  |  |  646|   146k|    else \
  |  |  647|   146k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   146k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   146k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 146k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2354|       |
 2355|   146k|  length = array->len;
 2356|   146k|  return g_bytes_new_take (g_byte_array_free (array, FALSE), length);
  ------------------
  |  |  814|   146k|#define	FALSE	(0)
  ------------------
 2357|   146k|}
g_byte_array_unref:
 2389|  1.00M|{
 2390|  1.00M|  g_array_unref ((GArray *)array);
 2391|  1.00M|}
g_byte_array_append:
 2408|  1.16M|{
 2409|  1.16M|  g_array_append_vals ((GArray *)array, (guint8 *)data, len);
 2410|       |
 2411|  1.16M|  return array;
 2412|  1.16M|}
garray.c:array_free:
  430|  1.23M|{
  431|  1.23M|  gchar *segment;
  432|       |
  433|  1.23M|  if (flags & FREE_SEGMENT)
  ------------------
  |  Branch (433:7): [True: 1.08M, False: 146k]
  ------------------
  434|  1.08M|    {
  435|  1.08M|      if (array->clear_func != NULL)
  ------------------
  |  Branch (435:11): [True: 0, False: 1.08M]
  ------------------
  436|      0|        {
  437|      0|          guint i;
  438|       |
  439|      0|          for (i = 0; i < array->len; i++)
  ------------------
  |  Branch (439:23): [True: 0, False: 0]
  ------------------
  440|      0|            array->clear_func (g_array_elt_pos (array, i));
  ------------------
  |  |  154|      0|#define g_array_elt_pos(array,i) ((array)->data + g_array_elt_len((array),(i)))
  |  |  ------------------
  |  |  |  |  153|      0|#define g_array_elt_len(array,i) ((array)->elt_size * (i))
  |  |  ------------------
  ------------------
  441|      0|        }
  442|       |
  443|  1.08M|      g_free (array->data);
  444|  1.08M|      segment = NULL;
  445|  1.08M|    }
  446|   146k|  else
  447|   146k|    segment = (gchar*) array->data;
  448|       |
  449|  1.23M|  if (flags & PRESERVE_WRAPPER)
  ------------------
  |  Branch (449:7): [True: 0, False: 1.23M]
  ------------------
  450|      0|    {
  451|      0|      array->data            = NULL;
  452|      0|      array->len             = 0;
  453|      0|      array->alloc           = 0;
  454|      0|    }
  455|  1.23M|  else
  456|  1.23M|    {
  457|  1.23M|      g_slice_free1 (sizeof (GRealArray), array);
  458|  1.23M|    }
  459|       |
  460|  1.23M|  return segment;
  461|  1.23M|}
garray.c:g_array_maybe_expand:
  973|  1.24M|{
  974|  1.24M|  guint want_alloc;
  975|       |
  976|       |  /* Detect potential overflow */
  977|  1.24M|  if G_UNLIKELY ((G_MAXUINT - array->len) < len)
  ------------------
  |  | 1025|  1.24M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  1.24M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.24M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.24M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.24M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.24M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.24M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.24M|   else                                         \
  |  |  |  | 1021|  1.24M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.24M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.24M|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 1.24M]
  |  |  ------------------
  ------------------
  978|  1.24M|    g_error ("adding %u to array would overflow", len);
  ------------------
  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  337|      0|                        for (;;) ;                   \
  |  |  338|      0|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  979|       |
  980|  1.24M|  want_alloc = g_array_elt_len (array, array->len + len +
  ------------------
  |  |  153|  1.24M|#define g_array_elt_len(array,i) ((array)->elt_size * (i))
  ------------------
  981|  1.24M|                                array->zero_terminated);
  982|       |
  983|  1.24M|  if (want_alloc > array->alloc)
  ------------------
  |  Branch (983:7): [True: 1.24M, False: 1.66k]
  ------------------
  984|  1.24M|    {
  985|  1.24M|      want_alloc = g_nearest_pow (want_alloc);
  986|  1.24M|      want_alloc = MAX (want_alloc, MIN_ARRAY_SIZE);
  ------------------
  |  |  822|  1.24M|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 143k, False: 1.09M]
  |  |  ------------------
  ------------------
  987|       |
  988|  1.24M|      array->data = g_realloc (array->data, want_alloc);
  989|       |
  990|  1.24M|      if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|  1.24M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  1.24M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.24M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.24M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.24M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.24M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.24M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.24M|   else                                         \
  |  |  |  | 1021|  1.24M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.24M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.24M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 1.24M]
  |  |  ------------------
  ------------------
  991|      0|        memset (array->data + array->alloc, 0, want_alloc - array->alloc);
  992|       |
  993|  1.24M|      array->alloc = want_alloc;
  994|  1.24M|    }
  995|  1.24M|}
garray.c:g_nearest_pow:
  953|  1.26M|{
  954|  1.26M|  guint n = num - 1;
  955|       |
  956|  1.26M|  g_assert (num > 0);
  ------------------
  |  |  231|  1.26M|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.26M|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|  1.26M|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|  1.26M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.26M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.26M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.26M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.26M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.26M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.26M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.26M|   else                                         \
  |  |  |  |  |  | 1021|  1.26M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.26M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.26M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 1.26M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|  1.26M|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|  1.26M|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.26M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.26M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  957|       |
  958|  1.26M|  n |= n >> 1;
  959|  1.26M|  n |= n >> 2;
  960|  1.26M|  n |= n >> 4;
  961|  1.26M|  n |= n >> 8;
  962|  1.26M|  n |= n >> 16;
  963|       |#if SIZEOF_INT == 8
  964|       |  n |= n >> 32;
  965|       |#endif
  966|       |
  967|  1.26M|  return n + 1;
  968|  1.26M|}
garray.c:ptr_array_new:
 1083|   513k|{
 1084|   513k|  GRealPtrArray *array;
 1085|       |
 1086|   513k|  array = g_slice_new (GRealPtrArray);
  ------------------
  |  |   46|   513k|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  ------------------
 1087|       |
 1088|   513k|  array->pdata = NULL;
 1089|   513k|  array->len = 0;
 1090|   513k|  array->alloc = 0;
 1091|   513k|  array->element_free_func = element_free_func;
 1092|       |
 1093|   513k|  g_atomic_ref_count_init (&array->ref_count);
 1094|       |
 1095|   513k|  if (reserved_size != 0)
  ------------------
  |  Branch (1095:7): [True: 0, False: 513k]
  ------------------
 1096|      0|    g_ptr_array_maybe_expand (array, reserved_size);
 1097|       |
 1098|   513k|  return (GPtrArray *) array;
 1099|   513k|}
garray.c:ptr_array_free:
 1450|   513k|{
 1451|   513k|  GRealPtrArray *rarray = (GRealPtrArray *)array;
 1452|   513k|  gpointer *segment;
 1453|       |
 1454|   513k|  if (flags & FREE_SEGMENT)
  ------------------
  |  Branch (1454:7): [True: 513k, False: 0]
  ------------------
 1455|   513k|    {
 1456|       |      /* Data here is stolen and freed manually. It is an
 1457|       |       * error to attempt to access the array data (including
 1458|       |       * mutating the array bounds) during destruction).
 1459|       |       *
 1460|       |       * https://bugzilla.gnome.org/show_bug.cgi?id=769064
 1461|       |       */
 1462|   513k|      gpointer *stolen_pdata = g_steal_pointer (&rarray->pdata);
  ------------------
  |  |  222|   513k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
 1463|   513k|      if (rarray->element_free_func != NULL)
  ------------------
  |  Branch (1463:11): [True: 513k, False: 0]
  ------------------
 1464|   513k|        {
 1465|   513k|          guint i;
 1466|       |
 1467|   929k|          for (i = 0; i < rarray->len; ++i)
  ------------------
  |  Branch (1467:23): [True: 416k, False: 513k]
  ------------------
 1468|   416k|            rarray->element_free_func (stolen_pdata[i]);
 1469|   513k|        }
 1470|       |
 1471|   513k|      g_free (stolen_pdata);
 1472|   513k|      segment = NULL;
 1473|   513k|    }
 1474|      0|  else
 1475|      0|    segment = rarray->pdata;
 1476|       |
 1477|   513k|  if (flags & PRESERVE_WRAPPER)
  ------------------
  |  Branch (1477:7): [True: 0, False: 513k]
  ------------------
 1478|      0|    {
 1479|      0|      rarray->pdata = NULL;
 1480|      0|      rarray->len = 0;
 1481|      0|      rarray->alloc = 0;
 1482|      0|    }
 1483|   513k|  else
 1484|   513k|    {
 1485|   513k|      g_slice_free1 (sizeof (GRealPtrArray), rarray);
 1486|   513k|    }
 1487|       |
 1488|   513k|  return segment;
 1489|   513k|}
garray.c:g_ptr_array_maybe_expand:
 1494|   416k|{
 1495|       |  /* Detect potential overflow */
 1496|   416k|  if G_UNLIKELY ((G_MAXUINT - array->len) < len)
  ------------------
  |  | 1025|   416k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   416k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   416k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   416k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   416k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 416k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   416k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   416k|   else                                         \
  |  |  |  | 1021|   416k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   416k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   416k|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 416k]
  |  |  ------------------
  ------------------
 1497|   416k|    g_error ("adding %u to array would overflow", len);
  ------------------
  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  337|      0|                        for (;;) ;                   \
  |  |  338|      0|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1498|       |
 1499|   416k|  if ((array->len + len) > array->alloc)
  ------------------
  |  Branch (1499:7): [True: 26.8k, False: 389k]
  ------------------
 1500|  26.8k|    {
 1501|  26.8k|      guint old_alloc = array->alloc;
 1502|  26.8k|      array->alloc = g_nearest_pow (array->len + len);
 1503|  26.8k|      array->alloc = MAX (array->alloc, MIN_ARRAY_SIZE);
  ------------------
  |  |  822|  26.8k|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 4.81k, False: 22.0k]
  |  |  ------------------
  ------------------
 1504|  26.8k|      array->pdata = g_realloc (array->pdata, sizeof (gpointer) * array->alloc);
 1505|  26.8k|      if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|  26.8k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  26.8k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  26.8k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  26.8k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  26.8k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 26.8k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  26.8k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  26.8k|   else                                         \
  |  |  |  | 1021|  26.8k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  26.8k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  26.8k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 26.8k]
  |  |  ------------------
  ------------------
 1506|      0|        for ( ; old_alloc < array->alloc; old_alloc++)
  ------------------
  |  Branch (1506:17): [True: 0, False: 0]
  ------------------
 1507|      0|          array->pdata [old_alloc] = NULL;
 1508|  26.8k|    }
 1509|   416k|}

g_pointer_bit_lock:
  402|  9.76M|{
  403|  9.76M|  g_return_if_fail (lock_bit < 32);
  ------------------
  |  |  630|  9.76M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  9.76M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  9.76M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  9.76M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  9.76M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  9.76M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  9.76M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  9.76M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9.76M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  9.76M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  9.76M|   else                                         \
  |  |  |  |  |  | 1021|  9.76M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  9.76M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  9.76M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9.76M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  9.76M|      { } \
  |  |  633|  9.76M|    else \
  |  |  634|  9.76M|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  9.76M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  9.76M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9.76M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  404|       |
  405|  9.76M|  {
  406|       |#ifdef USE_ASM_GOTO
  407|       | retry:
  408|       |    __asm__ volatile goto ("lock bts %1, (%0)\n"
  409|       |                           "jc %l[contended]"
  410|       |                           : /* no output */
  411|       |                           : "r" (address), "r" ((gsize) lock_bit)
  412|       |                           : "cc", "memory"
  413|       |                           : contended);
  414|       |    return;
  415|       |
  416|       | contended:
  417|       |    {
  418|       |      volatile gsize *pointer_address = address;
  419|       |      gsize mask = 1u << lock_bit;
  420|       |      gsize v;
  421|       |
  422|       |      v = (gsize) g_atomic_pointer_get (pointer_address);
  423|       |      if (v & mask)
  424|       |        {
  425|       |          guint class = ((gsize) address) % G_N_ELEMENTS (g_bit_lock_contended);
  426|       |
  427|       |          g_atomic_int_add (&g_bit_lock_contended[class], +1);
  428|       |          g_futex_wait (g_futex_int_address (address), v);
  429|       |          g_atomic_int_add (&g_bit_lock_contended[class], -1);
  430|       |        }
  431|       |    }
  432|       |    goto retry;
  433|       |#else
  434|  9.76M|  volatile gsize *pointer_address = address;
  435|  9.76M|  gsize mask = 1u << lock_bit;
  436|  9.76M|  gsize v;
  437|       |
  438|  9.76M| retry:
  439|  9.76M|  v = g_atomic_pointer_or (pointer_address, mask);
  ------------------
  |  |  235|  9.76M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  9.76M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  236|  9.76M|    gsize *gapo_atomic = (gsize *) (atomic);                                 \
  |  |  237|  9.76M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  ------------------
  |  |  |  |  765|  9.76M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  238|  9.76M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize));                    \
  |  |  ------------------
  |  |  |  |  765|  9.76M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  239|  9.76M|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  ------------------
  |  |  |  Branch (239:13): [Folded, False: 9.76M]
  |  |  ------------------
  |  |  240|  9.76M|    (void) (0 ? (val) ^ (val) : 1);                                          \
  |  |  ------------------
  |  |  |  Branch (240:13): [Folded, False: 9.76M]
  |  |  ------------------
  |  |  241|  9.76M|    (gsize) __atomic_fetch_or (gapo_atomic, (val), __ATOMIC_SEQ_CST);        \
  |  |  242|  9.76M|  }))
  ------------------
  440|  9.76M|  if (v & mask)
  ------------------
  |  Branch (440:7): [True: 0, False: 9.76M]
  ------------------
  441|       |    /* already locked */
  442|      0|    {
  443|      0|      guint class = ((gsize) address) % G_N_ELEMENTS (g_bit_lock_contended);
  ------------------
  |  |  840|      0|#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
  ------------------
  444|       |
  445|      0|      g_atomic_int_add (&g_bit_lock_contended[class], +1);
  ------------------
  |  |  167|      0|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  168|      0|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      0|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  169|      0|    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
  |  |  ------------------
  |  |  |  Branch (169:13): [Folded, False: 0]
  |  |  ------------------
  |  |  170|      0|    (gint) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST);           \
  |  |  171|      0|  }))
  ------------------
  446|      0|      g_futex_wait (g_futex_int_address (address), (guint) v);
  447|      0|      g_atomic_int_add (&g_bit_lock_contended[class], -1);
  ------------------
  |  |  167|      0|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  168|      0|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      0|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  169|      0|    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
  |  |  ------------------
  |  |  |  Branch (169:13): [Folded, False: 0]
  |  |  ------------------
  |  |  170|      0|    (gint) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST);           \
  |  |  171|      0|  }))
  ------------------
  448|       |
  449|      0|      goto retry;
  450|      0|    }
  451|  9.76M|#endif
  452|  9.76M|  }
  453|  9.76M|}
g_pointer_bit_unlock:
  518|  9.76M|{
  519|  9.76M|  g_return_if_fail (lock_bit < 32);
  ------------------
  |  |  630|  9.76M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  9.76M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  9.76M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  9.76M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  9.76M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  9.76M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  9.76M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  9.76M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9.76M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  9.76M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  9.76M|   else                                         \
  |  |  |  |  |  | 1021|  9.76M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  9.76M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  9.76M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9.76M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  9.76M|      { } \
  |  |  633|  9.76M|    else \
  |  |  634|  9.76M|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  9.76M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  9.76M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9.76M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  520|       |
  521|  9.76M|  {
  522|       |#ifdef USE_ASM_GOTO
  523|       |    __asm__ volatile ("lock btr %1, (%0)"
  524|       |                      : /* no output */
  525|       |                      : "r" (address), "r" ((gsize) lock_bit)
  526|       |                      : "cc", "memory");
  527|       |#else
  528|  9.76M|    volatile gsize *pointer_address = address;
  529|  9.76M|    gsize mask = 1u << lock_bit;
  530|       |
  531|  9.76M|    g_atomic_pointer_and (pointer_address, ~mask);
  ------------------
  |  |  226|  9.76M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  9.76M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  227|  9.76M|    gsize *gapa_atomic = (gsize *) (atomic);                                 \
  |  |  228|  9.76M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  ------------------
  |  |  |  |  765|  9.76M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  229|  9.76M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize));                    \
  |  |  ------------------
  |  |  |  |  765|  9.76M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  230|  9.76M|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  ------------------
  |  |  |  Branch (230:13): [Folded, False: 9.76M]
  |  |  ------------------
  |  |  231|  9.76M|    (void) (0 ? (val) ^ (val) : 1);                                          \
  |  |  ------------------
  |  |  |  Branch (231:13): [Folded, False: 9.76M]
  |  |  ------------------
  |  |  232|  9.76M|    (gsize) __atomic_fetch_and (gapa_atomic, (val), __ATOMIC_SEQ_CST);       \
  |  |  233|  9.76M|  }))
  ------------------
  532|  9.76M|#endif
  533|       |
  534|  9.76M|    {
  535|  9.76M|      guint class = ((gsize) address) % G_N_ELEMENTS (g_bit_lock_contended);
  ------------------
  |  |  840|  9.76M|#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
  ------------------
  536|  9.76M|      if (g_atomic_int_get (&g_bit_lock_contended[class]))
  ------------------
  |  |   96|  9.76M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  9.76M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  |  Branch (96:3): [True: 0, False: 9.76M]
  |  |  ------------------
  |  |   97|  9.76M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  9.76M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  9.76M|    gint gaig_temp;                                                          \
  |  |   99|  9.76M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 9.76M]
  |  |  ------------------
  |  |  100|  9.76M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  9.76M|    (gint) gaig_temp;                                                        \
  |  |  102|  9.76M|  }))
  ------------------
  537|      0|        g_futex_wake (g_futex_int_address (address));
  538|  9.76M|    }
  539|  9.76M|  }
  540|  9.76M|}

gsignal.c:g_bsearch_array_create:
  123|    838|{
  124|    838|  GBSearchArray *barray;
  125|    838|  guint size;
  126|       |
  127|    838|  g_return_val_if_fail (bconfig != NULL, NULL);
  ------------------
  |  |  643|    838|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    838|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    838|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    838|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    838| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    838|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    838|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    838|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 838, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    838|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    838|   else                                         \
  |  |  |  |  |  | 1021|    838|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    838|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    838|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 838, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    838|      { } \
  |  |  646|    838|    else \
  |  |  647|    838|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    838|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    838|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 838]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  128|       |
  129|    838|  size = sizeof (GBSearchArray) + bconfig->sizeof_node;
  130|    838|  if (bconfig->flags & G_BSEARCH_ARRAY_ALIGN_POWER2)
  ------------------
  |  Branch (130:7): [True: 2, False: 836]
  ------------------
  131|      2|    size = G_BSEARCH_UPPER_POWER2 (size);
  ------------------
  |  |  119|      2|#define G_BSEARCH_UPPER_POWER2(n)       ((n) ? 1 << g_bit_storage ((n) - 1) : 0)
  |  |  ------------------
  |  |  |  |  370|      2|#define g_bit_storage(number)        g_bit_storage_impl(number)
  |  |  ------------------
  |  |  |  Branch (119:42): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  132|    838|  barray = (GBSearchArray *) g_malloc (size);
  133|    838|  memset (barray, 0, sizeof (GBSearchArray));
  134|       |
  135|    838|  return barray;
  136|    838|}
gsignal.c:g_bsearch_array_lookup_fuzzy:
  147|  28.5k|{
  148|  28.5k|  GBSearchCompareFunc cmp_nodes = bconfig->cmp_nodes;
  149|  28.5k|  guint8 *check = NULL, *nodes = G_BSEARCH_ARRAY_NODES (barray);
  ------------------
  |  |  120|  28.5k|#define G_BSEARCH_ARRAY_NODES(barray)    (((guint8*) (barray)) + sizeof (GBSearchArray))
  ------------------
  150|  28.5k|  guint n_nodes = barray->n_nodes, offs = 0;
  151|  28.5k|  guint sizeof_node = bconfig->sizeof_node;
  152|  28.5k|  gint cmp = 0;
  153|       |
  154|  68.5k|  while (offs < n_nodes)
  ------------------
  |  Branch (154:10): [True: 56.8k, False: 11.6k]
  ------------------
  155|  56.8k|    {
  156|  56.8k|      guint i = (offs + n_nodes) >> 1;
  157|       |
  158|  56.8k|      check = nodes + i * sizeof_node;
  159|  56.8k|      cmp = cmp_nodes (key_node, check);
  160|  56.8k|      if (cmp == 0)
  ------------------
  |  Branch (160:11): [True: 16.8k, False: 39.9k]
  ------------------
  161|  16.8k|        return sibling_or_after > 1 ? NULL : check;
  ------------------
  |  Branch (161:16): [True: 2.49k, False: 14.3k]
  ------------------
  162|  39.9k|      else if (cmp < 0)
  ------------------
  |  Branch (162:16): [True: 23.3k, False: 16.6k]
  ------------------
  163|  23.3k|        n_nodes = i;
  164|  16.6k|      else /* (cmp > 0) */
  165|  16.6k|        offs = i + 1;
  166|  56.8k|    }
  167|       |
  168|       |  /* check is last mismatch, cmp > 0 indicates greater key */
  169|  11.6k|  return G_LIKELY (!sibling_or_after) ? NULL : (sibling_or_after > 1 && cmp > 0) ? check + sizeof_node : check;
  ------------------
  |  | 1024|  11.6k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  11.6k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  11.6k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  11.6k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  11.6k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 11.6k, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1019|  11.6k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  11.6k|   else                                         \
  |  |  |  | 1021|  11.6k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  11.6k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  11.6k|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 11.6k, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (169:49): [True: 4, False: 0]
  |  Branch (169:73): [True: 4, False: 0]
  ------------------
  170|  28.5k|}
gsignal.c:g_bsearch_array_get_nth:
  175|  2.20k|{
  176|  2.20k|  return (G_LIKELY (nth < barray->n_nodes) ?
  ------------------
  |  | 1024|  2.20k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  2.20k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  2.20k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  2.20k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  2.20k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 2.20k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  2.20k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  2.20k|   else                                         \
  |  |  |  | 1021|  2.20k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  2.20k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  2.20k|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 2.20k, False: 0]
  |  |  ------------------
  ------------------
  177|  2.20k|          G_BSEARCH_ARRAY_NODES (barray) + nth * bconfig->sizeof_node :
  ------------------
  |  |  120|  2.20k|#define G_BSEARCH_ARRAY_NODES(barray)    (((guint8*) (barray)) + sizeof (GBSearchArray))
  ------------------
  178|       |          NULL);
  179|  2.20k|}
gsignal.c:g_bsearch_array_insert:
  222|  3.33k|{
  223|  3.33k|  guint8 *node;
  224|       |
  225|  3.33k|  if (G_UNLIKELY (!barray->n_nodes))
  ------------------
  |  | 1025|  3.33k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.33k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.33k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.33k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.33k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 837, False: 2.50k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.33k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.33k|   else                                         \
  |  |  |  | 1021|  3.33k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.33k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.33k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 837, False: 2.50k]
  |  |  ------------------
  ------------------
  226|    837|    {
  227|    837|      barray = g_bsearch_array_grow (barray, bconfig, 0);
  228|    837|      node = G_BSEARCH_ARRAY_NODES (barray);
  ------------------
  |  |  120|    837|#define G_BSEARCH_ARRAY_NODES(barray)    (((guint8*) (barray)) + sizeof (GBSearchArray))
  ------------------
  229|    837|    }
  230|  2.50k|  else
  231|  2.50k|    {
  232|  2.50k|      node = (guint8 *) g_bsearch_array_lookup_insertion (barray, bconfig, key_node);
  ------------------
  |  |  114|  2.50k|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 2)
  ------------------
  233|  2.50k|      if (G_LIKELY (node))
  ------------------
  |  | 1024|  2.50k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  2.50k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  2.50k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  2.50k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  2.50k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 4, False: 2.49k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  2.50k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  2.50k|   else                                         \
  |  |  |  | 1021|  2.50k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  2.50k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  2.50k|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 4, False: 2.49k]
  |  |  ------------------
  ------------------
  234|      4|        {
  235|      4|          guint index_ = g_bsearch_array_get_index (barray, bconfig, node);
  236|       |
  237|       |          /* grow and insert */
  238|      4|          barray = g_bsearch_array_grow (barray, bconfig, index_);
  239|      4|          node = G_BSEARCH_ARRAY_NODES (barray) + index_ * bconfig->sizeof_node;
  ------------------
  |  |  120|      4|#define G_BSEARCH_ARRAY_NODES(barray)    (((guint8*) (barray)) + sizeof (GBSearchArray))
  ------------------
  240|      4|        }
  241|  2.49k|      else /* no insertion needed, node already there */
  242|  2.49k|        return barray;
  243|  2.50k|    }
  244|    841|  memcpy (node, key_node, bconfig->sizeof_node);
  245|    841|  return barray;
  246|  3.33k|}
gsignal.c:g_bsearch_array_grow:
  197|    841|{
  198|    841|  guint old_size = barray->n_nodes * bconfig->sizeof_node;
  199|    841|  guint new_size = old_size + bconfig->sizeof_node;
  200|    841|  guint8 *node;
  201|       |
  202|    841|  g_return_val_if_fail (index_ <= barray->n_nodes, NULL);
  ------------------
  |  |  643|    841|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    841|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    841|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    841|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    841| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    841|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    841|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    841|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 841, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    841|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    841|   else                                         \
  |  |  |  |  |  | 1021|    841|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    841|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    841|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 841, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    841|      { } \
  |  |  646|    841|    else \
  |  |  647|    841|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    841|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    841|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 841]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  203|       |
  204|    841|  if (G_UNLIKELY (bconfig->flags & G_BSEARCH_ARRAY_ALIGN_POWER2))
  ------------------
  |  | 1025|    841|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|    841| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    841|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|    841|   int _g_boolean_var_;                         \
  |  |  |  | 1018|    841|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 5, False: 836]
  |  |  |  |  ------------------
  |  |  |  | 1019|    841|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|    841|   else                                         \
  |  |  |  | 1021|    841|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|    841|   _g_boolean_var_;                             \
  |  |  |  | 1023|    841|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 5, False: 836]
  |  |  ------------------
  ------------------
  205|      5|    {
  206|      5|      new_size = G_BSEARCH_UPPER_POWER2 (sizeof (GBSearchArray) + new_size);
  ------------------
  |  |  119|      5|#define G_BSEARCH_UPPER_POWER2(n)       ((n) ? 1 << g_bit_storage ((n) - 1) : 0)
  |  |  ------------------
  |  |  |  |  370|      5|#define g_bit_storage(number)        g_bit_storage_impl(number)
  |  |  ------------------
  |  |  |  Branch (119:42): [True: 5, False: 0]
  |  |  ------------------
  ------------------
  207|      5|      old_size = G_BSEARCH_UPPER_POWER2 (sizeof (GBSearchArray) + old_size);
  ------------------
  |  |  119|      5|#define G_BSEARCH_UPPER_POWER2(n)       ((n) ? 1 << g_bit_storage ((n) - 1) : 0)
  |  |  ------------------
  |  |  |  |  370|      5|#define g_bit_storage(number)        g_bit_storage_impl(number)
  |  |  ------------------
  |  |  |  Branch (119:42): [True: 5, False: 0]
  |  |  ------------------
  ------------------
  208|      5|      if (old_size != new_size)
  ------------------
  |  Branch (208:11): [True: 3, False: 2]
  ------------------
  209|      3|        barray = (GBSearchArray *) g_realloc (barray, new_size);
  210|      5|    }
  211|    836|  else
  212|    836|    barray = (GBSearchArray *) g_realloc (barray, sizeof (GBSearchArray) + new_size);
  213|    841|  node = G_BSEARCH_ARRAY_NODES (barray) + index_ * bconfig->sizeof_node;
  ------------------
  |  |  120|    841|#define G_BSEARCH_ARRAY_NODES(barray)    (((guint8*) (barray)) + sizeof (GBSearchArray))
  ------------------
  214|    841|  memmove (node + bconfig->sizeof_node, node, (barray->n_nodes - index_) * bconfig->sizeof_node);
  215|    841|  barray->n_nodes += 1;
  216|    841|  return barray;
  217|    841|}
gsignal.c:g_bsearch_array_get_index:
  184|      4|{
  185|      4|  guint distance = ((guint8*) node_in_array) - G_BSEARCH_ARRAY_NODES (barray);
  ------------------
  |  |  120|      4|#define G_BSEARCH_ARRAY_NODES(barray)    (((guint8*) (barray)) + sizeof (GBSearchArray))
  ------------------
  186|       |
  187|      4|  g_return_val_if_fail (node_in_array != NULL, barray->n_nodes);
  ------------------
  |  |  643|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      4|      { } \
  |  |  646|      4|    else \
  |  |  647|      4|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|       |
  189|      4|  distance /= bconfig->sizeof_node;
  190|       |
  191|      4|  return MIN (distance, barray->n_nodes + 1); /* may return one after end */
  ------------------
  |  |  825|      4|#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (825:21): [True: 4, False: 0]
  |  |  ------------------
  ------------------
  192|      4|}
gsignal.c:g_bsearch_array_free:
  291|    832|{
  292|    832|  g_return_if_fail (barray != NULL);
  ------------------
  |  |  630|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    832|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    832|      { } \
  |  |  633|    832|    else \
  |  |  634|    832|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  293|       |
  294|    832|  g_free (barray);
  295|    832|}
gvalue.c:g_bsearch_array_create:
  123|      2|{
  124|      2|  GBSearchArray *barray;
  125|      2|  guint size;
  126|       |
  127|      2|  g_return_val_if_fail (bconfig != NULL, NULL);
  ------------------
  |  |  643|      2|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      2|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      2|      { } \
  |  |  646|      2|    else \
  |  |  647|      2|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      2|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  128|       |
  129|      2|  size = sizeof (GBSearchArray) + bconfig->sizeof_node;
  130|      2|  if (bconfig->flags & G_BSEARCH_ARRAY_ALIGN_POWER2)
  ------------------
  |  Branch (130:7): [True: 2, False: 0]
  ------------------
  131|      2|    size = G_BSEARCH_UPPER_POWER2 (size);
  ------------------
  |  |  119|      2|#define G_BSEARCH_UPPER_POWER2(n)       ((n) ? 1 << g_bit_storage ((n) - 1) : 0)
  |  |  ------------------
  |  |  |  |  370|      2|#define g_bit_storage(number)        g_bit_storage_impl(number)
  |  |  ------------------
  |  |  |  Branch (119:42): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  132|      2|  barray = (GBSearchArray *) g_malloc (size);
  133|      2|  memset (barray, 0, sizeof (GBSearchArray));
  134|       |
  135|      2|  return barray;
  136|      2|}
gvalue.c:g_bsearch_array_replace:
  251|    340|{
  252|    340|  guint8 *node = (guint8 *) g_bsearch_array_lookup (barray, bconfig, key_node);
  ------------------
  |  |   97|    340|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
  ------------------
  253|    340|  if (G_LIKELY (node))  /* expected path */
  ------------------
  |  | 1024|    340|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|    340| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    340|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|    340|   int _g_boolean_var_;                         \
  |  |  |  | 1018|    340|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 340]
  |  |  |  |  ------------------
  |  |  |  | 1019|    340|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|    340|   else                                         \
  |  |  |  | 1021|    340|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|    340|   _g_boolean_var_;                             \
  |  |  |  | 1023|    340|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 0, False: 340]
  |  |  ------------------
  ------------------
  254|      0|    memcpy (node, key_node, bconfig->sizeof_node);
  255|    340|  else                  /* revert to insertion */
  256|    340|    barray = g_bsearch_array_insert (barray, bconfig, key_node);
  257|    340|  return barray;
  258|    340|}
gvalue.c:g_bsearch_array_lookup_fuzzy:
  147|    678|{
  148|    678|  GBSearchCompareFunc cmp_nodes = bconfig->cmp_nodes;
  149|    678|  guint8 *check = NULL, *nodes = G_BSEARCH_ARRAY_NODES (barray);
  ------------------
  |  |  120|    678|#define G_BSEARCH_ARRAY_NODES(barray)    (((guint8*) (barray)) + sizeof (GBSearchArray))
  ------------------
  150|    678|  guint n_nodes = barray->n_nodes, offs = 0;
  151|    678|  guint sizeof_node = bconfig->sizeof_node;
  152|    678|  gint cmp = 0;
  153|       |
  154|  4.70k|  while (offs < n_nodes)
  ------------------
  |  Branch (154:10): [True: 4.02k, False: 678]
  ------------------
  155|  4.02k|    {
  156|  4.02k|      guint i = (offs + n_nodes) >> 1;
  157|       |
  158|  4.02k|      check = nodes + i * sizeof_node;
  159|  4.02k|      cmp = cmp_nodes (key_node, check);
  160|  4.02k|      if (cmp == 0)
  ------------------
  |  Branch (160:11): [True: 0, False: 4.02k]
  ------------------
  161|      0|        return sibling_or_after > 1 ? NULL : check;
  ------------------
  |  Branch (161:16): [True: 0, False: 0]
  ------------------
  162|  4.02k|      else if (cmp < 0)
  ------------------
  |  Branch (162:16): [True: 924, False: 3.10k]
  ------------------
  163|    924|        n_nodes = i;
  164|  3.10k|      else /* (cmp > 0) */
  165|  3.10k|        offs = i + 1;
  166|  4.02k|    }
  167|       |
  168|       |  /* check is last mismatch, cmp > 0 indicates greater key */
  169|    678|  return G_LIKELY (!sibling_or_after) ? NULL : (sibling_or_after > 1 && cmp > 0) ? check + sizeof_node : check;
  ------------------
  |  | 1024|    678|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|    678| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    678|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|    678|   int _g_boolean_var_;                         \
  |  |  |  | 1018|    678|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 340, False: 338]
  |  |  |  |  ------------------
  |  |  |  | 1019|    678|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|    678|   else                                         \
  |  |  |  | 1021|    678|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|    678|   _g_boolean_var_;                             \
  |  |  |  | 1023|    678|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 340, False: 338]
  |  |  ------------------
  ------------------
  |  Branch (169:49): [True: 338, False: 0]
  |  Branch (169:73): [True: 212, False: 126]
  ------------------
  170|    678|}
gvalue.c:g_bsearch_array_insert:
  222|    340|{
  223|    340|  guint8 *node;
  224|       |
  225|    340|  if (G_UNLIKELY (!barray->n_nodes))
  ------------------
  |  | 1025|    340|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|    340| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    340|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|    340|   int _g_boolean_var_;                         \
  |  |  |  | 1018|    340|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 2, False: 338]
  |  |  |  |  ------------------
  |  |  |  | 1019|    340|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|    340|   else                                         \
  |  |  |  | 1021|    340|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|    340|   _g_boolean_var_;                             \
  |  |  |  | 1023|    340|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 2, False: 338]
  |  |  ------------------
  ------------------
  226|      2|    {
  227|      2|      barray = g_bsearch_array_grow (barray, bconfig, 0);
  228|      2|      node = G_BSEARCH_ARRAY_NODES (barray);
  ------------------
  |  |  120|      2|#define G_BSEARCH_ARRAY_NODES(barray)    (((guint8*) (barray)) + sizeof (GBSearchArray))
  ------------------
  229|      2|    }
  230|    338|  else
  231|    338|    {
  232|    338|      node = (guint8 *) g_bsearch_array_lookup_insertion (barray, bconfig, key_node);
  ------------------
  |  |  114|    338|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 2)
  ------------------
  233|    338|      if (G_LIKELY (node))
  ------------------
  |  | 1024|    338|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|    338| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    338|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|    338|   int _g_boolean_var_;                         \
  |  |  |  | 1018|    338|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 338, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|    338|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|    338|   else                                         \
  |  |  |  | 1021|    338|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|    338|   _g_boolean_var_;                             \
  |  |  |  | 1023|    338|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 338, False: 0]
  |  |  ------------------
  ------------------
  234|    338|        {
  235|    338|          guint index_ = g_bsearch_array_get_index (barray, bconfig, node);
  236|       |
  237|       |          /* grow and insert */
  238|    338|          barray = g_bsearch_array_grow (barray, bconfig, index_);
  239|    338|          node = G_BSEARCH_ARRAY_NODES (barray) + index_ * bconfig->sizeof_node;
  ------------------
  |  |  120|    338|#define G_BSEARCH_ARRAY_NODES(barray)    (((guint8*) (barray)) + sizeof (GBSearchArray))
  ------------------
  240|    338|        }
  241|      0|      else /* no insertion needed, node already there */
  242|      0|        return barray;
  243|    338|    }
  244|    340|  memcpy (node, key_node, bconfig->sizeof_node);
  245|    340|  return barray;
  246|    340|}
gvalue.c:g_bsearch_array_grow:
  197|    340|{
  198|    340|  guint old_size = barray->n_nodes * bconfig->sizeof_node;
  199|    340|  guint new_size = old_size + bconfig->sizeof_node;
  200|    340|  guint8 *node;
  201|       |
  202|    340|  g_return_val_if_fail (index_ <= barray->n_nodes, NULL);
  ------------------
  |  |  643|    340|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    340|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    340|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    340|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    340| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    340|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    340|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    340|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 340, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    340|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    340|   else                                         \
  |  |  |  |  |  | 1021|    340|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    340|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    340|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 340, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    340|      { } \
  |  |  646|    340|    else \
  |  |  647|    340|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    340|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    340|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 340]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  203|       |
  204|    340|  if (G_UNLIKELY (bconfig->flags & G_BSEARCH_ARRAY_ALIGN_POWER2))
  ------------------
  |  | 1025|    340|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|    340| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    340|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|    340|   int _g_boolean_var_;                         \
  |  |  |  | 1018|    340|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 340, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|    340|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|    340|   else                                         \
  |  |  |  | 1021|    340|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|    340|   _g_boolean_var_;                             \
  |  |  |  | 1023|    340|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 340, False: 0]
  |  |  ------------------
  ------------------
  205|    340|    {
  206|    340|      new_size = G_BSEARCH_UPPER_POWER2 (sizeof (GBSearchArray) + new_size);
  ------------------
  |  |  119|    340|#define G_BSEARCH_UPPER_POWER2(n)       ((n) ? 1 << g_bit_storage ((n) - 1) : 0)
  |  |  ------------------
  |  |  |  |  370|    340|#define g_bit_storage(number)        g_bit_storage_impl(number)
  |  |  ------------------
  |  |  |  Branch (119:42): [True: 340, False: 0]
  |  |  ------------------
  ------------------
  207|    340|      old_size = G_BSEARCH_UPPER_POWER2 (sizeof (GBSearchArray) + old_size);
  ------------------
  |  |  119|    340|#define G_BSEARCH_UPPER_POWER2(n)       ((n) ? 1 << g_bit_storage ((n) - 1) : 0)
  |  |  ------------------
  |  |  |  |  370|    340|#define g_bit_storage(number)        g_bit_storage_impl(number)
  |  |  ------------------
  |  |  |  Branch (119:42): [True: 340, False: 0]
  |  |  ------------------
  ------------------
  208|    340|      if (old_size != new_size)
  ------------------
  |  Branch (208:11): [True: 16, False: 324]
  ------------------
  209|     16|        barray = (GBSearchArray *) g_realloc (barray, new_size);
  210|    340|    }
  211|      0|  else
  212|      0|    barray = (GBSearchArray *) g_realloc (barray, sizeof (GBSearchArray) + new_size);
  213|    340|  node = G_BSEARCH_ARRAY_NODES (barray) + index_ * bconfig->sizeof_node;
  ------------------
  |  |  120|    340|#define G_BSEARCH_ARRAY_NODES(barray)    (((guint8*) (barray)) + sizeof (GBSearchArray))
  ------------------
  214|    340|  memmove (node + bconfig->sizeof_node, node, (barray->n_nodes - index_) * bconfig->sizeof_node);
  215|    340|  barray->n_nodes += 1;
  216|    340|  return barray;
  217|    340|}
gvalue.c:g_bsearch_array_get_index:
  184|    338|{
  185|    338|  guint distance = ((guint8*) node_in_array) - G_BSEARCH_ARRAY_NODES (barray);
  ------------------
  |  |  120|    338|#define G_BSEARCH_ARRAY_NODES(barray)    (((guint8*) (barray)) + sizeof (GBSearchArray))
  ------------------
  186|       |
  187|    338|  g_return_val_if_fail (node_in_array != NULL, barray->n_nodes);
  ------------------
  |  |  643|    338|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    338|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    338|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    338|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    338| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    338|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    338|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    338|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 338, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    338|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    338|   else                                         \
  |  |  |  |  |  | 1021|    338|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    338|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    338|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 338, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    338|      { } \
  |  |  646|    338|    else \
  |  |  647|    338|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    338|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    338|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 338]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|       |
  189|    338|  distance /= bconfig->sizeof_node;
  190|       |
  191|    338|  return MIN (distance, barray->n_nodes + 1); /* may return one after end */
  ------------------
  |  |  825|    338|#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (825:21): [True: 338, False: 0]
  |  |  ------------------
  ------------------
  192|    338|}

g_bytes_new:
   95|  2.21k|{
   96|  2.21k|  g_return_val_if_fail (data != NULL || size == 0, NULL);
  ------------------
  |  |  643|  2.21k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.21k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.21k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.21k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.21k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.21k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.21k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  4.42k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.21k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.21k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.21k|   else                                         \
  |  |  |  |  |  | 1021|  2.21k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.21k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.21k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.21k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.21k|      { } \
  |  |  646|  2.21k|    else \
  |  |  647|  2.21k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  2.21k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.21k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.21k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   97|       |
   98|  2.21k|  return g_bytes_new_take (g_memdup2 (data, size), size);
   99|  2.21k|}
g_bytes_new_take:
  127|   148k|{
  128|   148k|  return g_bytes_new_with_free_func (data, size, g_free, data);
  129|   148k|}
g_bytes_new_static:
  150|    832|{
  151|    832|  return g_bytes_new_with_free_func (data, size, NULL, NULL);
  152|    832|}
g_bytes_new_with_free_func:
  181|   149k|{
  182|   149k|  GBytes *bytes;
  183|       |
  184|   149k|  g_return_val_if_fail (data != NULL || size == 0, NULL);
  ------------------
  |  |  643|   149k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   149k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   149k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   149k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   149k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   149k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   149k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   298k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 149k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   149k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   149k|   else                                         \
  |  |  |  |  |  | 1021|   149k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   149k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   149k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 149k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   149k|      { } \
  |  |  646|   149k|    else \
  |  |  647|   149k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   149k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   149k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 149k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  185|       |
  186|   149k|  bytes = g_slice_new (GBytes);
  ------------------
  |  |   46|   149k|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  ------------------
  187|   149k|  bytes->data = data;
  188|   149k|  bytes->size = size;
  189|   149k|  bytes->free_func = free_func;
  190|   149k|  bytes->user_data = user_data;
  191|   149k|  g_atomic_ref_count_init (&bytes->ref_count);
  192|       |
  193|   149k|  return (GBytes *)bytes;
  194|   149k|}
g_bytes_get_data:
  272|  1.16M|{
  273|  1.16M|  g_return_val_if_fail (bytes != NULL, NULL);
  ------------------
  |  |  643|  1.16M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.16M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.16M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.16M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.16M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.16M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.16M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.16M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.16M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.16M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.16M|   else                                         \
  |  |  |  |  |  | 1021|  1.16M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.16M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.16M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.16M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.16M|      { } \
  |  |  646|  1.16M|    else \
  |  |  647|  1.16M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.16M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.16M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.16M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  274|  1.16M|  if (size)
  ------------------
  |  Branch (274:7): [True: 1.16M, False: 0]
  ------------------
  275|  1.16M|    *size = bytes->size;
  276|  1.16M|  return bytes->data;
  277|  1.16M|}
g_bytes_get_size:
  293|  1.59M|{
  294|  1.59M|  g_return_val_if_fail (bytes != NULL, 0);
  ------------------
  |  |  643|  1.59M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.59M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.59M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.59M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.59M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.59M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.59M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.59M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.59M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.59M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.59M|   else                                         \
  |  |  |  |  |  | 1021|  1.59M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.59M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.59M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.59M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.59M|      { } \
  |  |  646|  1.59M|    else \
  |  |  647|  1.59M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.59M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.59M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.59M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  295|  1.59M|  return bytes->size;
  296|  1.59M|}
g_bytes_ref:
  311|   576k|{
  312|   576k|  g_return_val_if_fail (bytes != NULL, NULL);
  ------------------
  |  |  643|   576k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   576k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   576k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   576k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   576k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   576k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   576k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   576k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 576k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   576k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   576k|   else                                         \
  |  |  |  |  |  | 1021|   576k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   576k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   576k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 576k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   576k|      { } \
  |  |  646|   576k|    else \
  |  |  647|   576k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   576k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   576k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 576k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  313|       |
  314|   576k|  g_atomic_ref_count_inc (&bytes->ref_count);
  315|       |
  316|   576k|  return bytes;
  317|   576k|}
g_bytes_unref:
  330|   725k|{
  331|   725k|  if (bytes == NULL)
  ------------------
  |  Branch (331:7): [True: 0, False: 725k]
  ------------------
  332|      0|    return;
  333|       |
  334|   725k|  if (g_atomic_ref_count_dec (&bytes->ref_count))
  ------------------
  |  Branch (334:7): [True: 149k, False: 576k]
  ------------------
  335|   149k|    {
  336|   149k|      if (bytes->free_func != NULL)
  ------------------
  |  Branch (336:11): [True: 148k, False: 832]
  ------------------
  337|   148k|        bytes->free_func (bytes->user_data);
  338|   149k|      g_slice_free (GBytes, bytes);
  ------------------
  |  |   79|   149k|#define g_slice_free(type, mem)                                 \
  |  |  ------------------
  |  |  |  |  874|   149k|#define G_STMT_START  do
  |  |  ------------------
  |  |   80|   149k|G_STMT_START {                                                  \
  |  |   81|   149k|  if (1) g_slice_free1 (sizeof (type), (mem));			\
  |  |  ------------------
  |  |  |  Branch (81:7): [True: 149k, Folded]
  |  |  ------------------
  |  |   82|   149k|  else   (void) ((type*) 0 == (mem)); 				\
  |  |   83|   149k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   149k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 149k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  339|   149k|    }
  340|   725k|}

g_datalist_clear:
  255|  1.29M|{
  256|  1.29M|  GData *data;
  257|  1.29M|  guint i;
  258|       |
  259|  1.29M|  g_return_if_fail (datalist != NULL);
  ------------------
  |  |  630|  1.29M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.29M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.29M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.29M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.29M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.29M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.29M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.29M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.29M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.29M|   else                                         \
  |  |  |  |  |  | 1021|  1.29M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.29M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.29M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.29M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.29M|      { } \
  |  |  633|  1.29M|    else \
  |  |  634|  1.29M|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  1.29M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.29M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.29M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  260|       |
  261|  1.29M|  g_datalist_lock (datalist);
  262|       |
  263|  1.29M|  data = G_DATALIST_GET_POINTER (datalist);
  ------------------
  |  |  142|  1.29M|  ((GData*) ((gsize) g_atomic_pointer_get (datalist) & ~(gsize) G_DATALIST_FLAGS_MASK_INTERNAL))
  |  |  ------------------
  |  |  |  |  113|  1.29M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  1.29M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.29M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  1.29M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  1.29M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  1.29M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  1.29M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  1.29M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  1.29M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  1.29M|  }))
  |  |  ------------------
  |  |                 ((GData*) ((gsize) g_atomic_pointer_get (datalist) & ~(gsize) G_DATALIST_FLAGS_MASK_INTERNAL))
  |  |  ------------------
  |  |  |  |  138|  1.29M|#define G_DATALIST_FLAGS_MASK_INTERNAL 0x7
  |  |  ------------------
  ------------------
  264|  1.29M|  G_DATALIST_SET_POINTER (datalist, NULL);
  ------------------
  |  |  144|  1.29M|#define G_DATALIST_SET_POINTER(datalist, pointer)       G_STMT_START {                  \
  |  |  ------------------
  |  |  |  |  874|  1.29M|#define G_STMT_START  do
  |  |  ------------------
  |  |  145|  1.29M|  gpointer _oldv, _newv;                                                                \
  |  |  146|  1.29M|  do {                                                                                  \
  |  |  147|  1.29M|    _oldv = g_atomic_pointer_get (datalist);                                            \
  |  |  ------------------
  |  |  |  |  113|  1.29M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  1.29M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.29M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  1.29M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  1.29M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  1.29M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  1.29M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  1.29M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  1.29M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  1.29M|  }))
  |  |  ------------------
  |  |  148|  1.29M|    _newv = (gpointer) (((gsize) _oldv & G_DATALIST_FLAGS_MASK_INTERNAL) | (gsize) pointer);     \
  |  |  ------------------
  |  |  |  |  138|  1.29M|#define G_DATALIST_FLAGS_MASK_INTERNAL 0x7
  |  |  ------------------
  |  |  149|  1.29M|  } while (!g_atomic_pointer_compare_and_exchange ((void**) datalist, _oldv, _newv));   \
  |  |  ------------------
  |  |  |  |  210|  1.29M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  211|  1.29M|    G_STATIC_ASSERT (sizeof (oldval) == sizeof (gpointer));                  \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.29M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  212|  1.29M|    gpointer gapcae_oldval = (gpointer)(oldval);                             \
  |  |  |  |  213|  1.29M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.29M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  214|  1.29M|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:13): [Folded, False: 1.29M]
  |  |  |  |  ------------------
  |  |  |  |  215|  1.29M|    __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  1.29M|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|  1.29M|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  1.29M|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:5): [True: 1.29M, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  216|  1.29M|  }))
  |  |  ------------------
  |  |  |  Branch (149:12): [True: 0, False: 1.29M]
  |  |  ------------------
  |  |  150|  1.29M|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.29M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.29M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  265|       |
  266|  1.29M|  g_datalist_unlock (datalist);
  267|       |
  268|  1.29M|  if (data)
  ------------------
  |  Branch (268:7): [True: 0, False: 1.29M]
  ------------------
  269|      0|    {
  270|      0|      for (i = 0; i < data->len; i++)
  ------------------
  |  Branch (270:19): [True: 0, False: 0]
  ------------------
  271|      0|        {
  272|      0|          if (data->data[i].data && data->data[i].destroy)
  ------------------
  |  Branch (272:15): [True: 0, False: 0]
  |  Branch (272:37): [True: 0, False: 0]
  ------------------
  273|      0|            data->data[i].destroy (data->data[i].data);
  274|      0|        }
  275|       |
  276|      0|      g_free (data);
  277|      0|    }
  278|  1.29M|}
g_datalist_id_set_data_full:
  658|  6.17M|{
  659|  6.17M|  g_return_if_fail (datalist != NULL);
  ------------------
  |  |  630|  6.17M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  6.17M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  6.17M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  6.17M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  6.17M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  6.17M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  6.17M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  6.17M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 6.17M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  6.17M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  6.17M|   else                                         \
  |  |  |  |  |  | 1021|  6.17M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  6.17M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  6.17M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 6.17M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  6.17M|      { } \
  |  |  633|  6.17M|    else \
  |  |  634|  6.17M|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  6.17M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  6.17M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 6.17M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  660|  6.17M|  if (!data)
  ------------------
  |  Branch (660:7): [True: 5.59M, False: 577k]
  ------------------
  661|  6.17M|    g_return_if_fail (destroy_func == NULL);
  ------------------
  |  |  630|  5.59M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  5.59M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  5.59M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  5.59M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  5.59M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  5.59M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  5.59M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  5.59M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5.59M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  5.59M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  5.59M|   else                                         \
  |  |  |  |  |  | 1021|  5.59M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  5.59M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  5.59M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5.59M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  5.59M|      { } \
  |  |  633|  5.59M|    else \
  |  |  634|  5.59M|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  5.59M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  5.59M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5.59M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  662|  6.17M|  if (!key_id)
  ------------------
  |  Branch (662:7): [True: 0, False: 6.17M]
  ------------------
  663|      0|    {
  664|      0|      if (data)
  ------------------
  |  Branch (664:11): [True: 0, False: 0]
  ------------------
  665|      0|	g_return_if_fail (key_id > 0);
  ------------------
  |  |  630|      0|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      0|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      0|      { } \
  |  |  633|      0|    else \
  |  |  634|      0|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      0|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  666|      0|      else
  667|      0|	return;
  668|      0|    }
  669|       |
  670|  6.17M|  g_data_set_internal (datalist, key_id, data, destroy_func, NULL);
  671|  6.17M|}
g_datalist_id_remove_no_notify:
  734|   145k|{
  735|   145k|  gpointer ret_data = NULL;
  736|       |
  737|   145k|  g_return_val_if_fail (datalist != NULL, NULL);
  ------------------
  |  |  643|   145k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   145k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   145k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   145k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   145k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   145k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   145k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   145k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 145k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   145k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   145k|   else                                         \
  |  |  |  |  |  | 1021|   145k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   145k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   145k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 145k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   145k|      { } \
  |  |  646|   145k|    else \
  |  |  647|   145k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   145k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   145k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 145k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  738|       |
  739|   145k|  if (key_id)
  ------------------
  |  Branch (739:7): [True: 145k, False: 0]
  ------------------
  740|   145k|    ret_data = g_data_set_internal (datalist, key_id, NULL, (GDestroyNotify) 42, NULL);
  741|       |
  742|   145k|  return ret_data;
  743|   145k|}
g_datalist_id_get_data:
  800|  2.15M|{
  801|  2.15M|  return g_datalist_id_dup_data (datalist, key_id, NULL, NULL);
  802|  2.15M|}
g_datalist_id_dup_data:
  850|  2.15M|{
  851|  2.15M|  gpointer val = NULL;
  852|  2.15M|  gpointer retval = NULL;
  853|  2.15M|  GData *d;
  854|  2.15M|  GDataElt *data, *data_end;
  855|       |
  856|  2.15M|  g_datalist_lock (datalist);
  857|       |
  858|  2.15M|  d = G_DATALIST_GET_POINTER (datalist);
  ------------------
  |  |  142|  2.15M|  ((GData*) ((gsize) g_atomic_pointer_get (datalist) & ~(gsize) G_DATALIST_FLAGS_MASK_INTERNAL))
  |  |  ------------------
  |  |  |  |  113|  2.15M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  2.15M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  2.15M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  2.15M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  2.15M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  2.15M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  2.15M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  2.15M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  2.15M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  2.15M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  2.15M|  }))
  |  |  ------------------
  |  |                 ((GData*) ((gsize) g_atomic_pointer_get (datalist) & ~(gsize) G_DATALIST_FLAGS_MASK_INTERNAL))
  |  |  ------------------
  |  |  |  |  138|  2.15M|#define G_DATALIST_FLAGS_MASK_INTERNAL 0x7
  |  |  ------------------
  ------------------
  859|  2.15M|  if (d)
  ------------------
  |  Branch (859:7): [True: 451k, False: 1.70M]
  ------------------
  860|   451k|    {
  861|   451k|      data = d->data;
  862|   451k|      data_end = data + d->len;
  863|   451k|      do
  864|   451k|        {
  865|   451k|          if (data->key == key_id)
  ------------------
  |  Branch (865:15): [True: 433k, False: 18.3k]
  ------------------
  866|   433k|            {
  867|   433k|              val = data->data;
  868|   433k|              break;
  869|   433k|            }
  870|  18.3k|          data++;
  871|  18.3k|        }
  872|   451k|      while (data < data_end);
  ------------------
  |  Branch (872:14): [True: 0, False: 18.3k]
  ------------------
  873|   451k|    }
  874|       |
  875|  2.15M|  if (dup_func)
  ------------------
  |  Branch (875:7): [True: 0, False: 2.15M]
  ------------------
  876|      0|    retval = dup_func (val, user_data);
  877|  2.15M|  else
  878|  2.15M|    retval = val;
  879|       |
  880|  2.15M|  g_datalist_unlock (datalist);
  881|       |
  882|  2.15M|  return retval;
  883|  2.15M|}
g_datalist_set_flags:
 1194|     35|{
 1195|     35|  g_return_if_fail (datalist != NULL);
  ------------------
  |  |  630|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     35|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     35|      { } \
  |  |  633|     35|    else \
  |  |  634|     35|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1196|     35|  g_return_if_fail ((flags & ~G_DATALIST_FLAGS_MASK) == 0);
  ------------------
  |  |  630|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     35|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     35|      { } \
  |  |  633|     35|    else \
  |  |  634|     35|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1197|       |
 1198|     35|  g_atomic_pointer_or (datalist, (gsize)flags);
  ------------------
  |  |  235|     35|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  236|     35|    gsize *gapo_atomic = (gsize *) (atomic);                                 \
  |  |  237|     35|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  ------------------
  |  |  |  |  765|     35|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  238|     35|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize));                    \
  |  |  ------------------
  |  |  |  |  765|     35|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  239|     35|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  ------------------
  |  |  |  Branch (239:13): [Folded, False: 35]
  |  |  ------------------
  |  |  240|     35|    (void) (0 ? (val) ^ (val) : 1);                                          \
  |  |  ------------------
  |  |  |  Branch (240:13): [Folded, False: 35]
  |  |  ------------------
  |  |  241|     35|    (gsize) __atomic_fetch_or (gapo_atomic, (val), __ATOMIC_SEQ_CST);        \
  |  |  242|     35|  }))
  ------------------
 1199|     35|}
g_datalist_get_flags:
 1237|  1.84M|{
 1238|  1.84M|  g_return_val_if_fail (datalist != NULL, 0);
  ------------------
  |  |  643|  1.84M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.84M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.84M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.84M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.84M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.84M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.84M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.84M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.84M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.84M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.84M|   else                                         \
  |  |  |  |  |  | 1021|  1.84M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.84M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.84M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.84M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.84M|      { } \
  |  |  646|  1.84M|    else \
  |  |  647|  1.84M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.84M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.84M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.84M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1239|       |  
 1240|  1.84M|  return G_DATALIST_GET_FLAGS (datalist); /* atomic macro */
  ------------------
  |  |   37|  1.84M|  ((gsize) g_atomic_pointer_get (datalist) & G_DATALIST_FLAGS_MASK)
  |  |  ------------------
  |  |  |  |  113|  1.84M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.84M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  1.84M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.84M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  1.84M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  1.84M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  1.84M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  1.84M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  1.84M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  1.84M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  1.84M|  }))
  |  |  ------------------
  |  |                 ((gsize) g_atomic_pointer_get (datalist) & G_DATALIST_FLAGS_MASK)
  |  |  ------------------
  |  |  |  |   87|  1.84M|#define G_DATALIST_FLAGS_MASK 0x3
  |  |  ------------------
  ------------------
 1241|  1.84M|}
gdataset.c:g_datalist_lock:
  208|  9.76M|{
  209|  9.76M|  g_pointer_bit_lock ((void **)datalist, DATALIST_LOCK_BIT);
  ------------------
  |  |   55|  9.76M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  9.76M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   56|  9.76M|    G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer));                \
  |  |  ------------------
  |  |  |  |  765|  9.76M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   57|  9.76M|    g_pointer_bit_lock ((address), (lock_bit));                              \
  |  |   58|  9.76M|  }))
  ------------------
  210|  9.76M|}
gdataset.c:g_datalist_unlock:
  214|  9.76M|{
  215|  9.76M|  g_pointer_bit_unlock ((void **)datalist, DATALIST_LOCK_BIT);
  ------------------
  |  |   67|  9.76M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  9.76M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   68|  9.76M|    G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer));                \
  |  |  ------------------
  |  |  |  |  765|  9.76M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   69|  9.76M|    g_pointer_bit_unlock ((address), (lock_bit));                            \
  |  |   70|  9.76M|  }))
  ------------------
  216|  9.76M|}
gdataset.c:g_data_set_internal:
  350|  6.31M|{
  351|  6.31M|  GData *d, *old_d;
  352|  6.31M|  GDataElt old, *data, *data_last, *data_end;
  353|       |
  354|  6.31M|  g_datalist_lock (datalist);
  355|       |
  356|  6.31M|  d = G_DATALIST_GET_POINTER (datalist);
  ------------------
  |  |  142|  6.31M|  ((GData*) ((gsize) g_atomic_pointer_get (datalist) & ~(gsize) G_DATALIST_FLAGS_MASK_INTERNAL))
  |  |  ------------------
  |  |  |  |  113|  6.31M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  6.31M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  6.31M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  6.31M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  6.31M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  6.31M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  6.31M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  6.31M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  6.31M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  6.31M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  6.31M|  }))
  |  |  ------------------
  |  |                 ((GData*) ((gsize) g_atomic_pointer_get (datalist) & ~(gsize) G_DATALIST_FLAGS_MASK_INTERNAL))
  |  |  ------------------
  |  |  |  |  138|  6.31M|#define G_DATALIST_FLAGS_MASK_INTERNAL 0x7
  |  |  ------------------
  ------------------
  357|       |
  358|  6.31M|  if (new_data == NULL) /* remove */
  ------------------
  |  Branch (358:7): [True: 5.74M, False: 577k]
  ------------------
  359|  5.74M|    {
  360|  5.74M|      if (d)
  ------------------
  |  Branch (360:11): [True: 595k, False: 5.14M]
  ------------------
  361|   595k|	{
  362|   595k|	  data = d->data;
  363|   595k|	  data_last = data + d->len - 1;
  364|   614k|	  while (data <= data_last)
  ------------------
  |  Branch (364:11): [True: 595k, False: 18.3k]
  ------------------
  365|   595k|	    {
  366|   595k|	      if (data->key == key_id)
  ------------------
  |  Branch (366:12): [True: 577k, False: 18.3k]
  ------------------
  367|   577k|		{
  368|   577k|		  old = *data;
  369|   577k|		  if (data != data_last)
  ------------------
  |  Branch (369:9): [True: 0, False: 577k]
  ------------------
  370|      0|		    *data = *data_last;
  371|   577k|		  d->len--;
  372|       |
  373|       |		  /* We don't bother to shrink, but if all data are now gone
  374|       |		   * we at least free the memory
  375|       |                   */
  376|   577k|		  if (d->len == 0)
  ------------------
  |  Branch (376:9): [True: 577k, False: 0]
  ------------------
  377|   577k|		    {
  378|   577k|		      G_DATALIST_SET_POINTER (datalist, NULL);
  ------------------
  |  |  144|   577k|#define G_DATALIST_SET_POINTER(datalist, pointer)       G_STMT_START {                  \
  |  |  ------------------
  |  |  |  |  874|   577k|#define G_STMT_START  do
  |  |  ------------------
  |  |  145|   577k|  gpointer _oldv, _newv;                                                                \
  |  |  146|   577k|  do {                                                                                  \
  |  |  147|   577k|    _oldv = g_atomic_pointer_get (datalist);                                            \
  |  |  ------------------
  |  |  |  |  113|   577k|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   577k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|   577k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   577k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|   577k|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   577k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|   577k|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   577k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|   577k|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|   577k|    gapg_temp_newval;                                                      \
  |  |  |  |  119|   577k|  }))
  |  |  ------------------
  |  |  148|   577k|    _newv = (gpointer) (((gsize) _oldv & G_DATALIST_FLAGS_MASK_INTERNAL) | (gsize) pointer);     \
  |  |  ------------------
  |  |  |  |  138|   577k|#define G_DATALIST_FLAGS_MASK_INTERNAL 0x7
  |  |  ------------------
  |  |  149|   577k|  } while (!g_atomic_pointer_compare_and_exchange ((void**) datalist, _oldv, _newv));   \
  |  |  ------------------
  |  |  |  |  210|   577k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   577k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  211|   577k|    G_STATIC_ASSERT (sizeof (oldval) == sizeof (gpointer));                  \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   577k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  212|   577k|    gpointer gapcae_oldval = (gpointer)(oldval);                             \
  |  |  |  |  213|   577k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   577k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  214|   577k|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:13): [Folded, False: 577k]
  |  |  |  |  ------------------
  |  |  |  |  215|   577k|    __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|   577k|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|   577k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|   577k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:5): [True: 577k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  216|   577k|  }))
  |  |  ------------------
  |  |  |  Branch (149:12): [True: 0, False: 577k]
  |  |  ------------------
  |  |  150|   577k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   577k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 577k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  379|   577k|		      g_free (d);
  380|       |		      /* datalist may be situated in dataset, so must not be
  381|       |		       * unlocked after we free it
  382|       |		       */
  383|   577k|		      g_datalist_unlock (datalist);
  384|       |
  385|       |		      /* the dataset destruction *must* be done
  386|       |		       * prior to invocation of the data destroy function
  387|       |		       */
  388|   577k|		      if (dataset)
  ------------------
  |  Branch (388:13): [True: 0, False: 577k]
  ------------------
  389|      0|			g_dataset_destroy_internal (dataset);
  390|   577k|		    }
  391|      0|		  else
  392|      0|		    {
  393|      0|		      g_datalist_unlock (datalist);
  394|      0|		    }
  395|       |
  396|       |		  /* We found and removed an old value
  397|       |		   * the GData struct *must* already be unlinked
  398|       |		   * when invoking the destroy function.
  399|       |		   * we use (new_data==NULL && new_destroy_func!=NULL) as
  400|       |		   * a special hint combination to "steal"
  401|       |		   * data without destroy notification
  402|       |		   */
  403|   577k|		  if (old.destroy && !new_destroy_func)
  ------------------
  |  Branch (403:9): [True: 577k, False: 0]
  |  Branch (403:24): [True: 449k, False: 127k]
  ------------------
  404|   449k|		    {
  405|   449k|		      if (dataset)
  ------------------
  |  Branch (405:13): [True: 0, False: 449k]
  ------------------
  406|      0|			G_UNLOCK (g_dataset_global);
  ------------------
  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  407|   449k|		      old.destroy (old.data);
  408|   449k|		      if (dataset)
  ------------------
  |  Branch (408:13): [True: 0, False: 449k]
  ------------------
  409|      0|			G_LOCK (g_dataset_global);
  ------------------
  |  |  135|      0|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  410|   449k|		      old.data = NULL;
  411|   449k|		    }
  412|       |
  413|   577k|		  return old.data;
  414|   577k|		}
  415|  18.3k|	      data++;
  416|  18.3k|	    }
  417|   595k|	}
  418|  5.74M|    }
  419|   577k|  else
  420|   577k|    {
  421|   577k|      old.data = NULL;
  422|   577k|      if (d)
  ------------------
  |  Branch (422:11): [True: 0, False: 577k]
  ------------------
  423|      0|	{
  424|      0|	  data = d->data;
  425|      0|	  data_end = data + d->len;
  426|      0|	  while (data < data_end)
  ------------------
  |  Branch (426:11): [True: 0, False: 0]
  ------------------
  427|      0|	    {
  428|      0|	      if (data->key == key_id)
  ------------------
  |  Branch (428:12): [True: 0, False: 0]
  ------------------
  429|      0|		{
  430|      0|		  if (!data->destroy)
  ------------------
  |  Branch (430:9): [True: 0, False: 0]
  ------------------
  431|      0|		    {
  432|      0|		      data->data = new_data;
  433|      0|		      data->destroy = new_destroy_func;
  434|      0|		      g_datalist_unlock (datalist);
  435|      0|		    }
  436|      0|		  else
  437|      0|		    {
  438|      0|		      old = *data;
  439|      0|		      data->data = new_data;
  440|      0|		      data->destroy = new_destroy_func;
  441|       |
  442|      0|		      g_datalist_unlock (datalist);
  443|       |
  444|       |		      /* We found and replaced an old value
  445|       |		       * the GData struct *must* already be unlinked
  446|       |		       * when invoking the destroy function.
  447|       |		       */
  448|      0|		      if (dataset)
  ------------------
  |  Branch (448:13): [True: 0, False: 0]
  ------------------
  449|      0|			G_UNLOCK (g_dataset_global);
  ------------------
  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  450|      0|		      old.destroy (old.data);
  451|      0|		      if (dataset)
  ------------------
  |  Branch (451:13): [True: 0, False: 0]
  ------------------
  452|      0|			G_LOCK (g_dataset_global);
  ------------------
  |  |  135|      0|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  453|      0|		    }
  454|      0|		  return NULL;
  455|      0|		}
  456|      0|	      data++;
  457|      0|	    }
  458|      0|	}
  459|       |
  460|       |      /* The key was not found, insert it */
  461|   577k|      old_d = d;
  462|   577k|      if (d == NULL)
  ------------------
  |  Branch (462:11): [True: 577k, False: 0]
  ------------------
  463|   577k|	{
  464|   577k|	  d = g_malloc (sizeof (GData));
  465|   577k|	  d->len = 0;
  466|   577k|	  d->alloc = 1;
  467|   577k|	}
  468|      0|      else if (d->len == d->alloc)
  ------------------
  |  Branch (468:16): [True: 0, False: 0]
  ------------------
  469|      0|	{
  470|      0|	  d->alloc = d->alloc * 2;
  471|      0|	  d = g_realloc (d, sizeof (GData) + (d->alloc - 1) * sizeof (GDataElt));
  472|      0|	}
  473|   577k|      if (old_d != d)
  ------------------
  |  Branch (473:11): [True: 577k, False: 0]
  ------------------
  474|   577k|	G_DATALIST_SET_POINTER (datalist, d);
  ------------------
  |  |  144|   577k|#define G_DATALIST_SET_POINTER(datalist, pointer)       G_STMT_START {                  \
  |  |  ------------------
  |  |  |  |  874|   577k|#define G_STMT_START  do
  |  |  ------------------
  |  |  145|   577k|  gpointer _oldv, _newv;                                                                \
  |  |  146|   577k|  do {                                                                                  \
  |  |  147|   577k|    _oldv = g_atomic_pointer_get (datalist);                                            \
  |  |  ------------------
  |  |  |  |  113|   577k|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   577k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|   577k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   577k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|   577k|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   577k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|   577k|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   577k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|   577k|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|   577k|    gapg_temp_newval;                                                      \
  |  |  |  |  119|   577k|  }))
  |  |  ------------------
  |  |  148|   577k|    _newv = (gpointer) (((gsize) _oldv & G_DATALIST_FLAGS_MASK_INTERNAL) | (gsize) pointer);     \
  |  |  ------------------
  |  |  |  |  138|   577k|#define G_DATALIST_FLAGS_MASK_INTERNAL 0x7
  |  |  ------------------
  |  |  149|   577k|  } while (!g_atomic_pointer_compare_and_exchange ((void**) datalist, _oldv, _newv));   \
  |  |  ------------------
  |  |  |  |  210|   577k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   577k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  211|   577k|    G_STATIC_ASSERT (sizeof (oldval) == sizeof (gpointer));                  \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   577k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  212|   577k|    gpointer gapcae_oldval = (gpointer)(oldval);                             \
  |  |  |  |  213|   577k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   577k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  214|   577k|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:13): [Folded, False: 577k]
  |  |  |  |  ------------------
  |  |  |  |  215|   577k|    __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|   577k|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|   577k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|   577k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:5): [True: 577k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  216|   577k|  }))
  |  |  ------------------
  |  |  |  Branch (149:12): [True: 0, False: 577k]
  |  |  ------------------
  |  |  150|   577k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   577k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 577k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  475|       |
  476|   577k|      d->data[d->len].key = key_id;
  477|   577k|      d->data[d->len].data = new_data;
  478|   577k|      d->data[d->len].destroy = new_destroy_func;
  479|   577k|      d->len++;
  480|   577k|    }
  481|       |
  482|  5.74M|  g_datalist_unlock (datalist);
  483|       |
  484|  5.74M|  return NULL;
  485|       |
  486|  6.31M|}

g_getenv:
  252|  1.20M|{
  253|  1.20M|  g_return_val_if_fail (variable != NULL, NULL);
  ------------------
  |  |  643|  1.20M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.20M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.20M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.20M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.20M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.20M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.20M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.20M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.20M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.20M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.20M|   else                                         \
  |  |  |  |  |  | 1021|  1.20M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.20M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.20M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.20M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.20M|      { } \
  |  |  646|  1.20M|    else \
  |  |  647|  1.20M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.20M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.20M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.20M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  254|       |
  255|  1.20M|  return getenv (variable);
  256|  1.20M|}
g_setenv:
  293|  1.66k|{
  294|  1.66k|  gint result;
  295|       |#ifndef HAVE_SETENV
  296|       |  gchar *string;
  297|       |#endif
  298|       |
  299|  1.66k|  g_return_val_if_fail (variable != NULL, FALSE);
  ------------------
  |  |  643|  1.66k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.66k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.66k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.66k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.66k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.66k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.66k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.66k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.66k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.66k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.66k|   else                                         \
  |  |  |  |  |  | 1021|  1.66k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.66k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.66k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.66k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.66k|      { } \
  |  |  646|  1.66k|    else \
  |  |  647|  1.66k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.66k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.66k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.66k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  300|  1.66k|  g_return_val_if_fail (strchr (variable, '=') == NULL, FALSE);
  ------------------
  |  |  643|  1.66k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.66k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.66k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.66k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.66k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.66k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.66k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.66k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.66k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.66k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.66k|   else                                         \
  |  |  |  |  |  | 1021|  1.66k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.66k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.66k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.66k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.66k|      { } \
  |  |  646|  1.66k|    else \
  |  |  647|  1.66k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.66k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.66k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.66k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  301|  1.66k|  g_return_val_if_fail (value != NULL, FALSE);
  ------------------
  |  |  643|  1.66k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.66k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.66k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.66k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.66k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.66k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.66k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.66k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.66k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.66k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.66k|   else                                         \
  |  |  |  |  |  | 1021|  1.66k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.66k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.66k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.66k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.66k|      { } \
  |  |  646|  1.66k|    else \
  |  |  647|  1.66k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.66k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.66k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.66k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  302|       |
  303|  1.66k|#ifndef G_DISABLE_CHECKS
  304|       |  /* FIXME: This will be upgraded to a g_warning() in a future release of GLib.
  305|       |   * See https://gitlab.gnome.org/GNOME/glib/issues/715 */
  306|  1.66k|  if (g_thread_n_created () > 0)
  ------------------
  |  Branch (306:7): [True: 0, False: 1.66k]
  ------------------
  307|      0|    g_debug ("setenv()/putenv() are not thread-safe and should not be used after threads are created");
  ------------------
  |  |  351|      0|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  352|      0|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|      0|                               __VA_ARGS__)
  ------------------
  308|  1.66k|#endif
  309|       |
  310|  1.66k|#ifdef HAVE_SETENV
  311|  1.66k|  result = setenv (variable, value, overwrite);
  312|       |#else
  313|       |  if (!overwrite && getenv (variable) != NULL)
  314|       |    return TRUE;
  315|       |
  316|       |  /* This results in a leak when you overwrite existing
  317|       |   * settings. It would be fairly easy to fix this by keeping
  318|       |   * our own parallel array or hash table.
  319|       |   */
  320|       |  string = g_strconcat (variable, "=", value, NULL);
  321|       |  result = putenv (string);
  322|       |#endif
  323|  1.66k|  return result == 0;
  324|  1.66k|}

g_error_init:
  516|      2|{
  517|      2|  error_domain_ht = g_hash_table_new (NULL, NULL);
  518|      2|}
g_error_new_valist:
  749|     88|{
  750|       |  /* Historically, GError allowed this (although it was never meant to work),
  751|       |   * and it has significant use in the wild, which g_return_val_if_fail
  752|       |   * would break. It should maybe g_return_val_if_fail in GLib 4.
  753|       |   * (GNOME#660371, GNOME#560482)
  754|       |   */
  755|     88|  g_warn_if_fail (domain != 0);
  ------------------
  |  |  541|     88|  do { \
  |  |  542|     88|    if G_LIKELY (expr) ; \
  |  |  ------------------
  |  |  |  | 1024|     88|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     88| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     88|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     88|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     88|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 88, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     88|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     88|   else                                         \
  |  |  |  |  |  | 1021|     88|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     88|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     88|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 88, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  543|     88|    else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, #expr); \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  544|     88|  } while (0)
  |  |  ------------------
  |  |  |  Branch (544:12): [Folded, False: 88]
  |  |  ------------------
  ------------------
  756|     88|  g_warn_if_fail (format != NULL);
  ------------------
  |  |  541|     88|  do { \
  |  |  542|     88|    if G_LIKELY (expr) ; \
  |  |  ------------------
  |  |  |  | 1024|     88|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     88| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     88|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     88|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     88|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 88, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     88|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     88|   else                                         \
  |  |  |  |  |  | 1021|     88|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     88|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     88|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 88, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  543|     88|    else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, #expr); \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  544|     88|  } while (0)
  |  |  ------------------
  |  |  |  Branch (544:12): [Folded, False: 88]
  |  |  ------------------
  ------------------
  757|       |
  758|       |  return g_error_new_steal (domain, code, g_strdup_vprintf (format, args), NULL);
  759|     88|}
g_error_free:
  824|     88|{
  825|     88|  gsize private_size;
  826|     88|  ErrorDomainInfo *info;
  827|     88|  guint8 *allocated;
  828|       |
  829|     88|  g_return_if_fail (error != NULL);
  ------------------
  |  |  630|     88|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     88|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     88|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     88|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     88| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     88|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     88|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     88|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 88, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     88|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     88|   else                                         \
  |  |  |  |  |  | 1021|     88|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     88|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     88|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 88, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     88|      { } \
  |  |  633|     88|    else \
  |  |  634|     88|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|     88|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     88|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 88]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  830|       |
  831|     88|  g_rw_lock_reader_lock (&error_domain_global);
  832|     88|  info = error_domain_lookup (error->domain);
  833|     88|  if (info != NULL)
  ------------------
  |  Branch (833:7): [True: 0, False: 88]
  ------------------
  834|      0|    {
  835|      0|      GErrorClearFunc clear = info->clear;
  836|       |
  837|      0|      private_size = info->private_size;
  838|      0|      g_rw_lock_reader_unlock (&error_domain_global);
  839|      0|      clear (error);
  840|      0|    }
  841|     88|  else
  842|     88|    {
  843|     88|      g_rw_lock_reader_unlock (&error_domain_global);
  844|     88|      private_size = 0;
  845|     88|    }
  846|       |
  847|     88|  g_free (error->message);
  848|     88|  allocated = ((guint8 *) error) - private_size;
  849|       |  /* See comments in g_type_free_instance in gtype.c to see what this
  850|       |   * magic is about.
  851|       |   */
  852|     88|#ifdef ENABLE_VALGRIND
  853|     88|  if (private_size > 0 && RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|      0|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  430|      0|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (853:7): [True: 0, False: 88]
  ------------------
  854|      0|    {
  855|      0|      private_size += ALIGN_STRUCT (1);
  ------------------
  |  |  541|      0|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  539|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  539|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
  856|      0|      allocated -= ALIGN_STRUCT (1);
  ------------------
  |  |  541|      0|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  539|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  539|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
  857|      0|      *(gpointer *) (allocated + private_size + sizeof (GError)) = NULL;
  858|      0|      g_slice_free1 (private_size + sizeof (GError) + sizeof (gpointer), allocated);
  859|      0|      VALGRIND_FREELIKE_BLOCK (allocated + ALIGN_STRUCT (1), 0);
  ------------------
  |  | 6493|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__FREELIKE_BLOCK,         \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6494|      0|                                    addr, rzB, 0, 0, 0)
  ------------------
  860|      0|      VALGRIND_FREELIKE_BLOCK (error, 0);
  ------------------
  |  | 6493|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__FREELIKE_BLOCK,         \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6494|      0|                                    addr, rzB, 0, 0, 0)
  ------------------
  861|      0|    }
  862|     88|  else
  863|     88|#endif
  864|     88|  g_slice_free1 (private_size + sizeof (GError), allocated);
  865|     88|}
g_error_matches:
  919|    176|{
  920|    176|  return error &&
  ------------------
  |  Branch (920:10): [True: 176, False: 0]
  ------------------
  921|    176|    error->domain == domain &&
  ------------------
  |  Branch (921:5): [True: 176, False: 0]
  ------------------
  922|    176|    error->code == code;
  ------------------
  |  Branch (922:5): [True: 0, False: 176]
  ------------------
  923|    176|}
g_set_error:
  946|    540|{
  947|    540|  GError *new;
  948|       |
  949|    540|  va_list args;
  950|       |
  951|    540|  if (err == NULL)
  ------------------
  |  Branch (951:7): [True: 452, False: 88]
  ------------------
  952|    452|    return;
  953|       |
  954|    540|  va_start (args, format);
  955|     88|  new = g_error_new_valist (domain, code, format, args);
  956|     88|  va_end (args);
  957|       |
  958|     88|  if (*err == NULL)
  ------------------
  |  Branch (958:7): [True: 88, False: 0]
  ------------------
  959|     88|    *err = new;
  960|      0|  else
  961|      0|    {
  962|      0|      g_warning (ERROR_OVERWRITTEN_WARNING, new->message);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  963|      0|      g_error_free (new);
  964|      0|    }
  965|     88|}
g_set_error_literal:
  987|     67|{
  988|     67|  if (err == NULL)
  ------------------
  |  Branch (988:7): [True: 67, False: 0]
  ------------------
  989|     67|    return;
  990|       |
  991|      0|  if (*err == NULL)
  ------------------
  |  Branch (991:7): [True: 0, False: 0]
  ------------------
  992|      0|    *err = g_error_new_literal (domain, code, message);
  993|      0|  else
  994|      0|    g_warning (ERROR_OVERWRITTEN_WARNING, message);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  995|      0|}
g_propagate_error:
 1014|     88|{
 1015|     88|  g_return_if_fail (src != NULL);
  ------------------
  |  |  630|     88|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     88|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     88|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     88|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     88| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     88|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     88|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     88|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 88, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     88|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     88|   else                                         \
  |  |  |  |  |  | 1021|     88|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     88|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     88|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 88, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     88|      { } \
  |  |  633|     88|    else \
  |  |  634|     88|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|     88|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     88|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 88]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1016|       | 
 1017|     88|  if (dest == NULL)
  ------------------
  |  Branch (1017:7): [True: 88, False: 0]
  ------------------
 1018|     88|    {
 1019|     88|      g_error_free (src);
 1020|     88|      return;
 1021|     88|    }
 1022|      0|  else
 1023|      0|    {
 1024|      0|      if (*dest != NULL)
  ------------------
  |  Branch (1024:11): [True: 0, False: 0]
  ------------------
 1025|      0|        {
 1026|      0|          g_warning (ERROR_OVERWRITTEN_WARNING, src->message);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1027|      0|          g_error_free (src);
 1028|      0|        }
 1029|      0|      else
 1030|      0|        *dest = src;
 1031|      0|    }
 1032|     88|}
g_prefix_error:
 1086|    120|{
 1087|    120|  if (err && *err)
  ------------------
  |  Branch (1087:7): [True: 88, False: 32]
  |  Branch (1087:14): [True: 88, False: 0]
  ------------------
 1088|     88|    {
 1089|     88|      va_list ap;
 1090|       |
 1091|     88|      va_start (ap, format);
 1092|     88|      g_error_add_prefix (&(*err)->message, format, ap);
 1093|       |      va_end (ap);
 1094|     88|    }
 1095|    120|}
gerror.c:g_error_new_steal:
  714|     88|{
  715|     88|  ErrorDomainInfo info;
  716|     88|  GError *error = g_error_allocate (domain, &info);
  717|       |
  718|     88|  error->domain = domain;
  719|     88|  error->code = code;
  720|     88|  error->message = message;
  721|       |
  722|     88|  if (info.init != NULL)
  ------------------
  |  Branch (722:7): [True: 0, False: 88]
  ------------------
  723|      0|    info.init (error);
  724|     88|  if (out_info != NULL)
  ------------------
  |  Branch (724:7): [True: 0, False: 88]
  ------------------
  725|      0|    *out_info = info;
  726|       |
  727|     88|  return error;
  728|     88|}
gerror.c:g_error_allocate:
  666|     88|{
  667|     88|  guint8 *allocated;
  668|     88|  GError *error;
  669|     88|  ErrorDomainInfo *info;
  670|     88|  gsize private_size;
  671|       |
  672|     88|  g_rw_lock_reader_lock (&error_domain_global);
  673|     88|  info = error_domain_lookup (domain);
  674|     88|  if (info != NULL)
  ------------------
  |  Branch (674:7): [True: 0, False: 88]
  ------------------
  675|      0|    {
  676|      0|      if (out_info != NULL)
  ------------------
  |  Branch (676:11): [True: 0, False: 0]
  ------------------
  677|      0|        *out_info = *info;
  678|      0|      private_size = info->private_size;
  679|      0|      g_rw_lock_reader_unlock (&error_domain_global);
  680|      0|    }
  681|     88|  else
  682|     88|    {
  683|     88|      g_rw_lock_reader_unlock (&error_domain_global);
  684|     88|      if (out_info != NULL)
  ------------------
  |  Branch (684:11): [True: 88, False: 0]
  ------------------
  685|     88|        memset (out_info, 0, sizeof (*out_info));
  686|     88|      private_size = 0;
  687|     88|    }
  688|       |  /* See comments in g_type_create_instance in gtype.c to see what
  689|       |   * this magic is about.
  690|       |   */
  691|     88|#ifdef ENABLE_VALGRIND
  692|     88|  if (private_size > 0 && RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|      0|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  430|      0|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (692:7): [True: 0, False: 88]
  ------------------
  693|      0|    {
  694|      0|      private_size += ALIGN_STRUCT (1);
  ------------------
  |  |  541|      0|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  539|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  539|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
  695|      0|      allocated = g_slice_alloc0 (private_size + sizeof (GError) + sizeof (gpointer));
  696|      0|      *(gpointer *) (allocated + private_size + sizeof (GError)) = allocated + ALIGN_STRUCT (1);
  ------------------
  |  |  541|      0|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  539|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  539|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
  697|      0|      VALGRIND_MALLOCLIKE_BLOCK (allocated + private_size, sizeof (GError) + sizeof (gpointer), 0, TRUE);
  ------------------
  |  | 6479|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK,       \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6480|      0|                                    addr, sizeB, rzB, is_zeroed, 0)
  ------------------
  698|      0|      VALGRIND_MALLOCLIKE_BLOCK (allocated + ALIGN_STRUCT (1), private_size - ALIGN_STRUCT (1), 0, TRUE);
  ------------------
  |  | 6479|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK,       \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6480|      0|                                    addr, sizeB, rzB, is_zeroed, 0)
  ------------------
  699|      0|    }
  700|     88|  else
  701|     88|#endif
  702|     88|    allocated = g_slice_alloc0 (private_size + sizeof (GError));
  703|       |
  704|     88|  error = (GError *) (allocated + private_size);
  705|     88|  return error;
  706|     88|}
gerror.c:error_domain_lookup:
  533|    176|{
  534|    176|  return g_hash_table_lookup (error_domain_ht,
  535|    176|                              GUINT_TO_POINTER (domain));
  ------------------
  |  |  102|    176|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  536|    176|}
gerror.c:g_error_add_prefix:
 1056|     88|{
 1057|     88|  gchar *oldstring;
 1058|     88|  gchar *prefix;
 1059|       |
 1060|     88|  prefix = g_strdup_vprintf (format, ap);
 1061|     88|  oldstring = *string;
 1062|       |  *string = g_strconcat (prefix, oldstring, NULL);
 1063|     88|  g_free (oldstring);
 1064|     88|  g_free (prefix);
 1065|     88|}

g_hash_table_new:
 1033|     12|{
 1034|     12|  return g_hash_table_new_full (hash_func, key_equal_func, NULL, NULL);
 1035|     12|}
g_hash_table_new_full:
 1068|  1.56k|{
 1069|  1.56k|  GHashTable *hash_table;
 1070|       |
 1071|  1.56k|  hash_table = g_slice_new (GHashTable);
  ------------------
  |  |   46|  1.56k|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  ------------------
 1072|  1.56k|  g_atomic_ref_count_init (&hash_table->ref_count);
 1073|  1.56k|  hash_table->nnodes             = 0;
 1074|  1.56k|  hash_table->noccupied          = 0;
 1075|  1.56k|  hash_table->hash_func          = hash_func ? hash_func : g_direct_hash;
  ------------------
  |  Branch (1075:36): [True: 1.56k, False: 2]
  ------------------
 1076|  1.56k|  hash_table->key_equal_func     = key_equal_func;
 1077|  1.56k|#ifndef G_DISABLE_ASSERT
 1078|  1.56k|  hash_table->version            = 0;
 1079|  1.56k|#endif
 1080|  1.56k|  hash_table->key_destroy_func   = key_destroy_func;
 1081|  1.56k|  hash_table->value_destroy_func = value_destroy_func;
 1082|       |
 1083|  1.56k|  g_hash_table_setup_storage (hash_table);
 1084|       |
 1085|  1.56k|  return hash_table;
 1086|  1.56k|}
g_hash_table_unref:
 1456|  1.55k|{
 1457|  1.55k|  g_return_if_fail (hash_table != NULL);
  ------------------
  |  |  630|  1.55k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.55k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.55k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.55k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.55k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.55k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.55k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.55k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.55k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.55k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.55k|   else                                         \
  |  |  |  |  |  | 1021|  1.55k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.55k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.55k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.55k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.55k|      { } \
  |  |  633|  1.55k|    else \
  |  |  634|  1.55k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  1.55k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.55k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.55k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1458|       |
 1459|  1.55k|  if (g_atomic_ref_count_dec (&hash_table->ref_count))
  ------------------
  |  Branch (1459:7): [True: 1.55k, False: 0]
  ------------------
 1460|  1.55k|    {
 1461|  1.55k|      g_hash_table_remove_all_nodes (hash_table, TRUE, TRUE);
  ------------------
  |  |  818|  1.55k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.55k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                    g_hash_table_remove_all_nodes (hash_table, TRUE, TRUE);
  ------------------
  |  |  818|  1.55k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.55k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1462|  1.55k|      if (hash_table->keys != hash_table->values)
  ------------------
  |  Branch (1462:11): [True: 0, False: 1.55k]
  ------------------
 1463|      0|        g_free (hash_table->values);
 1464|  1.55k|      g_free (hash_table->keys);
 1465|  1.55k|      g_free (hash_table->hashes);
 1466|  1.55k|      g_slice_free (GHashTable, hash_table);
  ------------------
  |  |   79|  1.55k|#define g_slice_free(type, mem)                                 \
  |  |  ------------------
  |  |  |  |  874|  1.55k|#define G_STMT_START  do
  |  |  ------------------
  |  |   80|  1.55k|G_STMT_START {                                                  \
  |  |   81|  1.55k|  if (1) g_slice_free1 (sizeof (type), (mem));			\
  |  |  ------------------
  |  |  |  Branch (81:7): [True: 1.55k, Folded]
  |  |  ------------------
  |  |   82|  1.55k|  else   (void) ((type*) 0 == (mem)); 				\
  |  |   83|  1.55k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.55k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.55k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1467|  1.55k|    }
 1468|  1.55k|}
g_hash_table_lookup:
 1505|  2.65M|{
 1506|  2.65M|  guint node_index;
 1507|  2.65M|  guint node_hash;
 1508|       |
 1509|  2.65M|  g_return_val_if_fail (hash_table != NULL, NULL);
  ------------------
  |  |  643|  2.65M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.65M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.65M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.65M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.65M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.65M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.65M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.65M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.65M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.65M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.65M|   else                                         \
  |  |  |  |  |  | 1021|  2.65M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.65M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.65M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.65M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.65M|      { } \
  |  |  646|  2.65M|    else \
  |  |  647|  2.65M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  2.65M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.65M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.65M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1510|       |
 1511|  2.65M|  node_index = g_hash_table_lookup_node (hash_table, key, &node_hash);
 1512|       |
 1513|  2.65M|  return HASH_IS_REAL (hash_table->hashes[node_index])
  ------------------
  |  |  242|  2.65M|#define HASH_IS_REAL(h_) ((h_) >= 2)
  |  |  ------------------
  |  |  |  Branch (242:26): [True: 69.1k, False: 2.58M]
  |  |  ------------------
  ------------------
 1514|  2.65M|    ? g_hash_table_fetch_key_or_value (hash_table->values, node_index, hash_table->have_big_values)
 1515|       |    : NULL;
 1516|  2.65M|}
g_hash_table_insert:
 1628|  3.96k|{
 1629|  3.96k|  return g_hash_table_insert_internal (hash_table, key, value, FALSE);
  ------------------
  |  |  814|  3.96k|#define	FALSE	(0)
  ------------------
 1630|  3.96k|}
g_hash_table_add:
 1688|  3.36k|{
 1689|  3.36k|  return g_hash_table_insert_internal (hash_table, key, key, TRUE);
  ------------------
  |  |  818|  3.36k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  3.36k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1690|  3.36k|}
g_hash_table_remove:
 1772|  4.16k|{
 1773|  4.16k|  return g_hash_table_remove_internal (hash_table, key, TRUE);
  ------------------
  |  |  818|  4.16k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  4.16k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1774|  4.16k|}
g_hash_table_foreach:
 2045|     11|{
 2046|     11|  gsize i;
 2047|     11|#ifndef G_DISABLE_ASSERT
 2048|     11|  gint version;
 2049|     11|#endif
 2050|       |
 2051|     11|  g_return_if_fail (hash_table != NULL);
  ------------------
  |  |  630|     11|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     11|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     11|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     11|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     11| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     11|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     11|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     11|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     11|   else                                         \
  |  |  |  |  |  | 1021|     11|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     11|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     11|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     11|      { } \
  |  |  633|     11|    else \
  |  |  634|     11|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|     11|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     11|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2052|     11|  g_return_if_fail (func != NULL);
  ------------------
  |  |  630|     11|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     11|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     11|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     11|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     11| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     11|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     11|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     11|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     11|   else                                         \
  |  |  |  |  |  | 1021|     11|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     11|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     11|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     11|      { } \
  |  |  633|     11|    else \
  |  |  634|     11|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|     11|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     11|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2053|       |
 2054|     11|#ifndef G_DISABLE_ASSERT
 2055|     11|  version = hash_table->version;
 2056|     11|#endif
 2057|       |
 2058|    667|  for (i = 0; i < hash_table->size; i++)
  ------------------
  |  Branch (2058:15): [True: 656, False: 11]
  ------------------
 2059|    656|    {
 2060|    656|      guint node_hash = hash_table->hashes[i];
 2061|    656|      gpointer node_key = g_hash_table_fetch_key_or_value (hash_table->keys, i, hash_table->have_big_keys);
 2062|    656|      gpointer node_value = g_hash_table_fetch_key_or_value (hash_table->values, i, hash_table->have_big_values);
 2063|       |
 2064|    656|      if (HASH_IS_REAL (node_hash))
  ------------------
  |  |  242|    656|#define HASH_IS_REAL(h_) ((h_) >= 2)
  |  |  ------------------
  |  |  |  Branch (242:26): [True: 363, False: 293]
  |  |  ------------------
  ------------------
 2065|    363|        (* func) (node_key, node_value, user_data);
 2066|       |
 2067|    656|#ifndef G_DISABLE_ASSERT
 2068|    656|      g_return_if_fail (version == hash_table->version);
  ------------------
  |  |  630|    656|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    656|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    656|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    656|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    656| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    656|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    656|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    656|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 656, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    656|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    656|   else                                         \
  |  |  |  |  |  | 1021|    656|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    656|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    656|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 656, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    656|      { } \
  |  |  633|    656|    else \
  |  |  634|    656|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    656|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    656|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 656]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2069|    656|#endif
 2070|    656|    }
 2071|     11|}
g_str_equal:
 2299|  55.0k|{
 2300|  55.0k|  const gchar *string1 = v1;
 2301|  55.0k|  const gchar *string2 = v2;
 2302|       |
 2303|  55.0k|  return strcmp (string1, string2) == 0;
 2304|  55.0k|}
g_str_hash:
 2329|  58.5k|{
 2330|  58.5k|  const signed char *p;
 2331|  58.5k|  guint32 h = 5381;
 2332|       |
 2333|   882k|  for (p = v; *p != '\0'; p++)
  ------------------
  |  Branch (2333:15): [True: 823k, False: 58.5k]
  ------------------
 2334|   823k|    h = (h << 5) + h + *p;
 2335|       |
 2336|  58.5k|  return h;
 2337|  58.5k|}
g_direct_hash:
 2355|  2.59M|{
 2356|  2.59M|  return GPOINTER_TO_UINT (v);
  ------------------
  |  |   99|  2.59M|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 2357|  2.59M|}
g_int_hash:
 2421|     44|{
 2422|     44|  return *(const gint*) v;
 2423|     44|}
ghash.c:g_hash_table_setup_storage:
  567|  1.56k|{
  568|  1.56k|  gboolean small = FALSE;
  ------------------
  |  |  814|  1.56k|#define	FALSE	(0)
  ------------------
  569|       |
  570|       |  /* We want to use small arrays only if:
  571|       |   *   - we are running on a system where that makes sense (64 bit); and
  572|       |   *   - we are not running under valgrind.
  573|       |   */
  574|       |
  575|  1.56k|#ifdef USE_SMALL_ARRAYS
  576|  1.56k|  small = TRUE;
  ------------------
  |  |  818|  1.56k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.56k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  577|       |
  578|  1.56k|# ifdef ENABLE_VALGRIND
  579|  1.56k|  if (RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|  1.56k|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|  1.56k|    __extension__                                                 \
  |  |  |  |  414|  1.56k|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|  1.56k|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|  1.56k|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|  1.56k|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|  1.56k|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|  1.56k|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|  1.56k|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|  1.56k|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|  1.56k|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|  1.56k|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|  1.56k|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|  1.56k|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|  1.56k|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|  1.56k|                     : "cc", "memory"                             \
  |  |  |  |  428|  1.56k|                    );                                            \
  |  |  |  |  429|  1.56k|    _zzq_result;                                                  \
  |  |  |  |  430|  1.56k|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 1.56k]
  |  |  ------------------
  |  | 6216|  1.56k|                                    VG_USERREQ__RUNNING_ON_VALGRIND,  \
  |  | 6217|  1.56k|                                    0, 0, 0, 0, 0)                    \
  ------------------
  580|      0|    small = FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  581|  1.56k|# endif
  582|  1.56k|#endif
  583|       |
  584|  1.56k|  g_hash_table_set_shift (hash_table, HASH_TABLE_MIN_SHIFT);
  ------------------
  |  |  236|  1.56k|#define HASH_TABLE_MIN_SHIFT 3  /* 1 << 3 == 8 buckets */
  ------------------
  585|       |
  586|  1.56k|  hash_table->have_big_keys = !small;
  587|  1.56k|  hash_table->have_big_values = !small;
  588|       |
  589|  1.56k|  hash_table->keys   = g_hash_table_realloc_key_or_value_array (NULL, hash_table->size, hash_table->have_big_keys);
  590|  1.56k|  hash_table->values = hash_table->keys;
  591|       |  hash_table->hashes = g_new0 (guint, hash_table->size);
  ------------------
  |  |  307|  1.56k|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|  1.56k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.56k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|  1.56k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|  1.56k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|  1.56k|	  gpointer __p;						\
  |  |  |  |  239|  1.56k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 1.56k]
  |  |  |  |  ------------------
  |  |  |  |  240|  1.56k|	    __p = g_##func (__n);				\
  |  |  |  |  241|  1.56k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 1.56k]
  |  |  |  |  ------------------
  |  |  |  |  242|  1.56k|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|  1.56k|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|  1.56k|	  else							\
  |  |  |  |  245|  1.56k|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|  1.56k|	  __p;							\
  |  |  |  |  247|  1.56k|	}))
  |  |  ------------------
  ------------------
  592|  1.56k|}
ghash.c:g_hash_table_set_shift:
  342|  1.59k|{
  343|  1.59k|  hash_table->size = 1 << shift;
  344|  1.59k|  hash_table->mod  = prime_mod [shift];
  345|       |
  346|       |  /* hash_table->size is always a power of two, so we can calculate the mask
  347|       |   * by simply subtracting 1 from it. The leading assertion ensures that
  348|       |   * we're really dealing with a power of two. */
  349|       |
  350|  1.59k|  g_assert ((hash_table->size & (hash_table->size - 1)) == 0);
  ------------------
  |  |  231|  1.59k|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.59k|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|  1.59k|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|  1.59k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.59k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.59k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.59k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.59k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.59k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.59k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.59k|   else                                         \
  |  |  |  |  |  | 1021|  1.59k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.59k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.59k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 1.59k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|  1.59k|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|  1.59k|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.59k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.59k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  351|  1.59k|  hash_table->mask = hash_table->size - 1;
  352|  1.59k|}
ghash.c:g_hash_table_realloc_key_or_value_array:
  378|  1.60k|{
  379|  1.60k|#ifdef USE_SMALL_ARRAYS
  380|  1.60k|  return g_realloc (a, size * (is_big ? BIG_ENTRY_SIZE : SMALL_ENTRY_SIZE));
  ------------------
  |  |  249|     31|#define BIG_ENTRY_SIZE (SIZEOF_VOID_P)
  |  |  ------------------
  |  |  |  |  392|     31|#define SIZEOF_VOID_P 8
  |  |  ------------------
  ------------------
                return g_realloc (a, size * (is_big ? BIG_ENTRY_SIZE : SMALL_ENTRY_SIZE));
  ------------------
  |  |  250|  1.57k|#define SMALL_ENTRY_SIZE (SIZEOF_INT)
  |  |  ------------------
  |  |  |  |  380|  1.57k|#define SIZEOF_INT 4
  |  |  ------------------
  ------------------
  |  Branch (380:32): [True: 31, False: 1.57k]
  ------------------
  381|       |#else
  382|       |  return g_renew (gpointer, a, size);
  383|       |#endif
  384|  1.60k|}
ghash.c:g_hash_table_fetch_key_or_value:
  388|   157k|{
  389|       |#ifndef USE_SMALL_ARRAYS
  390|       |  is_big = TRUE;
  391|       |#endif
  392|   157k|  return is_big ? *(((gpointer *) a) + index) : GUINT_TO_POINTER (*(((guint *) a) + index));
  ------------------
  |  |  102|  55.0k|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  |  Branch (392:10): [True: 102k, False: 55.0k]
  ------------------
  393|   157k|}
ghash.c:g_hash_table_insert_node:
 1272|  7.32k|{
 1273|  7.32k|  gboolean already_exists;
 1274|  7.32k|  guint old_hash;
 1275|  7.32k|  gpointer key_to_free = NULL;
 1276|  7.32k|  gpointer key_to_keep = NULL;
 1277|  7.32k|  gpointer value_to_free = NULL;
 1278|       |
 1279|  7.32k|  old_hash = hash_table->hashes[node_index];
 1280|  7.32k|  already_exists = HASH_IS_REAL (old_hash);
  ------------------
  |  |  242|  7.32k|#define HASH_IS_REAL(h_) ((h_) >= 2)
  ------------------
 1281|       |
 1282|       |  /* Proceed in three steps.  First, deal with the key because it is the
 1283|       |   * most complicated.  Then consider if we need to split the table in
 1284|       |   * two (because writing the value will result in the set invariant
 1285|       |   * becoming broken).  Then deal with the value.
 1286|       |   *
 1287|       |   * There are three cases for the key:
 1288|       |   *
 1289|       |   *  - entry already exists in table, reusing key:
 1290|       |   *    free the just-passed-in new_key and use the existing value
 1291|       |   *
 1292|       |   *  - entry already exists in table, not reusing key:
 1293|       |   *    free the entry in the table, use the new key
 1294|       |   *
 1295|       |   *  - entry not already in table:
 1296|       |   *    use the new key, free nothing
 1297|       |   *
 1298|       |   * We update the hash at the same time...
 1299|       |   */
 1300|  7.32k|  if (already_exists)
  ------------------
  |  Branch (1300:7): [True: 0, False: 7.32k]
  ------------------
 1301|      0|    {
 1302|       |      /* Note: we must record the old value before writing the new key
 1303|       |       * because we might change the value in the event that the two
 1304|       |       * arrays are shared.
 1305|       |       */
 1306|      0|      value_to_free = g_hash_table_fetch_key_or_value (hash_table->values, node_index, hash_table->have_big_values);
 1307|       |
 1308|      0|      if (keep_new_key)
  ------------------
  |  Branch (1308:11): [True: 0, False: 0]
  ------------------
 1309|      0|        {
 1310|      0|          key_to_free = g_hash_table_fetch_key_or_value (hash_table->keys, node_index, hash_table->have_big_keys);
 1311|      0|          key_to_keep = new_key;
 1312|      0|        }
 1313|      0|      else
 1314|      0|        {
 1315|      0|          key_to_free = new_key;
 1316|      0|          key_to_keep = g_hash_table_fetch_key_or_value (hash_table->keys, node_index, hash_table->have_big_keys);
 1317|      0|        }
 1318|      0|    }
 1319|  7.32k|  else
 1320|  7.32k|    {
 1321|  7.32k|      hash_table->hashes[node_index] = key_hash;
 1322|  7.32k|      key_to_keep = new_key;
 1323|  7.32k|    }
 1324|       |
 1325|       |  /* Resize key/value arrays and split table as necessary */
 1326|  7.32k|  g_hash_table_ensure_keyval_fits (hash_table, key_to_keep, new_value);
 1327|  7.32k|  g_hash_table_assign_key_or_value (hash_table->keys, node_index, hash_table->have_big_keys, key_to_keep);
 1328|       |
 1329|       |  /* Step 3: Actually do the write */
 1330|  7.32k|  g_hash_table_assign_key_or_value (hash_table->values, node_index, hash_table->have_big_values, new_value);
 1331|       |
 1332|       |  /* Now, the bookkeeping... */
 1333|  7.32k|  if (!already_exists)
  ------------------
  |  Branch (1333:7): [True: 7.32k, False: 0]
  ------------------
 1334|  7.32k|    {
 1335|  7.32k|      hash_table->nnodes++;
 1336|       |
 1337|  7.32k|      if (HASH_IS_UNUSED (old_hash))
  ------------------
  |  |  240|  7.32k|#define HASH_IS_UNUSED(h_) ((h_) == UNUSED_HASH_VALUE)
  |  |  ------------------
  |  |  |  |  238|  7.32k|#define UNUSED_HASH_VALUE 0
  |  |  ------------------
  |  |  |  Branch (240:28): [True: 3.17k, False: 4.14k]
  |  |  ------------------
  ------------------
 1338|  3.17k|        {
 1339|       |          /* We replaced an empty node, and not a tombstone */
 1340|  3.17k|          hash_table->noccupied++;
 1341|  3.17k|          g_hash_table_maybe_resize (hash_table);
 1342|  3.17k|        }
 1343|       |
 1344|  7.32k|#ifndef G_DISABLE_ASSERT
 1345|  7.32k|      hash_table->version++;
 1346|  7.32k|#endif
 1347|  7.32k|    }
 1348|       |
 1349|  7.32k|  if (already_exists)
  ------------------
  |  Branch (1349:7): [True: 0, False: 7.32k]
  ------------------
 1350|      0|    {
 1351|      0|      if (hash_table->key_destroy_func && !reusing_key)
  ------------------
  |  Branch (1351:11): [True: 0, False: 0]
  |  Branch (1351:43): [True: 0, False: 0]
  ------------------
 1352|      0|        (* hash_table->key_destroy_func) (key_to_free);
 1353|      0|      if (hash_table->value_destroy_func)
  ------------------
  |  Branch (1353:11): [True: 0, False: 0]
  ------------------
 1354|      0|        (* hash_table->value_destroy_func) (value_to_free);
 1355|      0|    }
 1356|       |
 1357|  7.32k|  return !already_exists;
 1358|  7.32k|}
ghash.c:g_hash_table_ensure_keyval_fits:
  954|  7.32k|{
  955|  7.32k|  gboolean is_a_set = (hash_table->keys == hash_table->values);
  956|       |
  957|  7.32k|#ifdef USE_SMALL_ARRAYS
  958|       |
  959|       |  /* Convert from set to map? */
  960|  7.32k|  if (is_a_set)
  ------------------
  |  Branch (960:7): [True: 4.11k, False: 3.20k]
  ------------------
  961|  4.11k|    {
  962|  4.11k|      if (hash_table->have_big_keys)
  ------------------
  |  Branch (962:11): [True: 3.38k, False: 733]
  ------------------
  963|  3.38k|        {
  964|  3.38k|          if (key != value)
  ------------------
  |  Branch (964:15): [True: 0, False: 3.38k]
  ------------------
  965|      0|            hash_table->values = g_memdup2 (hash_table->keys, sizeof (gpointer) * hash_table->size);
  966|       |          /* Keys and values are both big now, so no need for further checks */
  967|  3.38k|          return;
  968|  3.38k|        }
  969|    733|      else
  970|    733|        {
  971|    733|          if (key != value)
  ------------------
  |  Branch (971:15): [True: 730, False: 3]
  ------------------
  972|    730|            {
  973|    730|              hash_table->values = g_memdup2 (hash_table->keys, sizeof (guint) * hash_table->size);
  974|    730|              is_a_set = FALSE;
  ------------------
  |  |  814|    730|#define	FALSE	(0)
  ------------------
  975|    730|            }
  976|    733|        }
  977|  4.11k|    }
  978|       |
  979|       |  /* Make keys big? */
  980|  3.94k|  if (!hash_table->have_big_keys)
  ------------------
  |  Branch (980:7): [True: 733, False: 3.20k]
  ------------------
  981|    733|    {
  982|    733|      hash_table->have_big_keys = g_hash_table_maybe_make_big_keys_or_values (&hash_table->keys, key, hash_table->size);
  983|       |
  984|    733|      if (is_a_set)
  ------------------
  |  Branch (984:11): [True: 3, False: 730]
  ------------------
  985|      3|        {
  986|      3|          hash_table->values = hash_table->keys;
  987|      3|          hash_table->have_big_values = hash_table->have_big_keys;
  988|      3|        }
  989|    733|    }
  990|       |
  991|       |  /* Make values big? */
  992|  3.94k|  if (!is_a_set && !hash_table->have_big_values)
  ------------------
  |  Branch (992:7): [True: 3.93k, False: 3]
  |  Branch (992:20): [True: 957, False: 2.98k]
  ------------------
  993|    957|    {
  994|    957|      hash_table->have_big_values = g_hash_table_maybe_make_big_keys_or_values (&hash_table->values, value, hash_table->size);
  995|    957|    }
  996|       |
  997|       |#else
  998|       |
  999|       |  /* Just split if necessary */
 1000|       |  if (is_a_set && key != value)
 1001|       |    hash_table->values = g_memdup2 (hash_table->keys, sizeof (gpointer) * hash_table->size);
 1002|       |
 1003|       |#endif
 1004|  3.94k|}
ghash.c:g_hash_table_maybe_make_big_keys_or_values:
  928|  1.69k|{
  929|  1.69k|  if (entry_is_big (v))
  ------------------
  |  Branch (929:7): [True: 1.46k, False: 229]
  ------------------
  930|  1.46k|    {
  931|  1.46k|      guint *a = (guint *) *a_p;
  932|  1.46k|      gpointer *a_new;
  933|  1.46k|      gint i;
  934|       |
  935|  1.46k|      a_new = g_new (gpointer, ht_size);
  ------------------
  |  |  290|  1.46k|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|  1.46k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.46k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|  1.46k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|  1.46k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|  1.46k|	  gpointer __p;						\
  |  |  |  |  239|  1.46k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 1.46k]
  |  |  |  |  ------------------
  |  |  |  |  240|  1.46k|	    __p = g_##func (__n);				\
  |  |  |  |  241|  1.46k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 1.46k]
  |  |  |  |  ------------------
  |  |  |  |  242|  1.46k|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|  1.46k|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|  1.46k|	  else							\
  |  |  |  |  245|  1.46k|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|  1.46k|	  __p;							\
  |  |  |  |  247|  1.46k|	}))
  |  |  ------------------
  ------------------
  936|       |
  937|  13.1k|      for (i = 0; i < ht_size; i++)
  ------------------
  |  Branch (937:19): [True: 11.6k, False: 1.46k]
  ------------------
  938|  11.6k|        {
  939|  11.6k|          a_new[i] = GUINT_TO_POINTER (a[i]);
  ------------------
  |  |  102|  11.6k|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  940|  11.6k|        }
  941|       |
  942|  1.46k|      g_free (a);
  943|  1.46k|      *a_p = a_new;
  944|  1.46k|      return TRUE;
  ------------------
  |  |  818|  1.46k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.46k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  945|  1.46k|    }
  946|       |
  947|    229|  return FALSE;
  ------------------
  |  |  814|    229|#define	FALSE	(0)
  ------------------
  948|  1.69k|}
ghash.c:entry_is_big:
  922|  1.69k|{
  923|  1.69k|  return (((guintptr) v) >> ((BIG_ENTRY_SIZE - SMALL_ENTRY_SIZE) * 8)) != 0;
  ------------------
  |  |  249|  1.69k|#define BIG_ENTRY_SIZE (SIZEOF_VOID_P)
  |  |  ------------------
  |  |  |  |  392|  1.69k|#define SIZEOF_VOID_P 8
  |  |  ------------------
  ------------------
                return (((guintptr) v) >> ((BIG_ENTRY_SIZE - SMALL_ENTRY_SIZE) * 8)) != 0;
  ------------------
  |  |  250|  1.69k|#define SMALL_ENTRY_SIZE (SIZEOF_INT)
  |  |  ------------------
  |  |  |  |  380|  1.69k|#define SIZEOF_INT 4
  |  |  ------------------
  ------------------
  924|  1.69k|}
ghash.c:g_hash_table_remove_all_nodes:
  616|  1.55k|{
  617|  1.55k|  int i;
  618|  1.55k|  gpointer key;
  619|  1.55k|  gpointer value;
  620|  1.55k|  gint old_size;
  621|  1.55k|  gpointer *old_keys;
  622|  1.55k|  gpointer *old_values;
  623|  1.55k|  guint    *old_hashes;
  624|  1.55k|  gboolean  old_have_big_keys;
  625|  1.55k|  gboolean  old_have_big_values;
  626|       |
  627|       |  /* If the hash table is already empty, there is nothing to be done. */
  628|  1.55k|  if (hash_table->nnodes == 0)
  ------------------
  |  Branch (628:7): [True: 832, False: 724]
  ------------------
  629|    832|    return;
  630|       |
  631|    724|  hash_table->nnodes = 0;
  632|    724|  hash_table->noccupied = 0;
  633|       |
  634|       |  /* Easy case: no callbacks, so we just zero out the arrays */
  635|    724|  if (!notify ||
  ------------------
  |  Branch (635:7): [True: 0, False: 724]
  ------------------
  636|    724|      (hash_table->key_destroy_func == NULL &&
  ------------------
  |  Branch (636:8): [True: 0, False: 724]
  ------------------
  637|      0|       hash_table->value_destroy_func == NULL))
  ------------------
  |  Branch (637:8): [True: 0, False: 0]
  ------------------
  638|      0|    {
  639|      0|      if (!destruction)
  ------------------
  |  Branch (639:11): [True: 0, False: 0]
  ------------------
  640|      0|        {
  641|      0|          memset (hash_table->hashes, 0, hash_table->size * sizeof (guint));
  642|       |
  643|      0|#ifdef USE_SMALL_ARRAYS
  644|      0|          memset (hash_table->keys, 0, hash_table->size * (hash_table->have_big_keys ? BIG_ENTRY_SIZE : SMALL_ENTRY_SIZE));
  ------------------
  |  |  249|      0|#define BIG_ENTRY_SIZE (SIZEOF_VOID_P)
  |  |  ------------------
  |  |  |  |  392|      0|#define SIZEOF_VOID_P 8
  |  |  ------------------
  ------------------
                        memset (hash_table->keys, 0, hash_table->size * (hash_table->have_big_keys ? BIG_ENTRY_SIZE : SMALL_ENTRY_SIZE));
  ------------------
  |  |  250|      0|#define SMALL_ENTRY_SIZE (SIZEOF_INT)
  |  |  ------------------
  |  |  |  |  380|      0|#define SIZEOF_INT 4
  |  |  ------------------
  ------------------
  |  Branch (644:60): [True: 0, False: 0]
  ------------------
  645|      0|          memset (hash_table->values, 0, hash_table->size * (hash_table->have_big_values ? BIG_ENTRY_SIZE : SMALL_ENTRY_SIZE));
  ------------------
  |  |  249|      0|#define BIG_ENTRY_SIZE (SIZEOF_VOID_P)
  |  |  ------------------
  |  |  |  |  392|      0|#define SIZEOF_VOID_P 8
  |  |  ------------------
  ------------------
                        memset (hash_table->values, 0, hash_table->size * (hash_table->have_big_values ? BIG_ENTRY_SIZE : SMALL_ENTRY_SIZE));
  ------------------
  |  |  250|      0|#define SMALL_ENTRY_SIZE (SIZEOF_INT)
  |  |  ------------------
  |  |  |  |  380|      0|#define SIZEOF_INT 4
  |  |  ------------------
  ------------------
  |  Branch (645:62): [True: 0, False: 0]
  ------------------
  646|       |#else
  647|       |          memset (hash_table->keys, 0, hash_table->size * sizeof (gpointer));
  648|       |          memset (hash_table->values, 0, hash_table->size * sizeof (gpointer));
  649|       |#endif
  650|      0|        }
  651|       |
  652|      0|      return;
  653|      0|    }
  654|       |
  655|       |  /* Hard case: we need to do user callbacks.  There are two
  656|       |   * possibilities here:
  657|       |   *
  658|       |   *   1) there are no outstanding references on the table and therefore
  659|       |   *   nobody should be calling into it again (destroying == true)
  660|       |   *
  661|       |   *   2) there are outstanding references, and there may be future
  662|       |   *   calls into the table, either after we return, or from the destroy
  663|       |   *   notifies that we're about to do (destroying == false)
  664|       |   *
  665|       |   * We handle both cases by taking the current state of the table into
  666|       |   * local variables and replacing it with something else: in the "no
  667|       |   * outstanding references" cases we replace it with a bunch of
  668|       |   * null/zero values so that any access to the table will fail.  In the
  669|       |   * "may receive future calls" case, we reinitialise the struct to
  670|       |   * appear like a newly-created empty table.
  671|       |   *
  672|       |   * In both cases, we take over the references for the current state,
  673|       |   * freeing them below.
  674|       |   */
  675|    724|  old_size = hash_table->size;
  676|    724|  old_have_big_keys = hash_table->have_big_keys;
  677|    724|  old_have_big_values = hash_table->have_big_values;
  678|    724|  old_keys   = g_steal_pointer (&hash_table->keys);
  ------------------
  |  |  222|    724|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  679|    724|  old_values = g_steal_pointer (&hash_table->values);
  ------------------
  |  |  222|    724|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  680|    724|  old_hashes = g_steal_pointer (&hash_table->hashes);
  ------------------
  |  |  222|    724|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  681|       |
  682|    724|  if (!destruction)
  ------------------
  |  Branch (682:7): [True: 0, False: 724]
  ------------------
  683|       |    /* Any accesses will see an empty table */
  684|      0|    g_hash_table_setup_storage (hash_table);
  685|    724|  else
  686|       |    /* Will cause a quick crash on any attempted access */
  687|    724|    hash_table->size = hash_table->mod = hash_table->mask = 0;
  688|       |
  689|       |  /* Now do the actual destroy notifies */
  690|  6.51k|  for (i = 0; i < old_size; i++)
  ------------------
  |  Branch (690:15): [True: 5.79k, False: 724]
  ------------------
  691|  5.79k|    {
  692|  5.79k|      if (HASH_IS_REAL (old_hashes[i]))
  ------------------
  |  |  242|  5.79k|#define HASH_IS_REAL(h_) ((h_) >= 2)
  |  |  ------------------
  |  |  |  Branch (242:26): [True: 2.74k, False: 3.04k]
  |  |  ------------------
  ------------------
  693|  2.74k|        {
  694|  2.74k|          key = g_hash_table_fetch_key_or_value (old_keys, i, old_have_big_keys);
  695|  2.74k|          value = g_hash_table_fetch_key_or_value (old_values, i, old_have_big_values);
  696|       |
  697|  2.74k|          old_hashes[i] = UNUSED_HASH_VALUE;
  ------------------
  |  |  238|  2.74k|#define UNUSED_HASH_VALUE 0
  ------------------
  698|       |
  699|  2.74k|          g_hash_table_assign_key_or_value (old_keys, i, old_have_big_keys, NULL);
  700|  2.74k|          g_hash_table_assign_key_or_value (old_values, i, old_have_big_values, NULL);
  701|       |
  702|  2.74k|          if (hash_table->key_destroy_func != NULL)
  ------------------
  |  Branch (702:15): [True: 2.74k, False: 0]
  ------------------
  703|  2.74k|            hash_table->key_destroy_func (key);
  704|       |
  705|  2.74k|          if (hash_table->value_destroy_func != NULL)
  ------------------
  |  Branch (705:15): [True: 2.74k, False: 0]
  ------------------
  706|  2.74k|            hash_table->value_destroy_func (value);
  707|  2.74k|        }
  708|  5.79k|    }
  709|       |
  710|       |  /* Destroy old storage space. */
  711|    724|  if (old_keys != old_values)
  ------------------
  |  Branch (711:7): [True: 724, False: 0]
  ------------------
  712|    724|    g_free (old_values);
  713|       |
  714|    724|  g_free (old_keys);
  715|    724|  g_free (old_hashes);
  716|    724|}
ghash.c:g_hash_table_lookup_node:
  464|  2.66M|{
  465|  2.66M|  guint node_index;
  466|  2.66M|  guint node_hash;
  467|  2.66M|  guint hash_value;
  468|  2.66M|  guint first_tombstone = 0;
  469|  2.66M|  gboolean have_tombstone = FALSE;
  ------------------
  |  |  814|  2.66M|#define	FALSE	(0)
  ------------------
  470|  2.66M|  guint step = 0;
  471|       |
  472|  2.66M|  hash_value = hash_table->hash_func (key);
  473|  2.66M|  if (G_UNLIKELY (!HASH_IS_REAL (hash_value)))
  ------------------
  |  | 1025|  2.66M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  2.66M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  2.66M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  2.66M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  2.66M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 2, False: 2.66M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  2.66M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  2.66M|   else                                         \
  |  |  |  | 1021|  2.66M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  2.66M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  2.66M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 2, False: 2.66M]
  |  |  ------------------
  ------------------
  474|      2|    hash_value = 2;
  475|       |
  476|  2.66M|  *hash_return = hash_value;
  477|       |
  478|  2.66M|  node_index = g_hash_table_hash_to_index (hash_table, hash_value);
  479|  2.66M|  node_hash = hash_table->hashes[node_index];
  480|       |
  481|  5.08M|  while (!HASH_IS_UNUSED (node_hash))
  ------------------
  |  |  240|  5.08M|#define HASH_IS_UNUSED(h_) ((h_) == UNUSED_HASH_VALUE)
  |  |  ------------------
  |  |  |  |  238|  5.08M|#define UNUSED_HASH_VALUE 0
  |  |  ------------------
  ------------------
  |  Branch (481:10): [True: 2.48M, False: 2.59M]
  ------------------
  482|  2.48M|    {
  483|       |      /* We first check if our full hash values
  484|       |       * are equal so we can avoid calling the full-blown
  485|       |       * key equality function in most cases.
  486|       |       */
  487|  2.48M|      if (node_hash == hash_value)
  ------------------
  |  Branch (487:11): [True: 73.2k, False: 2.41M]
  ------------------
  488|  73.2k|        {
  489|  73.2k|          gpointer node_key = g_hash_table_fetch_key_or_value (hash_table->keys, node_index, hash_table->have_big_keys);
  490|       |
  491|  73.2k|          if (hash_table->key_equal_func)
  ------------------
  |  Branch (491:15): [True: 61.3k, False: 11.8k]
  ------------------
  492|  61.3k|            {
  493|  61.3k|              if (hash_table->key_equal_func (node_key, key))
  ------------------
  |  Branch (493:19): [True: 61.3k, False: 1]
  ------------------
  494|  61.3k|                return node_index;
  495|  61.3k|            }
  496|  11.8k|          else if (node_key == key)
  ------------------
  |  Branch (496:20): [True: 11.8k, False: 0]
  ------------------
  497|  11.8k|            {
  498|  11.8k|              return node_index;
  499|  11.8k|            }
  500|  73.2k|        }
  501|  2.41M|      else if (HASH_IS_TOMBSTONE (node_hash) && !have_tombstone)
  ------------------
  |  |  241|  4.83M|#define HASH_IS_TOMBSTONE(h_) ((h_) == TOMBSTONE_HASH_VALUE)
  |  |  ------------------
  |  |  |  |  239|  2.41M|#define TOMBSTONE_HASH_VALUE 1
  |  |  ------------------
  |  |  |  Branch (241:31): [True: 1.92M, False: 488k]
  |  |  ------------------
  ------------------
  |  Branch (501:49): [True: 1.22M, False: 699k]
  ------------------
  502|  1.22M|        {
  503|  1.22M|          first_tombstone = node_index;
  504|  1.22M|          have_tombstone = TRUE;
  ------------------
  |  |  818|  1.22M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.22M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  505|  1.22M|        }
  506|       |
  507|  2.41M|      step++;
  508|  2.41M|      node_index += step;
  509|  2.41M|      node_index &= hash_table->mask;
  510|  2.41M|      node_hash = hash_table->hashes[node_index];
  511|  2.41M|    }
  512|       |
  513|  2.59M|  if (have_tombstone)
  ------------------
  |  Branch (513:7): [True: 1.22M, False: 1.36M]
  ------------------
  514|  1.22M|    return first_tombstone;
  515|       |
  516|  1.36M|  return node_index;
  517|  2.59M|}
ghash.c:g_hash_table_hash_to_index:
  429|  2.66M|{
  430|       |  /* Multiply the hash by a small prime before applying the modulo. This
  431|       |   * prevents the table from becoming densely packed, even with a poor hash
  432|       |   * function. A densely packed table would have poor performance on
  433|       |   * workloads with many failed lookups or a high degree of churn. */
  434|  2.66M|  return (hash * 11) % hash_table->mod;
  435|  2.66M|}
ghash.c:g_hash_table_insert_internal:
 1592|  7.32k|{
 1593|  7.32k|  guint key_hash;
 1594|  7.32k|  guint node_index;
 1595|       |
 1596|  7.32k|  g_return_val_if_fail (hash_table != NULL, FALSE);
  ------------------
  |  |  643|  7.32k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  7.32k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  7.32k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  7.32k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  7.32k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  7.32k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  7.32k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  7.32k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 7.32k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  7.32k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  7.32k|   else                                         \
  |  |  |  |  |  | 1021|  7.32k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  7.32k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  7.32k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 7.32k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  7.32k|      { } \
  |  |  646|  7.32k|    else \
  |  |  647|  7.32k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  7.32k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  7.32k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 7.32k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1597|       |
 1598|  7.32k|  node_index = g_hash_table_lookup_node (hash_table, key, &key_hash);
 1599|       |
 1600|  7.32k|  return g_hash_table_insert_node (hash_table, node_index, key_hash, key, value, keep_new_key, FALSE);
  ------------------
  |  |  814|  7.32k|#define	FALSE	(0)
  ------------------
 1601|  7.32k|}
ghash.c:g_hash_table_remove_internal:
 1734|  4.16k|{
 1735|  4.16k|  guint node_index;
 1736|  4.16k|  guint node_hash;
 1737|       |
 1738|  4.16k|  g_return_val_if_fail (hash_table != NULL, FALSE);
  ------------------
  |  |  643|  4.16k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  4.16k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  4.16k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  4.16k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  4.16k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  4.16k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  4.16k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  4.16k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4.16k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  4.16k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  4.16k|   else                                         \
  |  |  |  |  |  | 1021|  4.16k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  4.16k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  4.16k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4.16k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  4.16k|      { } \
  |  |  646|  4.16k|    else \
  |  |  647|  4.16k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  4.16k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  4.16k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4.16k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1739|       |
 1740|  4.16k|  node_index = g_hash_table_lookup_node (hash_table, key, &node_hash);
 1741|       |
 1742|  4.16k|  if (!HASH_IS_REAL (hash_table->hashes[node_index]))
  ------------------
  |  |  242|  4.16k|#define HASH_IS_REAL(h_) ((h_) >= 2)
  ------------------
  |  Branch (1742:7): [True: 0, False: 4.16k]
  ------------------
 1743|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1744|       |
 1745|  4.16k|  g_hash_table_remove_node (hash_table, node_index, notify);
 1746|  4.16k|  g_hash_table_maybe_resize (hash_table);
 1747|       |
 1748|  4.16k|#ifndef G_DISABLE_ASSERT
 1749|  4.16k|  hash_table->version++;
 1750|  4.16k|#endif
 1751|       |
 1752|  4.16k|  return TRUE;
  ------------------
  |  |  818|  4.16k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  4.16k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1753|  4.16k|}
ghash.c:g_hash_table_assign_key_or_value:
  397|  29.2k|{
  398|       |#ifndef USE_SMALL_ARRAYS
  399|       |  is_big = TRUE;
  400|       |#endif
  401|  29.2k|  if (is_big)
  ------------------
  |  Branch (401:7): [True: 28.8k, False: 443]
  ------------------
  402|  28.8k|    *(((gpointer *) a) + index) = v;
  403|    443|  else
  404|    443|    *(((guint *) a) + index) = GPOINTER_TO_UINT (v);
  ------------------
  |  |   99|    443|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
  405|  29.2k|}
ghash.c:g_hash_table_remove_node:
  535|  4.16k|{
  536|  4.16k|  gpointer key;
  537|  4.16k|  gpointer value;
  538|       |
  539|  4.16k|  key = g_hash_table_fetch_key_or_value (hash_table->keys, i, hash_table->have_big_keys);
  540|  4.16k|  value = g_hash_table_fetch_key_or_value (hash_table->values, i, hash_table->have_big_values);
  541|       |
  542|       |  /* Erect tombstone */
  543|  4.16k|  hash_table->hashes[i] = TOMBSTONE_HASH_VALUE;
  ------------------
  |  |  239|  4.16k|#define TOMBSTONE_HASH_VALUE 1
  ------------------
  544|       |
  545|       |  /* Be GC friendly */
  546|  4.16k|  g_hash_table_assign_key_or_value (hash_table->keys, i, hash_table->have_big_keys, NULL);
  547|  4.16k|  g_hash_table_assign_key_or_value (hash_table->values, i, hash_table->have_big_values, NULL);
  548|       |
  549|  4.16k|  hash_table->nnodes--;
  550|       |
  551|  4.16k|  if (notify && hash_table->key_destroy_func)
  ------------------
  |  Branch (551:7): [True: 4.16k, False: 0]
  |  Branch (551:17): [True: 0, False: 4.16k]
  ------------------
  552|      0|    hash_table->key_destroy_func (key);
  553|       |
  554|  4.16k|  if (notify && hash_table->value_destroy_func)
  ------------------
  |  Branch (554:7): [True: 4.16k, False: 0]
  |  Branch (554:17): [True: 0, False: 4.16k]
  ------------------
  555|      0|    hash_table->value_destroy_func (value);
  556|       |
  557|  4.16k|}
ghash.c:g_hash_table_maybe_resize:
  909|  7.33k|{
  910|  7.33k|  gint noccupied = hash_table->noccupied;
  911|  7.33k|  gint size = hash_table->size;
  912|       |
  913|  7.33k|  if ((size > hash_table->nnodes * 4 && size > 1 << HASH_TABLE_MIN_SHIFT) ||
  ------------------
  |  |  236|  3.23k|#define HASH_TABLE_MIN_SHIFT 3  /* 1 << 3 == 8 buckets */
  ------------------
  |  Branch (913:8): [True: 3.23k, False: 4.10k]
  |  Branch (913:41): [True: 0, False: 3.23k]
  ------------------
  914|  7.33k|      (size <= noccupied + (noccupied / 16)))
  ------------------
  |  Branch (914:7): [True: 22, False: 7.31k]
  ------------------
  915|     22|    g_hash_table_resize (hash_table);
  916|  7.33k|}
ghash.c:g_hash_table_resize:
  852|     22|{
  853|     22|  guint32 *reallocated_buckets_bitmap;
  854|     22|  gsize old_size;
  855|     22|  gboolean is_a_set;
  856|       |
  857|     22|  old_size = hash_table->size;
  858|     22|  is_a_set = hash_table->keys == hash_table->values;
  859|       |
  860|       |  /* The outer checks in g_hash_table_maybe_resize() will only consider
  861|       |   * cleanup/resize when the load factor goes below .25 (1/4, ignoring
  862|       |   * tombstones) or above .9375 (15/16, including tombstones).
  863|       |   *
  864|       |   * Once this happens, tombstones will always be cleaned out. If our
  865|       |   * load sans tombstones is greater than .75 (1/1.333, see below), we'll
  866|       |   * take this opportunity to grow the table too.
  867|       |   *
  868|       |   * Immediately after growing, the load factor will be in the range
  869|       |   * .375 .. .469. After shrinking, it will be exactly .5. */
  870|       |
  871|     22|  g_hash_table_set_shift_from_size (hash_table, hash_table->nnodes * 1.333);
  872|       |
  873|     22|  if (hash_table->size > old_size)
  ------------------
  |  Branch (873:7): [True: 22, False: 0]
  ------------------
  874|     22|    {
  875|     22|      realloc_arrays (hash_table, is_a_set);
  876|     22|      memset (&hash_table->hashes[old_size], 0, (hash_table->size - old_size) * sizeof (guint));
  877|       |
  878|     22|      reallocated_buckets_bitmap = g_new0 (guint32, (hash_table->size + 31) / 32);
  ------------------
  |  |  307|     22|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|     22|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     22|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|     22|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|     22|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|     22|	  gpointer __p;						\
  |  |  |  |  239|     22|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 22]
  |  |  |  |  ------------------
  |  |  |  |  240|     22|	    __p = g_##func (__n);				\
  |  |  |  |  241|     22|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 22]
  |  |  |  |  ------------------
  |  |  |  |  242|     22|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|     22|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|     22|	  else							\
  |  |  |  |  245|     22|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|     22|	  __p;							\
  |  |  |  |  247|     22|	}))
  |  |  ------------------
  ------------------
  879|     22|    }
  880|      0|  else
  881|      0|    {
  882|      0|      reallocated_buckets_bitmap = g_new0 (guint32, (old_size + 31) / 32);
  ------------------
  |  |  307|      0|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|      0|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      0|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      0|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      0|	  gpointer __p;						\
  |  |  |  |  239|      0|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|      0|	    __p = g_##func (__n);				\
  |  |  |  |  241|      0|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      0|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      0|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      0|	  else							\
  |  |  |  |  245|      0|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      0|	  __p;							\
  |  |  |  |  247|      0|	}))
  |  |  ------------------
  ------------------
  883|      0|    }
  884|       |
  885|     22|  if (is_a_set)
  ------------------
  |  Branch (885:7): [True: 5, False: 17]
  ------------------
  886|      5|    resize_set (hash_table, old_size, reallocated_buckets_bitmap);
  887|     17|  else
  888|     17|    resize_map (hash_table, old_size, reallocated_buckets_bitmap);
  889|       |
  890|     22|  g_free (reallocated_buckets_bitmap);
  891|       |
  892|     22|  if (hash_table->size < old_size)
  ------------------
  |  Branch (892:7): [True: 0, False: 22]
  ------------------
  893|      0|    realloc_arrays (hash_table, is_a_set);
  894|       |
  895|     22|  hash_table->noccupied = hash_table->nnodes;
  896|     22|}
ghash.c:g_hash_table_set_shift_from_size:
  367|     22|{
  368|     22|  gint shift;
  369|       |
  370|     22|  shift = g_hash_table_find_closest_shift (size);
  371|     22|  shift = MAX (shift, HASH_TABLE_MIN_SHIFT);
  ------------------
  |  |  822|     22|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 22, False: 0]
  |  |  ------------------
  ------------------
  372|       |
  373|     22|  g_hash_table_set_shift (hash_table, shift);
  374|     22|}
ghash.c:g_hash_table_find_closest_shift:
  356|     22|{
  357|     22|  gint i;
  358|       |
  359|    137|  for (i = 0; n; i++)
  ------------------
  |  Branch (359:15): [True: 115, False: 22]
  ------------------
  360|    115|    n >>= 1;
  361|       |
  362|     22|  return i;
  363|     22|}
ghash.c:realloc_arrays:
  720|     22|{
  721|     22|  hash_table->hashes = g_renew (guint, hash_table->hashes, hash_table->size);
  ------------------
  |  |  321|     22|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|     22|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     22|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|     22|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|     22|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|     22|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|     22|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 22]
  |  |  |  |  ------------------
  |  |  |  |  254|     22|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|     22|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 22]
  |  |  |  |  ------------------
  |  |  |  |  256|     22|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (256:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (256:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  257|     22|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|     22|	  else							\
  |  |  |  |  259|     22|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|     22|	  __p;							\
  |  |  |  |  261|     22|	}))
  |  |  ------------------
  ------------------
  722|     22|  hash_table->keys = g_hash_table_realloc_key_or_value_array (hash_table->keys, hash_table->size, hash_table->have_big_keys);
  723|       |
  724|     22|  if (is_a_set)
  ------------------
  |  Branch (724:7): [True: 5, False: 17]
  ------------------
  725|      5|    hash_table->values = hash_table->keys;
  726|     17|  else
  727|     17|    hash_table->values = g_hash_table_realloc_key_or_value_array (hash_table->values, hash_table->size, hash_table->have_big_values);
  728|     22|}
ghash.c:resize_set:
  755|      5|static void fname (GHashTable *hash_table, guint old_size, guint32 *reallocated_buckets_bitmap) \
  756|      5|{                                                                       \
  757|      5|  guint i;                                                              \
  758|      5|                                                                        \
  759|     85|  for (i = 0; i < old_size; i++)                                        \
  ------------------
  |  Branch (759:15): [True: 80, False: 5]
  ------------------
  760|     80|    {                                                                   \
  761|     80|      guint node_hash = hash_table->hashes[i];                          \
  762|     80|      gpointer key, value G_GNUC_UNUSED;                                \
  763|     80|                                                                        \
  764|     80|      if (!HASH_IS_REAL (node_hash))                                    \
  ------------------
  |  |  242|     80|#define HASH_IS_REAL(h_) ((h_) >= 2)
  ------------------
  |  Branch (764:11): [True: 1, False: 79]
  ------------------
  765|     80|        {                                                               \
  766|      1|          /* Clear tombstones */                                        \
  767|      1|          hash_table->hashes[i] = UNUSED_HASH_VALUE;                    \
  ------------------
  |  |  238|      1|#define UNUSED_HASH_VALUE 0
  ------------------
  768|      1|          continue;                                                     \
  769|      1|        }                                                               \
  770|     80|                                                                        \
  771|     80|      /* Skip entries relocated through eviction */                     \
  772|     80|      if (get_status_bit (reallocated_buckets_bitmap, i))               \
  ------------------
  |  Branch (772:11): [True: 19, False: 60]
  ------------------
  773|     79|        continue;                                                       \
  774|     79|                                                                        \
  775|     79|      hash_table->hashes[i] = UNUSED_HASH_VALUE;                        \
  ------------------
  |  |  238|     60|#define UNUSED_HASH_VALUE 0
  ------------------
  776|     60|      EVICT_KEYVAL (hash_table, i, NULL, NULL, key, value);             \
  ------------------
  |  |  828|     60|#define EVICT_KEYVAL(ht, index, key, value, outkey, outvalue) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|     60|#define G_STMT_START  do
  |  |  ------------------
  |  |  829|     60|    (outkey) = g_hash_table_evict_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  830|     60|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     60|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 60]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  777|     60|                                                                        \
  778|     60|      for (;;)                                                          \
  779|     79|        {                                                               \
  780|     79|          guint hash_val;                                               \
  781|     79|          guint replaced_hash;                                          \
  782|     79|          guint step = 0;                                               \
  783|     79|                                                                        \
  784|     79|          hash_val = g_hash_table_hash_to_index (hash_table, node_hash); \
  785|     79|                                                                        \
  786|    109|          while (get_status_bit (reallocated_buckets_bitmap, hash_val)) \
  ------------------
  |  Branch (786:18): [True: 30, False: 79]
  ------------------
  787|     79|            {                                                           \
  788|     30|              step++;                                                   \
  789|     30|              hash_val += step;                                         \
  790|     30|              hash_val &= hash_table->mask;                             \
  791|     30|            }                                                           \
  792|     79|                                                                        \
  793|     79|          set_status_bit (reallocated_buckets_bitmap, hash_val);        \
  794|     79|                                                                        \
  795|     79|          replaced_hash = hash_table->hashes[hash_val];                 \
  796|     79|          hash_table->hashes[hash_val] = node_hash;                     \
  797|     79|          if (!HASH_IS_REAL (replaced_hash))                            \
  ------------------
  |  |  242|     79|#define HASH_IS_REAL(h_) ((h_) >= 2)
  ------------------
  |  Branch (797:15): [True: 60, False: 19]
  ------------------
  798|     79|            {                                                           \
  799|     60|              ASSIGN_KEYVAL (hash_table, hash_val, key, value);         \
  ------------------
  |  |  824|     60|#define ASSIGN_KEYVAL(ht, index, key, value) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|     60|#define G_STMT_START  do
  |  |  ------------------
  |  |  825|     60|    g_hash_table_assign_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  826|     60|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     60|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 60]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  800|     60|              break;                                                    \
  801|     60|            }                                                           \
  802|     79|                                                                        \
  803|     79|          node_hash = replaced_hash;                                    \
  804|     19|          EVICT_KEYVAL (hash_table, hash_val, key, value, key, value);  \
  ------------------
  |  |  828|     19|#define EVICT_KEYVAL(ht, index, key, value, outkey, outvalue) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|     19|#define G_STMT_START  do
  |  |  ------------------
  |  |  829|     19|    (outkey) = g_hash_table_evict_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  830|     19|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     19|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 19]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  805|     19|        }                                                               \
  806|     60|    }                                                                   \
  807|      5|}
ghash.c:get_status_bit:
  740|  1.38k|{
  741|  1.38k|  return (bitmap[index / 32] >> (index % 32)) & 1;
  742|  1.38k|}
ghash.c:g_hash_table_evict_key_or_value:
  409|  1.05k|{
  410|       |#ifndef USE_SMALL_ARRAYS
  411|       |  is_big = TRUE;
  412|       |#endif
  413|  1.05k|  if (is_big)
  ------------------
  |  Branch (413:7): [True: 761, False: 292]
  ------------------
  414|    761|    {
  415|    761|      gpointer r = *(((gpointer *) a) + index);
  416|    761|      *(((gpointer *) a) + index) = v;
  417|    761|      return r;
  418|    761|    }
  419|    292|  else
  420|    292|    {
  421|    292|      gpointer r = GUINT_TO_POINTER (*(((guint *) a) + index));
  ------------------
  |  |  102|    292|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  422|    292|      *(((guint *) a) + index) = GPOINTER_TO_UINT (v);
  ------------------
  |  |   99|    292|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
  423|    292|      return r;
  424|    292|    }
  425|  1.05k|}
ghash.c:set_status_bit:
  746|    566|{
  747|    566|  bitmap[index / 32] |= 1U << (index % 32);
  748|    566|}
ghash.c:resize_map:
  755|     17|static void fname (GHashTable *hash_table, guint old_size, guint32 *reallocated_buckets_bitmap) \
  756|     17|{                                                                       \
  757|     17|  guint i;                                                              \
  758|     17|                                                                        \
  759|    521|  for (i = 0; i < old_size; i++)                                        \
  ------------------
  |  Branch (759:15): [True: 504, False: 17]
  ------------------
  760|    504|    {                                                                   \
  761|    504|      guint node_hash = hash_table->hashes[i];                          \
  762|    504|      gpointer key, value G_GNUC_UNUSED;                                \
  763|    504|                                                                        \
  764|    504|      if (!HASH_IS_REAL (node_hash))                                    \
  ------------------
  |  |  242|    504|#define HASH_IS_REAL(h_) ((h_) >= 2)
  ------------------
  |  Branch (764:11): [True: 14, False: 490]
  ------------------
  765|    504|        {                                                               \
  766|     14|          /* Clear tombstones */                                        \
  767|     14|          hash_table->hashes[i] = UNUSED_HASH_VALUE;                    \
  ------------------
  |  |  238|     14|#define UNUSED_HASH_VALUE 0
  ------------------
  768|     14|          continue;                                                     \
  769|     14|        }                                                               \
  770|    504|                                                                        \
  771|    504|      /* Skip entries relocated through eviction */                     \
  772|    504|      if (get_status_bit (reallocated_buckets_bitmap, i))               \
  ------------------
  |  Branch (772:11): [True: 128, False: 362]
  ------------------
  773|    490|        continue;                                                       \
  774|    490|                                                                        \
  775|    490|      hash_table->hashes[i] = UNUSED_HASH_VALUE;                        \
  ------------------
  |  |  238|    362|#define UNUSED_HASH_VALUE 0
  ------------------
  776|    362|      EVICT_KEYVAL (hash_table, i, NULL, NULL, key, value);             \
  ------------------
  |  |  814|    362|#define EVICT_KEYVAL(ht, index, key, value, outkey, outvalue) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|    362|#define G_STMT_START  do
  |  |  ------------------
  |  |  815|    362|    (outkey) = g_hash_table_evict_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  816|    362|    (outvalue) = g_hash_table_evict_key_or_value ((ht)->values, (index), (ht)->have_big_values, (value)); \
  |  |  817|    362|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    362|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 362]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  777|    362|                                                                        \
  778|    362|      for (;;)                                                          \
  779|    487|        {                                                               \
  780|    487|          guint hash_val;                                               \
  781|    487|          guint replaced_hash;                                          \
  782|    487|          guint step = 0;                                               \
  783|    487|                                                                        \
  784|    487|          hash_val = g_hash_table_hash_to_index (hash_table, node_hash); \
  785|    487|                                                                        \
  786|    711|          while (get_status_bit (reallocated_buckets_bitmap, hash_val)) \
  ------------------
  |  Branch (786:18): [True: 224, False: 487]
  ------------------
  787|    487|            {                                                           \
  788|    224|              step++;                                                   \
  789|    224|              hash_val += step;                                         \
  790|    224|              hash_val &= hash_table->mask;                             \
  791|    224|            }                                                           \
  792|    487|                                                                        \
  793|    487|          set_status_bit (reallocated_buckets_bitmap, hash_val);        \
  794|    487|                                                                        \
  795|    487|          replaced_hash = hash_table->hashes[hash_val];                 \
  796|    487|          hash_table->hashes[hash_val] = node_hash;                     \
  797|    487|          if (!HASH_IS_REAL (replaced_hash))                            \
  ------------------
  |  |  242|    487|#define HASH_IS_REAL(h_) ((h_) >= 2)
  ------------------
  |  Branch (797:15): [True: 362, False: 125]
  ------------------
  798|    487|            {                                                           \
  799|    362|              ASSIGN_KEYVAL (hash_table, hash_val, key, value);         \
  ------------------
  |  |  809|    362|#define ASSIGN_KEYVAL(ht, index, key, value) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|    362|#define G_STMT_START  do
  |  |  ------------------
  |  |  810|    362|    g_hash_table_assign_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  811|    362|    g_hash_table_assign_key_or_value ((ht)->values, (index), (ht)->have_big_values, (value)); \
  |  |  812|    362|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    362|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 362]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  800|    362|              break;                                                    \
  801|    362|            }                                                           \
  802|    487|                                                                        \
  803|    487|          node_hash = replaced_hash;                                    \
  804|    125|          EVICT_KEYVAL (hash_table, hash_val, key, value, key, value);  \
  ------------------
  |  |  814|    125|#define EVICT_KEYVAL(ht, index, key, value, outkey, outvalue) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|    125|#define G_STMT_START  do
  |  |  ------------------
  |  |  815|    125|    (outkey) = g_hash_table_evict_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  816|    125|    (outvalue) = g_hash_table_evict_key_or_value ((ht)->values, (index), (ht)->have_big_values, (value)); \
  |  |  817|    125|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    125|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 125]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  805|    125|        }                                                               \
  806|    362|    }                                                                   \
  807|     17|}

glib_init:
  329|      4|{
  330|      4|  static gboolean glib_inited;
  331|       |
  332|      4|  if (glib_inited)
  ------------------
  |  Branch (332:7): [True: 2, False: 2]
  ------------------
  333|      2|    return;
  334|       |
  335|      2|  glib_inited = TRUE;
  ------------------
  |  |  818|      2|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      2|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  336|       |
  337|      2|  g_messages_prefixed_init ();
  338|      2|  g_debug_init ();
  339|      2|  g_quark_init ();
  340|      2|  g_error_init ();
  341|      2|}
glib-init.c:glib_init_ctor:
  401|      2|{
  402|      2|  glib_init ();
  403|      2|}
glib-init.c:g_messages_prefixed_init:
  297|      2|{
  298|      2|  const GDebugKey keys[] = {
  299|      2|    { "error", G_LOG_LEVEL_ERROR },
  300|      2|    { "critical", G_LOG_LEVEL_CRITICAL },
  301|      2|    { "warning", G_LOG_LEVEL_WARNING },
  302|      2|    { "message", G_LOG_LEVEL_MESSAGE },
  303|      2|    { "info", G_LOG_LEVEL_INFO },
  304|      2|    { "debug", G_LOG_LEVEL_DEBUG }
  305|      2|  };
  306|       |
  307|      2|  g_log_msg_prefix = g_parse_debug_envvar ("G_MESSAGES_PREFIXED", keys, G_N_ELEMENTS (keys), g_log_msg_prefix);
  ------------------
  |  |  840|      2|#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
  ------------------
  308|      2|}
glib-init.c:g_parse_debug_envvar:
  274|      4|{
  275|      4|  const gchar *value;
  276|       |
  277|       |#ifdef OS_WIN32
  278|       |  /* "fatal-warnings,fatal-criticals,all,help" is pretty short */
  279|       |  gchar buffer[100];
  280|       |
  281|       |  if (GetEnvironmentVariable (envvar, buffer, 100) < 100)
  282|       |    value = buffer;
  283|       |  else
  284|       |    return 0;
  285|       |#else
  286|      4|  value = getenv (envvar);
  287|      4|#endif
  288|       |
  289|      4|  if (value == NULL)
  ------------------
  |  Branch (289:7): [True: 4, False: 0]
  ------------------
  290|      4|    return default_value;
  291|       |
  292|      0|  return g_parse_debug_string (value, keys, n_keys);
  293|      4|}
glib-init.c:g_debug_init:
  312|      2|{
  313|      2|  const GDebugKey keys[] = {
  314|      2|    { "gc-friendly", 1 },
  315|      2|    {"fatal-warnings",  G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL },
  316|      2|    {"fatal-criticals", G_LOG_LEVEL_CRITICAL }
  317|      2|  };
  318|      2|  GLogLevelFlags flags;
  319|       |
  320|      2|  flags = g_parse_debug_envvar ("G_DEBUG", keys, G_N_ELEMENTS (keys), 0);
  ------------------
  |  |  840|      2|#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
  ------------------
  321|       |
  322|      2|  g_log_always_fatal |= flags & G_LOG_LEVEL_MASK;
  323|       |
  324|      2|  g_mem_gc_friendly = flags & 1;
  325|      2|}

glib__private__:
   34|      2|{
   35|      2|  static GLibPrivateVTable table = {
   36|      2|    g_wakeup_new,
   37|      2|    g_wakeup_free,
   38|      2|    g_wakeup_get_pollfd,
   39|      2|    g_wakeup_signal,
   40|      2|    g_wakeup_acknowledge,
   41|       |
   42|      2|    g_get_worker_context,
   43|       |
   44|      2|    g_check_setuid,
   45|      2|    g_main_context_new_with_next_id,
   46|       |
   47|      2|    g_dir_open_with_errno,
   48|      2|    g_dir_new_from_dirp,
   49|       |
   50|      2|    glib_init,
   51|       |
   52|       |#ifdef G_OS_WIN32
   53|       |    g_win32_stat_utf8,
   54|       |    g_win32_lstat_utf8,
   55|       |    g_win32_readlink_utf8,
   56|       |    g_win32_fstat,
   57|       |#endif
   58|      2|  };
   59|       |
   60|      2|  return &table;
   61|      2|}

g_get_real_time:
 2820|  9.53k|{
 2821|  9.53k|#ifndef G_OS_WIN32
 2822|  9.53k|  struct timeval r;
 2823|       |
 2824|       |  /* this is required on alpha, there the timeval structs are ints
 2825|       |   * not longs and a cast only would fail horribly */
 2826|  9.53k|  gettimeofday (&r, NULL);
 2827|       |
 2828|  9.53k|  return (((gint64) r.tv_sec) * 1000000) + r.tv_usec;
 2829|       |#else
 2830|       |  FILETIME ft;
 2831|       |  guint64 time64;
 2832|       |
 2833|       |  GetSystemTimeAsFileTime (&ft);
 2834|       |  memmove (&time64, &ft, sizeof (FILETIME));
 2835|       |
 2836|       |  /* Convert from 100s of nanoseconds since 1601-01-01
 2837|       |   * to Unix epoch. This is Y2038 safe.
 2838|       |   */
 2839|       |  time64 -= G_GINT64_CONSTANT (116444736000000000);
 2840|       |  time64 /= 10;
 2841|       |
 2842|       |  return time64;
 2843|       |#endif
 2844|  9.53k|}

g_malloc:
  101|   997k|{
  102|   997k|  if (G_LIKELY (n_bytes))
  ------------------
  |  | 1024|   997k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|   997k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   997k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   997k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   997k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 997k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|   997k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   997k|   else                                         \
  |  |  |  | 1021|   997k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   997k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   997k|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 997k, False: 0]
  |  |  ------------------
  ------------------
  103|   997k|    {
  104|   997k|      gpointer mem;
  105|       |
  106|   997k|      mem = malloc (n_bytes);
  107|   997k|      TRACE (GLIB_MEM_ALLOC((void*) mem, (unsigned int) n_bytes, 0, 0));
  108|   997k|      if (mem)
  ------------------
  |  Branch (108:11): [True: 997k, False: 0]
  ------------------
  109|   997k|	return mem;
  110|       |
  111|   997k|      g_error ("%s: failed to allocate %"G_GSIZE_FORMAT" bytes",
  ------------------
  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  337|      0|                        for (;;) ;                   \
  |  |  338|   997k|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   997k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  112|      0|               G_STRLOC, n_bytes);
  113|      0|    }
  114|       |
  115|      0|  TRACE(GLIB_MEM_ALLOC((void*) NULL, (int) n_bytes, 0, 0));
  116|       |
  117|       |  return NULL;
  118|   997k|}
g_malloc0:
  131|  1.01M|{
  132|  1.01M|  if (G_LIKELY (n_bytes))
  ------------------
  |  | 1024|  1.01M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  1.01M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.01M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.01M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.01M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 1.01M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.01M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.01M|   else                                         \
  |  |  |  | 1021|  1.01M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.01M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.01M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 1.01M, False: 0]
  |  |  ------------------
  ------------------
  133|  1.01M|    {
  134|  1.01M|      gpointer mem;
  135|       |
  136|  1.01M|      mem = calloc (1, n_bytes);
  137|  1.01M|      TRACE (GLIB_MEM_ALLOC((void*) mem, (unsigned int) n_bytes, 1, 0));
  138|  1.01M|      if (mem)
  ------------------
  |  Branch (138:11): [True: 1.01M, False: 0]
  ------------------
  139|  1.01M|	return mem;
  140|       |
  141|  1.01M|      g_error ("%s: failed to allocate %"G_GSIZE_FORMAT" bytes",
  ------------------
  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  337|      0|                        for (;;) ;                   \
  |  |  338|  1.01M|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.01M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  142|      0|               G_STRLOC, n_bytes);
  143|      0|    }
  144|       |
  145|      0|  TRACE(GLIB_MEM_ALLOC((void*) NULL, (int) n_bytes, 1, 0));
  146|       |
  147|       |  return NULL;
  148|  1.01M|}
g_realloc:
  166|  2.02M|{
  167|  2.02M|  gpointer newmem;
  168|       |
  169|  2.02M|  if (G_LIKELY (n_bytes))
  ------------------
  |  | 1024|  2.02M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  2.02M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  2.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  2.02M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  2.02M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 2.02M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  2.02M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  2.02M|   else                                         \
  |  |  |  | 1021|  2.02M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  2.02M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  2.02M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 2.02M, False: 0]
  |  |  ------------------
  ------------------
  170|  2.02M|    {
  171|  2.02M|      newmem = realloc (mem, n_bytes);
  172|  2.02M|      TRACE (GLIB_MEM_REALLOC((void*) newmem, (void*)mem, (unsigned int) n_bytes, 0));
  173|  2.02M|      if (newmem)
  ------------------
  |  Branch (173:11): [True: 2.02M, False: 0]
  ------------------
  174|  2.02M|	return newmem;
  175|       |
  176|  2.02M|      g_error ("%s: failed to allocate %"G_GSIZE_FORMAT" bytes",
  ------------------
  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  337|      0|                        for (;;) ;                   \
  |  |  338|  2.02M|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.02M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  177|      0|               G_STRLOC, n_bytes);
  178|      0|    }
  179|       |
  180|      0|  free (mem);
  181|       |
  182|      0|  TRACE (GLIB_MEM_REALLOC((void*) NULL, (void*)mem, 0, 0));
  183|       |
  184|       |  return NULL;
  185|  2.02M|}
g_free:
  198|  5.53M|{
  199|  5.53M|  free (mem);
  200|  5.53M|  TRACE(GLIB_MEM_FREE((void*) mem));
  201|  5.53M|}
g_malloc_n:
  337|  1.47k|{
  338|  1.47k|  if (SIZE_OVERFLOWS (n_blocks, n_block_bytes))
  ------------------
  |  |  321|  1.47k|#define SIZE_OVERFLOWS(a,b) (G_UNLIKELY ((b) > 0 && (a) > G_MAXSIZE / (b)))
  |  |  ------------------
  |  |  |  | 1025|  1.47k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.47k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.47k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.47k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  4.42k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.47k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.47k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.47k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.47k|   else                                         \
  |  |  |  |  |  | 1021|  1.47k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.47k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.47k|})
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (321:29): [True: 0, False: 1.47k]
  |  |  ------------------
  ------------------
  339|      0|    {
  340|      0|      g_error ("%s: overflow allocating %"G_GSIZE_FORMAT"*%"G_GSIZE_FORMAT" bytes",
  ------------------
  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  337|      0|                        for (;;) ;                   \
  |  |  338|      0|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  341|      0|               G_STRLOC, n_blocks, n_block_bytes);
  342|      0|    }
  343|       |
  344|  1.47k|  return g_malloc (n_blocks * n_block_bytes);
  345|  1.47k|}
g_malloc0_n:
  361|  1.60k|{
  362|  1.60k|  if (SIZE_OVERFLOWS (n_blocks, n_block_bytes))
  ------------------
  |  |  321|  1.60k|#define SIZE_OVERFLOWS(a,b) (G_UNLIKELY ((b) > 0 && (a) > G_MAXSIZE / (b)))
  |  |  ------------------
  |  |  |  | 1025|  1.60k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.60k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.60k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.60k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  4.82k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.60k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.60k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.60k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.60k|   else                                         \
  |  |  |  |  |  | 1021|  1.60k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.60k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.60k|})
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (321:29): [True: 0, False: 1.60k]
  |  |  ------------------
  ------------------
  363|      0|    {
  364|      0|      g_error ("%s: overflow allocating %"G_GSIZE_FORMAT"*%"G_GSIZE_FORMAT" bytes",
  ------------------
  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  337|      0|                        for (;;) ;                   \
  |  |  338|      0|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  365|      0|               G_STRLOC, n_blocks, n_block_bytes);
  366|      0|    }
  367|       |
  368|  1.60k|  return g_malloc0 (n_blocks * n_block_bytes);
  369|  1.60k|}
g_realloc_n:
  387|    219|{
  388|    219|  if (SIZE_OVERFLOWS (n_blocks, n_block_bytes))
  ------------------
  |  |  321|    219|#define SIZE_OVERFLOWS(a,b) (G_UNLIKELY ((b) > 0 && (a) > G_MAXSIZE / (b)))
  |  |  ------------------
  |  |  |  | 1025|    219|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    219| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    219|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    219|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    657|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 219, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 219]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    219|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    219|   else                                         \
  |  |  |  |  |  | 1021|    219|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    219|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    219|})
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (321:29): [True: 0, False: 219]
  |  |  ------------------
  ------------------
  389|      0|    {
  390|      0|      g_error ("%s: overflow allocating %"G_GSIZE_FORMAT"*%"G_GSIZE_FORMAT" bytes",
  ------------------
  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  337|      0|                        for (;;) ;                   \
  |  |  338|      0|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  391|      0|               G_STRLOC, n_blocks, n_block_bytes);
  392|      0|    }
  393|       |
  394|    219|  return g_realloc (mem, n_blocks * n_block_bytes);
  395|    219|}

garray.c:g_steal_pointer:
  210|   513k|{
  211|   513k|  gpointer *ptr = (gpointer *) pp;
  212|   513k|  gpointer ref;
  213|       |
  214|   513k|  ref = *ptr;
  215|   513k|  *ptr = NULL;
  216|       |
  217|   513k|  return ref;
  218|   513k|}
ghash.c:g_steal_pointer:
  210|  2.17k|{
  211|  2.17k|  gpointer *ptr = (gpointer *) pp;
  212|  2.17k|  gpointer ref;
  213|       |
  214|  2.17k|  ref = *ptr;
  215|  2.17k|  *ptr = NULL;
  216|       |
  217|  2.17k|  return ref;
  218|  2.17k|}
gthread.c:g_steal_pointer:
  210|      2|{
  211|      2|  gpointer *ptr = (gpointer *) pp;
  212|      2|  gpointer ref;
  213|       |
  214|      2|  ref = *ptr;
  215|      2|  *ptr = NULL;
  216|       |
  217|      2|  return ref;
  218|      2|}

g_logv:
 1289|   202k|{
 1290|   202k|  gboolean was_fatal = (log_level & G_LOG_FLAG_FATAL) != 0;
 1291|   202k|  gboolean was_recursion = (log_level & G_LOG_FLAG_RECURSION) != 0;
 1292|   202k|  gchar buffer[1025], *msg, *msg_alloc = NULL;
 1293|   202k|  gint i;
 1294|       |
 1295|   202k|  log_level &= G_LOG_LEVEL_MASK;
 1296|   202k|  if (!log_level)
  ------------------
  |  Branch (1296:7): [True: 0, False: 202k]
  ------------------
 1297|      0|    return;
 1298|       |
 1299|   202k|  if (log_level & G_LOG_FLAG_RECURSION)
  ------------------
  |  Branch (1299:7): [True: 0, False: 202k]
  ------------------
 1300|      0|    {
 1301|       |      /* we use a stack buffer of fixed size, since we're likely
 1302|       |       * in an out-of-memory situation
 1303|       |       */
 1304|      0|      gsize size G_GNUC_UNUSED;
 1305|       |
 1306|      0|      size = _g_vsnprintf (buffer, 1024, format, args);
  ------------------
  |  |   52|      0|#define _g_vsnprintf _g_gnulib_vsnprintf
  ------------------
 1307|      0|      msg = buffer;
 1308|      0|    }
 1309|   202k|  else
 1310|   202k|    msg = msg_alloc = g_strdup_vprintf (format, args);
 1311|       |
 1312|   202k|  if (expected_messages)
  ------------------
  |  Branch (1312:7): [True: 0, False: 202k]
  ------------------
 1313|      0|    {
 1314|      0|      GTestExpectedMessage *expected = expected_messages->data;
 1315|       |
 1316|      0|      if (g_strcmp0 (expected->log_domain, log_domain) == 0 &&
  ------------------
  |  Branch (1316:11): [True: 0, False: 0]
  ------------------
 1317|      0|          ((log_level & expected->log_level) == expected->log_level) &&
  ------------------
  |  Branch (1317:11): [True: 0, False: 0]
  ------------------
 1318|      0|          g_pattern_match_simple (expected->pattern, msg))
  ------------------
  |  Branch (1318:11): [True: 0, False: 0]
  ------------------
 1319|      0|        {
 1320|      0|          expected_messages = g_slist_delete_link (expected_messages,
 1321|      0|                                                   expected_messages);
 1322|      0|          g_free (expected->log_domain);
 1323|      0|          g_free (expected->pattern);
 1324|      0|          g_free (expected);
 1325|      0|          g_free (msg_alloc);
 1326|      0|          return;
 1327|      0|        }
 1328|      0|      else if ((log_level & G_LOG_LEVEL_DEBUG) != G_LOG_LEVEL_DEBUG)
  ------------------
  |  Branch (1328:16): [True: 0, False: 0]
  ------------------
 1329|      0|        {
 1330|      0|          gchar level_prefix[STRING_BUFFER_SIZE];
 1331|      0|          gchar *expected_message;
 1332|       |
 1333|      0|          mklevel_prefix (level_prefix, expected->log_level, FALSE);
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1334|      0|          expected_message = g_strdup_printf ("Did not see expected message %s-%s: %s",
 1335|      0|                                              expected->log_domain ? expected->log_domain : "**",
  ------------------
  |  Branch (1335:47): [True: 0, False: 0]
  ------------------
 1336|      0|                                              level_prefix, expected->pattern);
 1337|      0|          g_log_default_handler (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, expected_message, NULL);
 1338|      0|          g_free (expected_message);
 1339|       |
 1340|      0|          log_level |= G_LOG_FLAG_FATAL;
 1341|      0|        }
 1342|      0|    }
 1343|       |
 1344|   404k|  for (i = g_bit_nth_msf (log_level, -1); i >= 0; i = g_bit_nth_msf (log_level, i))
  ------------------
  |  |  369|   202k|#define g_bit_nth_msf(mask, nth_bit) g_bit_nth_msf_impl(mask, nth_bit)
  ------------------
                for (i = g_bit_nth_msf (log_level, -1); i >= 0; i = g_bit_nth_msf (log_level, i))
  ------------------
  |  |  369|   202k|#define g_bit_nth_msf(mask, nth_bit) g_bit_nth_msf_impl(mask, nth_bit)
  ------------------
  |  Branch (1344:43): [True: 202k, False: 202k]
  ------------------
 1345|   202k|    {
 1346|   202k|      GLogLevelFlags test_level;
 1347|       |
 1348|   202k|      test_level = 1L << i;
 1349|   202k|      if (log_level & test_level)
  ------------------
  |  Branch (1349:11): [True: 202k, False: 0]
  ------------------
 1350|   202k|	{
 1351|   202k|	  GLogDomain *domain;
 1352|   202k|	  GLogFunc log_func;
 1353|   202k|	  GLogLevelFlags domain_fatal_mask;
 1354|   202k|	  gpointer data = NULL;
 1355|   202k|          gboolean masquerade_fatal = FALSE;
  ------------------
  |  |  814|   202k|#define	FALSE	(0)
  ------------------
 1356|   202k|          guint depth;
 1357|       |
 1358|   202k|	  if (was_fatal)
  ------------------
  |  Branch (1358:8): [True: 0, False: 202k]
  ------------------
 1359|      0|	    test_level |= G_LOG_FLAG_FATAL;
 1360|   202k|	  if (was_recursion)
  ------------------
  |  Branch (1360:8): [True: 0, False: 202k]
  ------------------
 1361|      0|	    test_level |= G_LOG_FLAG_RECURSION;
 1362|       |
 1363|       |	  /* check recursion and lookup handler */
 1364|   202k|	  g_mutex_lock (&g_messages_lock);
 1365|   202k|          depth = GPOINTER_TO_UINT (g_private_get (&g_log_depth));
  ------------------
  |  |   99|   202k|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 1366|   202k|	  domain = g_log_find_domain_L (log_domain ? log_domain : "");
  ------------------
  |  Branch (1366:34): [True: 202k, False: 0]
  ------------------
 1367|   202k|	  if (depth)
  ------------------
  |  Branch (1367:8): [True: 0, False: 202k]
  ------------------
 1368|      0|	    test_level |= G_LOG_FLAG_RECURSION;
 1369|   202k|	  depth++;
 1370|   202k|	  domain_fatal_mask = domain ? domain->fatal_mask : G_LOG_FATAL_MASK;
  ------------------
  |  |   71|   404k|#define G_LOG_FATAL_MASK        (G_LOG_FLAG_RECURSION | G_LOG_LEVEL_ERROR)
  ------------------
  |  Branch (1370:24): [True: 0, False: 202k]
  ------------------
 1371|   202k|	  if ((domain_fatal_mask | g_log_always_fatal) & test_level)
  ------------------
  |  Branch (1371:8): [True: 0, False: 202k]
  ------------------
 1372|      0|	    test_level |= G_LOG_FLAG_FATAL;
 1373|   202k|	  if (test_level & G_LOG_FLAG_RECURSION)
  ------------------
  |  Branch (1373:8): [True: 0, False: 202k]
  ------------------
 1374|      0|	    log_func = _g_log_fallback_handler;
 1375|   202k|	  else
 1376|   202k|	    log_func = g_log_domain_get_handler_L (domain, test_level, &data);
 1377|   202k|	  domain = NULL;
 1378|   202k|	  g_mutex_unlock (&g_messages_lock);
 1379|       |
 1380|   202k|	  g_private_set (&g_log_depth, GUINT_TO_POINTER (depth));
  ------------------
  |  |  102|   202k|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
 1381|       |
 1382|   202k|          log_func (log_domain, test_level, msg, data);
 1383|       |
 1384|   202k|          if ((test_level & G_LOG_FLAG_FATAL)
  ------------------
  |  Branch (1384:15): [True: 0, False: 202k]
  ------------------
 1385|      0|              && !(test_level & G_LOG_LEVEL_ERROR))
  ------------------
  |  Branch (1385:18): [True: 0, False: 0]
  ------------------
 1386|      0|            {
 1387|      0|              masquerade_fatal = fatal_log_func
  ------------------
  |  Branch (1387:34): [True: 0, False: 0]
  ------------------
 1388|      0|                && !fatal_log_func (log_domain, test_level, msg, fatal_log_data);
  ------------------
  |  Branch (1388:20): [True: 0, False: 0]
  ------------------
 1389|      0|            }
 1390|       |
 1391|   202k|          if ((test_level & G_LOG_FLAG_FATAL) && !masquerade_fatal)
  ------------------
  |  Branch (1391:15): [True: 0, False: 202k]
  |  Branch (1391:50): [True: 0, False: 0]
  ------------------
 1392|      0|            {
 1393|       |              /* MessageBox is allowed on UWP apps only when building against
 1394|       |               * the debug CRT, which will set -D_DEBUG */
 1395|       |#if defined(G_OS_WIN32) && (defined(_DEBUG) || !defined(G_WINAPI_ONLY_APP))
 1396|       |              if (win32_keep_fatal_message)
 1397|       |                {
 1398|       |                  WCHAR *wide_msg;
 1399|       |
 1400|       |                  wide_msg = g_utf8_to_utf16 (fatal_msg_buf, -1, NULL, NULL, NULL);
 1401|       |
 1402|       |                  MessageBoxW (NULL, wide_msg, NULL,
 1403|       |                               MB_ICONERROR | MB_SETFOREGROUND);
 1404|       |
 1405|       |                  g_free (wide_msg);
 1406|       |                }
 1407|       |#endif
 1408|       |
 1409|      0|              _g_log_abort (!(test_level & G_LOG_FLAG_RECURSION));
 1410|      0|	    }
 1411|       |	  
 1412|   202k|	  depth--;
 1413|   202k|	  g_private_set (&g_log_depth, GUINT_TO_POINTER (depth));
  ------------------
  |  |  102|   202k|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
 1414|   202k|	}
 1415|   202k|    }
 1416|       |
 1417|   202k|  g_free (msg_alloc);
 1418|   202k|}
g_log:
 1447|   202k|{
 1448|   202k|  va_list args;
 1449|       |  
 1450|   202k|  va_start (args, format);
 1451|   202k|  g_logv (log_domain, log_level, format, args);
 1452|       |  va_end (args);
 1453|   202k|}
g_log_structured_array:
 1940|   202k|{
 1941|   202k|  GLogWriterFunc writer_func;
 1942|   202k|  gpointer writer_user_data;
 1943|   202k|  gboolean recursion;
 1944|   202k|  guint depth;
 1945|       |
 1946|   202k|  if (n_fields == 0)
  ------------------
  |  Branch (1946:7): [True: 0, False: 202k]
  ------------------
 1947|      0|    return;
 1948|       |
 1949|       |  /* Check for recursion and look up the writer function. */
 1950|   202k|  depth = GPOINTER_TO_UINT (g_private_get (&g_log_structured_depth));
  ------------------
  |  |   99|   202k|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 1951|   202k|  recursion = (depth > 0);
 1952|       |
 1953|   202k|  g_mutex_lock (&g_messages_lock);
 1954|       |
 1955|   202k|  writer_func = recursion ? _g_log_writer_fallback : log_writer_func;
  ------------------
  |  Branch (1955:17): [True: 0, False: 202k]
  ------------------
 1956|   202k|  writer_user_data = log_writer_user_data;
 1957|       |
 1958|   202k|  g_mutex_unlock (&g_messages_lock);
 1959|       |
 1960|       |  /* Write the log entry. */
 1961|   202k|  g_private_set (&g_log_structured_depth, GUINT_TO_POINTER (++depth));
  ------------------
  |  |  102|   202k|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
 1962|       |
 1963|   202k|  g_assert (writer_func != NULL);
  ------------------
  |  |  231|   202k|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   202k|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|   202k|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|   202k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   202k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   202k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   202k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   202k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 202k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   202k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   202k|   else                                         \
  |  |  |  |  |  | 1021|   202k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   202k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   202k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 202k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|   202k|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|   202k|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   202k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 202k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1964|   202k|  writer_func (log_level, fields, n_fields, writer_user_data);
 1965|       |
 1966|   202k|  g_private_set (&g_log_structured_depth, GUINT_TO_POINTER (--depth));
  ------------------
  |  |  102|   202k|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
 1967|       |
 1968|       |  /* Abort if the message was fatal. */
 1969|   202k|  if (log_level & G_LOG_FATAL_MASK)
  ------------------
  |  |   71|   202k|#define G_LOG_FATAL_MASK        (G_LOG_FLAG_RECURSION | G_LOG_LEVEL_ERROR)
  ------------------
  |  Branch (1969:7): [True: 0, False: 202k]
  ------------------
 1970|      0|    _g_log_abort (!(log_level & G_LOG_FLAG_RECURSION));
 1971|   202k|}
g_log_writer_default:
 2751|   202k|{
 2752|   202k|  static gsize initialized = 0;
 2753|   202k|  static gboolean stderr_is_journal = FALSE;
  ------------------
  |  |  814|   202k|#define	FALSE	(0)
  ------------------
 2754|       |
 2755|   202k|  g_return_val_if_fail (fields != NULL, G_LOG_WRITER_UNHANDLED);
  ------------------
  |  |  643|   202k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   202k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   202k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   202k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   202k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   202k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   202k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   202k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 202k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   202k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   202k|   else                                         \
  |  |  |  |  |  | 1021|   202k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   202k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   202k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 202k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   202k|      { } \
  |  |  646|   202k|    else \
  |  |  647|   202k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   202k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   202k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 202k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2756|   202k|  g_return_val_if_fail (n_fields > 0, G_LOG_WRITER_UNHANDLED);
  ------------------
  |  |  643|   202k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   202k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   202k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   202k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   202k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   202k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   202k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   202k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 202k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   202k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   202k|   else                                         \
  |  |  |  |  |  | 1021|   202k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   202k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   202k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 202k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   202k|      { } \
  |  |  646|   202k|    else \
  |  |  647|   202k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   202k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   202k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 202k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2757|       |
 2758|   202k|  if (should_drop_message (log_level, NULL, fields, n_fields))
  ------------------
  |  Branch (2758:7): [True: 202k, False: 0]
  ------------------
 2759|   202k|    return G_LOG_WRITER_HANDLED;
 2760|       |
 2761|       |  /* Mark messages as fatal if they have a level set in
 2762|       |   * g_log_set_always_fatal().
 2763|       |   */
 2764|      0|  if ((log_level & g_log_always_fatal) && !log_is_old_api (fields, n_fields))
  ------------------
  |  Branch (2764:7): [True: 0, False: 0]
  |  Branch (2764:43): [True: 0, False: 0]
  ------------------
 2765|      0|    log_level |= G_LOG_FLAG_FATAL;
 2766|       |
 2767|       |  /* Try logging to the systemd journal as first choice. */
 2768|      0|  if (g_once_init_enter (&initialized))
  ------------------
  |  |  257|      0|  (G_GNUC_EXTENSION ({                                               \
  |  |  ------------------
  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  |  Branch (257:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  258|      0|    G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer));       \
  |  |  ------------------
  |  |  |  |  765|      0|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  259|      0|    (void) (0 ? (gpointer) *(location) : NULL);                      \
  |  |  ------------------
  |  |  |  Branch (259:13): [Folded, False: 0]
  |  |  ------------------
  |  |  260|      0|    (!g_atomic_pointer_get (location) &&                             \
  |  |  ------------------
  |  |  |  |  113|      0|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|      0|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|      0|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|      0|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|      0|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|      0|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|      0|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|      0|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|      0|    gapg_temp_newval;                                                      \
  |  |  |  |  119|      0|  }))
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  261|      0|     g_once_init_enter (location));                                  \
  |  |  ------------------
  |  |  |  Branch (261:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  262|      0|  }))
  ------------------
 2769|      0|    {
 2770|      0|      stderr_is_journal = g_log_writer_is_journald (fileno (stderr));
 2771|      0|      g_once_init_leave (&initialized, TRUE);
  ------------------
  |  |  264|      0|  (G_GNUC_EXTENSION ({                                               \
  |  |  ------------------
  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  265|      0|    G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer));       \
  |  |  ------------------
  |  |  |  |  765|      0|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  266|      0|    0 ? (void) (*(location) = (result)) : (void) 0;                  \
  |  |  ------------------
  |  |  |  Branch (266:5): [Folded, False: 0]
  |  |  ------------------
  |  |  267|      0|    g_once_init_leave ((location), (gsize) (result));                \
  |  |  268|      0|  }))
  ------------------
 2772|      0|    }
 2773|       |
 2774|      0|  if (stderr_is_journal &&
  ------------------
  |  Branch (2774:7): [True: 0, False: 0]
  ------------------
 2775|      0|      g_log_writer_journald (log_level, fields, n_fields, user_data) ==
  ------------------
  |  Branch (2775:7): [True: 0, False: 0]
  ------------------
 2776|      0|      G_LOG_WRITER_HANDLED)
 2777|      0|    goto handled;
 2778|       |
 2779|       |  /* FIXME: Add support for the Windows log. */
 2780|       |
 2781|      0|  if (g_log_writer_standard_streams (log_level, fields, n_fields, user_data) ==
  ------------------
  |  Branch (2781:7): [True: 0, False: 0]
  ------------------
 2782|      0|      G_LOG_WRITER_HANDLED)
 2783|      0|    goto handled;
 2784|       |
 2785|      0|  return G_LOG_WRITER_UNHANDLED;
 2786|       |
 2787|      0|handled:
 2788|       |  /* Abort if the message was fatal. */
 2789|      0|  if (log_level & G_LOG_FLAG_FATAL)
  ------------------
  |  Branch (2789:7): [True: 0, False: 0]
  ------------------
 2790|      0|    {
 2791|       |      /* MessageBox is allowed on UWP apps only when building against
 2792|       |       * the debug CRT, which will set -D_DEBUG */
 2793|       |#if defined(G_OS_WIN32) && (defined(_DEBUG) || !defined(G_WINAPI_ONLY_APP))
 2794|       |      if (!g_test_initialized ())
 2795|       |        {
 2796|       |          WCHAR *wide_msg;
 2797|       |
 2798|       |          wide_msg = g_utf8_to_utf16 (fatal_msg_buf, -1, NULL, NULL, NULL);
 2799|       |
 2800|       |          MessageBoxW (NULL, wide_msg, NULL, MB_ICONERROR | MB_SETFOREGROUND);
 2801|       |
 2802|       |          g_free (wide_msg);
 2803|       |        }
 2804|       |#endif /* !G_OS_WIN32 */
 2805|       |
 2806|      0|      _g_log_abort (!(log_level & G_LOG_FLAG_RECURSION));
 2807|      0|    }
 2808|       |
 2809|      0|  return G_LOG_WRITER_HANDLED;
 2810|      0|}
g_log_default_handler:
 3197|   202k|{
 3198|   202k|  GLogField fields[4];
 3199|   202k|  int n_fields = 0;
 3200|       |
 3201|       |  /* we can be called externally with recursion for whatever reason */
 3202|   202k|  if (log_level & G_LOG_FLAG_RECURSION)
  ------------------
  |  Branch (3202:7): [True: 0, False: 202k]
  ------------------
 3203|      0|    {
 3204|      0|      _g_log_fallback_handler (log_domain, log_level, message, unused_data);
 3205|      0|      return;
 3206|      0|    }
 3207|       |
 3208|   202k|  fields[0].key = "GLIB_OLD_LOG_API";
 3209|   202k|  fields[0].value = "1";
 3210|   202k|  fields[0].length = -1;
 3211|   202k|  n_fields++;
 3212|       |
 3213|   202k|  fields[1].key = "MESSAGE";
 3214|   202k|  fields[1].value = message;
 3215|   202k|  fields[1].length = -1;
 3216|   202k|  n_fields++;
 3217|       |
 3218|   202k|  fields[2].key = "PRIORITY";
 3219|   202k|  fields[2].value = log_level_to_priority (log_level);
 3220|   202k|  fields[2].length = -1;
 3221|   202k|  n_fields++;
 3222|       |
 3223|   202k|  if (log_domain)
  ------------------
  |  Branch (3223:7): [True: 202k, False: 0]
  ------------------
 3224|   202k|    {
 3225|   202k|      fields[3].key = "GLIB_DOMAIN";
 3226|   202k|      fields[3].value = log_domain;
 3227|   202k|      fields[3].length = -1;
 3228|   202k|      n_fields++;
 3229|   202k|    }
 3230|       |
 3231|       |  /* Print out via the structured log API, but drop any fatal flags since we
 3232|       |   * have already handled them. The fatal handling in the structured logging
 3233|       |   * API is more coarse-grained than in the old g_log() API, so we don't want
 3234|       |   * to use it here.
 3235|       |   */
 3236|   202k|  g_log_structured_array (log_level & ~G_LOG_FLAG_FATAL, fields, n_fields);
 3237|   202k|}
gmessages.c:g_log_find_domain_L:
  614|   202k|{
  615|   202k|  GLogDomain *domain;
  616|       |  
  617|   202k|  domain = g_log_domains;
  618|   202k|  while (domain)
  ------------------
  |  Branch (618:10): [True: 0, False: 202k]
  ------------------
  619|      0|    {
  620|      0|      if (strcmp (domain->log_domain, log_domain) == 0)
  ------------------
  |  Branch (620:11): [True: 0, False: 0]
  ------------------
  621|      0|	return domain;
  622|      0|      domain = domain->next;
  623|      0|    }
  624|   202k|  return NULL;
  625|   202k|}
gmessages.c:g_log_domain_get_handler_L:
  676|   202k|{
  677|   202k|  if (domain && log_level)
  ------------------
  |  Branch (677:7): [True: 0, False: 202k]
  |  Branch (677:17): [True: 0, False: 0]
  ------------------
  678|      0|    {
  679|      0|      GLogHandler *handler;
  680|       |      
  681|      0|      handler = domain->handlers;
  682|      0|      while (handler)
  ------------------
  |  Branch (682:14): [True: 0, False: 0]
  ------------------
  683|      0|	{
  684|      0|	  if ((handler->log_level & log_level) == log_level)
  ------------------
  |  Branch (684:8): [True: 0, False: 0]
  ------------------
  685|      0|	    {
  686|      0|	      *data = handler->data;
  687|      0|	      return handler->log_func;
  688|      0|	    }
  689|      0|	  handler = handler->next;
  690|      0|	}
  691|      0|    }
  692|       |
  693|   202k|  *data = default_log_data;
  694|   202k|  return default_log_func;
  695|   202k|}
gmessages.c:log_level_to_priority:
 1460|   202k|{
 1461|   202k|  if (log_level & G_LOG_LEVEL_ERROR)
  ------------------
  |  Branch (1461:7): [True: 0, False: 202k]
  ------------------
 1462|      0|    return "3";
 1463|   202k|  else if (log_level & G_LOG_LEVEL_CRITICAL)
  ------------------
  |  Branch (1463:12): [True: 0, False: 202k]
  ------------------
 1464|      0|    return "4";
 1465|   202k|  else if (log_level & G_LOG_LEVEL_WARNING)
  ------------------
  |  Branch (1465:12): [True: 0, False: 202k]
  ------------------
 1466|      0|    return "4";
 1467|   202k|  else if (log_level & G_LOG_LEVEL_MESSAGE)
  ------------------
  |  Branch (1467:12): [True: 0, False: 202k]
  ------------------
 1468|      0|    return "5";
 1469|   202k|  else if (log_level & G_LOG_LEVEL_INFO)
  ------------------
  |  Branch (1469:12): [True: 0, False: 202k]
  ------------------
 1470|      0|    return "6";
 1471|   202k|  else if (log_level & G_LOG_LEVEL_DEBUG)
  ------------------
  |  Branch (1471:12): [True: 202k, False: 0]
  ------------------
 1472|   202k|    return "7";
 1473|       |
 1474|       |  /* Default to LOG_NOTICE for custom log levels. */
 1475|      0|  return "5";
 1476|   202k|}
gmessages.c:should_drop_message:
 2636|   202k|{
 2637|       |  /* Disable debug message output unless specified in G_MESSAGES_DEBUG. */
 2638|   202k|  if (!(log_level & DEFAULT_LEVELS) && !(log_level >> G_LOG_LEVEL_USER_SHIFT))
  ------------------
  |  | 1157|   202k|#define DEFAULT_LEVELS (G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING | G_LOG_LEVEL_MESSAGE)
  ------------------
                if (!(log_level & DEFAULT_LEVELS) && !(log_level >> G_LOG_LEVEL_USER_SHIFT))
  ------------------
  |  |   49|   202k|#define G_LOG_LEVEL_USER_SHIFT  (8)
  ------------------
  |  Branch (2638:7): [True: 202k, False: 0]
  |  Branch (2638:40): [True: 202k, False: 0]
  ------------------
 2639|   202k|    {
 2640|   202k|      const gchar *domains;
 2641|   202k|      gsize i;
 2642|       |
 2643|   202k|      domains = g_getenv ("G_MESSAGES_DEBUG");
 2644|       |
 2645|   202k|      if ((log_level & INFO_LEVELS) == 0 ||
  ------------------
  |  | 1159|   202k|#define INFO_LEVELS (G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG)
  ------------------
  |  Branch (2645:11): [True: 0, False: 202k]
  ------------------
 2646|   202k|          domains == NULL)
  ------------------
  |  Branch (2646:11): [True: 202k, False: 0]
  ------------------
 2647|   202k|        return TRUE;
  ------------------
  |  |  818|   202k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   202k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2648|       |
 2649|      0|      if (log_domain == NULL)
  ------------------
  |  Branch (2649:11): [True: 0, False: 0]
  ------------------
 2650|      0|        {
 2651|      0|          for (i = 0; i < n_fields; i++)
  ------------------
  |  Branch (2651:23): [True: 0, False: 0]
  ------------------
 2652|      0|            {
 2653|      0|              if (g_strcmp0 (fields[i].key, "GLIB_DOMAIN") == 0)
  ------------------
  |  Branch (2653:19): [True: 0, False: 0]
  ------------------
 2654|      0|                {
 2655|      0|                  log_domain = fields[i].value;
 2656|      0|                  break;
 2657|      0|                }
 2658|      0|            }
 2659|      0|        }
 2660|       |
 2661|      0|      if (strcmp (domains, "all") != 0 &&
  ------------------
  |  Branch (2661:11): [True: 0, False: 0]
  ------------------
 2662|      0|          (log_domain == NULL || !strstr (domains, log_domain)))
  ------------------
  |  Branch (2662:12): [True: 0, False: 0]
  |  Branch (2662:34): [True: 0, False: 0]
  ------------------
 2663|      0|        return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2664|      0|    }
 2665|       |
 2666|      0|  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 2667|   202k|}

_g_gnulib_printf_fetchargs:
   39|   205k|{
   40|   205k|  size_t i;
   41|   205k|  argument *ap;
   42|       |
   43|   597k|  for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++)
  ------------------
  |  Branch (43:32): [True: 392k, False: 205k]
  ------------------
   44|   392k|    switch (ap->type)
   45|   392k|      {
   46|      0|      case TYPE_SCHAR:
  ------------------
  |  Branch (46:7): [True: 0, False: 392k]
  ------------------
   47|      0|        ap->a.a_schar = va_arg (args, /*signed char*/ int);
   48|      0|        break;
   49|      0|      case TYPE_UCHAR:
  ------------------
  |  Branch (49:7): [True: 0, False: 392k]
  ------------------
   50|      0|        ap->a.a_uchar = va_arg (args, /*unsigned char*/ int);
   51|      0|        break;
   52|      0|      case TYPE_SHORT:
  ------------------
  |  Branch (52:7): [True: 0, False: 392k]
  ------------------
   53|      0|        ap->a.a_short = va_arg (args, /*short*/ int);
   54|      0|        break;
   55|      0|      case TYPE_USHORT:
  ------------------
  |  Branch (55:7): [True: 0, False: 392k]
  ------------------
   56|      0|        ap->a.a_ushort = va_arg (args, /*unsigned short*/ int);
   57|      0|        break;
   58|      0|      case TYPE_INT:
  ------------------
  |  Branch (58:7): [True: 0, False: 392k]
  ------------------
   59|      0|        ap->a.a_int = va_arg (args, int);
   60|      0|        break;
   61|   204k|      case TYPE_UINT:
  ------------------
  |  Branch (61:7): [True: 204k, False: 187k]
  ------------------
   62|   204k|        ap->a.a_uint = va_arg (args, unsigned int);
   63|   204k|        break;
   64|      0|      case TYPE_LONGINT:
  ------------------
  |  Branch (64:7): [True: 0, False: 392k]
  ------------------
   65|      0|        ap->a.a_longint = va_arg (args, long int);
   66|      0|        break;
   67|      0|      case TYPE_ULONGINT:
  ------------------
  |  Branch (67:7): [True: 0, False: 392k]
  ------------------
   68|      0|        ap->a.a_ulongint = va_arg (args, unsigned long int);
   69|      0|        break;
   70|      0|#if HAVE_LONG_LONG
   71|      0|      case TYPE_LONGLONGINT:
  ------------------
  |  Branch (71:7): [True: 0, False: 392k]
  ------------------
   72|      0|        ap->a.a_longlongint = va_arg (args, long long int);
   73|      0|        break;
   74|      0|      case TYPE_ULONGLONGINT:
  ------------------
  |  Branch (74:7): [True: 0, False: 392k]
  ------------------
   75|      0|        ap->a.a_ulonglongint = va_arg (args, unsigned long long int);
   76|      0|        break;
   77|      0|#endif
   78|      0|      case TYPE_DOUBLE:
  ------------------
  |  Branch (78:7): [True: 0, False: 392k]
  ------------------
   79|      0|        ap->a.a_double = va_arg (args, double);
   80|      0|        break;
   81|      0|      case TYPE_LONGDOUBLE:
  ------------------
  |  Branch (81:7): [True: 0, False: 392k]
  ------------------
   82|      0|        ap->a.a_longdouble = va_arg (args, long double);
   83|      0|        break;
   84|      0|      case TYPE_CHAR:
  ------------------
  |  Branch (84:7): [True: 0, False: 392k]
  ------------------
   85|      0|        ap->a.a_char = va_arg (args, int);
   86|      0|        break;
   87|      0|#if HAVE_WINT_T
   88|      0|      case TYPE_WIDE_CHAR:
  ------------------
  |  Branch (88:7): [True: 0, False: 392k]
  ------------------
   89|       |        /* Although ISO C 99 7.24.1.(2) says that wint_t is "unchanged by
   90|       |           default argument promotions", this is not the case in mingw32,
   91|       |           where wint_t is 'unsigned short'.  */
   92|      0|        ap->a.a_wide_char =
   93|      0|          (sizeof (wint_t) < sizeof (int)
  ------------------
  |  Branch (93:12): [Folded, False: 0]
  ------------------
   94|      0|           ? (wint_t) va_arg (args, int)
   95|      0|           : va_arg (args, wint_t));
   96|      0|        break;
   97|      0|#endif
   98|   187k|      case TYPE_STRING:
  ------------------
  |  Branch (98:7): [True: 187k, False: 204k]
  ------------------
   99|   187k|        ap->a.a_string = va_arg (args, const char *);
  100|       |        /* A null pointer is an invalid argument for "%s", but in practice
  101|       |           it occurs quite frequently in printf statements that produce
  102|       |           debug output.  Use a fallback in this case.  */
  103|   187k|        if (ap->a.a_string == NULL)
  ------------------
  |  Branch (103:13): [True: 0, False: 187k]
  ------------------
  104|      0|          ap->a.a_string = "(NULL)";
  105|   187k|        break;
  106|      0|#if HAVE_WCHAR_T
  107|      0|      case TYPE_WIDE_STRING:
  ------------------
  |  Branch (107:7): [True: 0, False: 392k]
  ------------------
  108|      0|        ap->a.a_wide_string = va_arg (args, const wchar_t *);
  109|       |        /* A null pointer is an invalid argument for "%ls", but in practice
  110|       |           it occurs quite frequently in printf statements that produce
  111|       |           debug output.  Use a fallback in this case.  */
  112|      0|        if (ap->a.a_wide_string == NULL)
  ------------------
  |  Branch (112:13): [True: 0, False: 0]
  ------------------
  113|      0|          {
  114|      0|            static const wchar_t wide_null_string[] =
  115|      0|              {
  116|      0|                (wchar_t)'(',
  117|      0|                (wchar_t)'N', (wchar_t)'U', (wchar_t)'L', (wchar_t)'L',
  118|      0|                (wchar_t)')',
  119|      0|                (wchar_t)0
  120|      0|              };
  121|      0|            ap->a.a_wide_string = wide_null_string;
  122|      0|          }
  123|      0|        break;
  124|      0|#endif
  125|      0|      case TYPE_POINTER:
  ------------------
  |  Branch (125:7): [True: 0, False: 392k]
  ------------------
  126|      0|        ap->a.a_pointer = va_arg (args, void *);
  127|      0|        break;
  128|      0|      case TYPE_COUNT_SCHAR_POINTER:
  ------------------
  |  Branch (128:7): [True: 0, False: 392k]
  ------------------
  129|      0|        ap->a.a_count_schar_pointer = va_arg (args, signed char *);
  130|      0|        break;
  131|      0|      case TYPE_COUNT_SHORT_POINTER:
  ------------------
  |  Branch (131:7): [True: 0, False: 392k]
  ------------------
  132|      0|        ap->a.a_count_short_pointer = va_arg (args, short *);
  133|      0|        break;
  134|      0|      case TYPE_COUNT_INT_POINTER:
  ------------------
  |  Branch (134:7): [True: 0, False: 392k]
  ------------------
  135|      0|        ap->a.a_count_int_pointer = va_arg (args, int *);
  136|      0|        break;
  137|      0|      case TYPE_COUNT_LONGINT_POINTER:
  ------------------
  |  Branch (137:7): [True: 0, False: 392k]
  ------------------
  138|      0|        ap->a.a_count_longint_pointer = va_arg (args, long int *);
  139|      0|        break;
  140|      0|#if HAVE_LONG_LONG
  141|      0|      case TYPE_COUNT_LONGLONGINT_POINTER:
  ------------------
  |  Branch (141:7): [True: 0, False: 392k]
  ------------------
  142|      0|        ap->a.a_count_longlongint_pointer = va_arg (args, long long int *);
  143|      0|        break;
  144|      0|#endif
  145|       |#if ENABLE_UNISTDIO
  146|       |      /* The unistdio extensions.  */
  147|       |      case TYPE_U8_STRING:
  148|       |        ap->a.a_u8_string = va_arg (args, const uint8_t *);
  149|       |        /* A null pointer is an invalid argument for "%U", but in practice
  150|       |           it occurs quite frequently in printf statements that produce
  151|       |           debug output.  Use a fallback in this case.  */
  152|       |        if (ap->a.a_u8_string == NULL)
  153|       |          {
  154|       |            static const uint8_t u8_null_string[] =
  155|       |              { '(', 'N', 'U', 'L', 'L', ')', 0 };
  156|       |            ap->a.a_u8_string = u8_null_string;
  157|       |          }
  158|       |        break;
  159|       |      case TYPE_U16_STRING:
  160|       |        ap->a.a_u16_string = va_arg (args, const uint16_t *);
  161|       |        /* A null pointer is an invalid argument for "%lU", but in practice
  162|       |           it occurs quite frequently in printf statements that produce
  163|       |           debug output.  Use a fallback in this case.  */
  164|       |        if (ap->a.a_u16_string == NULL)
  165|       |          {
  166|       |            static const uint16_t u16_null_string[] =
  167|       |              { '(', 'N', 'U', 'L', 'L', ')', 0 };
  168|       |            ap->a.a_u16_string = u16_null_string;
  169|       |          }
  170|       |        break;
  171|       |      case TYPE_U32_STRING:
  172|       |        ap->a.a_u32_string = va_arg (args, const uint32_t *);
  173|       |        /* A null pointer is an invalid argument for "%llU", but in practice
  174|       |           it occurs quite frequently in printf statements that produce
  175|       |           debug output.  Use a fallback in this case.  */
  176|       |        if (ap->a.a_u32_string == NULL)
  177|       |          {
  178|       |            static const uint32_t u32_null_string[] =
  179|       |              { '(', 'N', 'U', 'L', 'L', ')', 0 };
  180|       |            ap->a.a_u32_string = u32_null_string;
  181|       |          }
  182|       |        break;
  183|       |#endif
  184|      0|      default:
  ------------------
  |  Branch (184:7): [True: 0, False: 392k]
  ------------------
  185|       |        /* Unknown type.  */
  186|      0|        return -1;
  187|   392k|      }
  188|   205k|  return 0;
  189|   205k|}

_g_gnulib_printf_parse:
   86|   205k|{
   87|   205k|  const CHAR_T *cp = format;    /* pointer into format */
   88|   205k|  size_t arg_posn = 0;          /* number of regular arguments consumed */
   89|   205k|  size_t d_allocated;           /* allocated elements of d->dir */
   90|   205k|  size_t a_allocated;           /* allocated elements of a->arg */
   91|   205k|  size_t max_width_length = 0;
   92|   205k|  size_t max_precision_length = 0;
   93|       |
   94|   205k|  d->count = 0;
   95|   205k|  d_allocated = N_DIRECT_ALLOC_DIRECTIVES;
  ------------------
  |  |   50|   205k|#define N_DIRECT_ALLOC_DIRECTIVES 7
  ------------------
   96|   205k|  d->dir = d->direct_alloc_dir;
   97|       |
   98|   205k|  a->count = 0;
   99|   205k|  a_allocated = N_DIRECT_ALLOC_ARGUMENTS;
  ------------------
  |  |  139|   205k|#define N_DIRECT_ALLOC_ARGUMENTS 7
  ------------------
  100|   205k|  a->arg = a->direct_alloc_arg;
  101|       |
  102|   205k|#define REGISTER_ARG(_index_,_type_) \
  103|   205k|  {                                                                     \
  104|   205k|    size_t n = (_index_);                                               \
  105|   205k|    if (n >= a_allocated)                                               \
  106|   205k|      {                                                                 \
  107|   205k|        size_t memory_size;                                             \
  108|   205k|        argument *memory;                                               \
  109|   205k|                                                                        \
  110|   205k|        a_allocated = xtimes (a_allocated, 2);                          \
  111|   205k|        if (a_allocated <= n)                                           \
  112|   205k|          a_allocated = xsum (n, 1);                                    \
  113|   205k|        memory_size = xtimes (a_allocated, sizeof (argument));          \
  114|   205k|        if (size_overflow_p (memory_size))                              \
  115|       |          /* Overflow, would lead to out of memory.  */                 \
  116|   205k|          goto out_of_memory;                                           \
  117|   205k|        memory = (argument *) (a->arg != a->direct_alloc_arg            \
  118|   205k|                               ? realloc (a->arg, memory_size)          \
  119|   205k|                               : malloc (memory_size));                 \
  120|   205k|        if (memory == NULL)                                             \
  121|       |          /* Out of memory.  */                                         \
  122|   205k|          goto out_of_memory;                                           \
  123|   205k|        if (a->arg == a->direct_alloc_arg)                              \
  124|   205k|          memcpy (memory, a->arg, a->count * sizeof (argument));        \
  125|   205k|        a->arg = memory;                                                \
  126|   205k|      }                                                                 \
  127|   205k|    while (a->count <= n)                                               \
  128|   205k|      a->arg[a->count++].type = TYPE_NONE;                              \
  129|   205k|    if (a->arg[n].type == TYPE_NONE)                                    \
  130|   205k|      a->arg[n].type = (_type_);                                        \
  131|   205k|    else if (a->arg[n].type != (_type_))                                \
  132|       |      /* Ambiguous type for positional argument.  */                    \
  133|   205k|      goto error;                                                       \
  134|   205k|  }
  135|       |
  136|  8.58M|  while (*cp != '\0')
  ------------------
  |  Branch (136:10): [True: 8.38M, False: 205k]
  ------------------
  137|  8.38M|    {
  138|  8.38M|      CHAR_T c = *cp++;
  ------------------
  |  |   44|  8.38M|# define CHAR_T char
  ------------------
  139|  8.38M|      if (c == '%')
  ------------------
  |  Branch (139:11): [True: 392k, False: 7.99M]
  ------------------
  140|   392k|        {
  141|   392k|          size_t arg_index = ARG_NONE;
  ------------------
  |  |   44|   392k|#define ARG_NONE        (~(size_t)0)
  ------------------
  142|   392k|          DIRECTIVE *dp = &d->dir[d->count]; /* pointer to next directive */
  ------------------
  |  |   45|   392k|# define DIRECTIVE char_directive
  ------------------
  143|       |
  144|       |          /* Initialize the next directive.  */
  145|   392k|          dp->dir_start = cp - 1;
  146|   392k|          dp->flags = 0;
  147|   392k|          dp->width_start = NULL;
  148|   392k|          dp->width_end = NULL;
  149|   392k|          dp->width_arg_index = ARG_NONE;
  ------------------
  |  |   44|   392k|#define ARG_NONE        (~(size_t)0)
  ------------------
  150|   392k|          dp->precision_start = NULL;
  151|   392k|          dp->precision_end = NULL;
  152|   392k|          dp->precision_arg_index = ARG_NONE;
  ------------------
  |  |   44|   392k|#define ARG_NONE        (~(size_t)0)
  ------------------
  153|   392k|          dp->arg_index = ARG_NONE;
  ------------------
  |  |   44|   392k|#define ARG_NONE        (~(size_t)0)
  ------------------
  154|       |
  155|       |          /* Test for positional argument.  */
  156|   392k|          if (*cp >= '0' && *cp <= '9')
  ------------------
  |  Branch (156:15): [True: 392k, False: 0]
  |  Branch (156:29): [True: 3.01k, False: 389k]
  ------------------
  157|  3.01k|            {
  158|  3.01k|              const CHAR_T *np;
  159|       |
  160|  9.03k|              for (np = cp; *np >= '0' && *np <= '9'; np++)
  ------------------
  |  Branch (160:29): [True: 9.03k, False: 0]
  |  Branch (160:43): [True: 6.02k, False: 3.01k]
  ------------------
  161|  6.02k|                ;
  162|  3.01k|              if (*np == '$')
  ------------------
  |  Branch (162:19): [True: 0, False: 3.01k]
  ------------------
  163|      0|                {
  164|      0|                  size_t n = 0;
  165|       |
  166|      0|                  for (np = cp; *np >= '0' && *np <= '9'; np++)
  ------------------
  |  Branch (166:33): [True: 0, False: 0]
  |  Branch (166:47): [True: 0, False: 0]
  ------------------
  167|      0|                    n = xsum (xtimes (n, 10), *np - '0');
  ------------------
  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  168|      0|                  if (n == 0)
  ------------------
  |  Branch (168:23): [True: 0, False: 0]
  ------------------
  169|       |                    /* Positional argument 0.  */
  170|      0|                    goto error;
  171|      0|                  if (size_overflow_p (n))
  ------------------
  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  172|       |                    /* n too large, would lead to out of memory later.  */
  173|      0|                    goto error;
  174|      0|                  arg_index = n - 1;
  175|      0|                  cp = np + 1;
  176|      0|                }
  177|  3.01k|            }
  178|       |
  179|       |          /* Read the flags.  */
  180|   392k|          for (;;)
  181|   395k|            {
  182|   395k|              if (*cp == '\'')
  ------------------
  |  Branch (182:19): [True: 0, False: 395k]
  ------------------
  183|      0|                {
  184|      0|                  dp->flags |= FLAG_GROUP;
  ------------------
  |  |   33|      0|#define FLAG_GROUP       1      /* ' flag */
  ------------------
  185|      0|                  cp++;
  186|      0|                }
  187|   395k|              else if (*cp == '-')
  ------------------
  |  Branch (187:24): [True: 0, False: 395k]
  ------------------
  188|      0|                {
  189|      0|                  dp->flags |= FLAG_LEFT;
  ------------------
  |  |   34|      0|#define FLAG_LEFT        2      /* - flag */
  ------------------
  190|      0|                  cp++;
  191|      0|                }
  192|   395k|              else if (*cp == '+')
  ------------------
  |  Branch (192:24): [True: 0, False: 395k]
  ------------------
  193|      0|                {
  194|      0|                  dp->flags |= FLAG_SHOWSIGN;
  ------------------
  |  |   35|      0|#define FLAG_SHOWSIGN    4      /* + flag */
  ------------------
  195|      0|                  cp++;
  196|      0|                }
  197|   395k|              else if (*cp == ' ')
  ------------------
  |  Branch (197:24): [True: 0, False: 395k]
  ------------------
  198|      0|                {
  199|      0|                  dp->flags |= FLAG_SPACE;
  ------------------
  |  |   36|      0|#define FLAG_SPACE       8      /* space flag */
  ------------------
  200|      0|                  cp++;
  201|      0|                }
  202|   395k|              else if (*cp == '#')
  ------------------
  |  Branch (202:24): [True: 0, False: 395k]
  ------------------
  203|      0|                {
  204|      0|                  dp->flags |= FLAG_ALT;
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  205|      0|                  cp++;
  206|      0|                }
  207|   395k|              else if (*cp == '0')
  ------------------
  |  Branch (207:24): [True: 3.01k, False: 392k]
  ------------------
  208|  3.01k|                {
  209|  3.01k|                  dp->flags |= FLAG_ZERO;
  ------------------
  |  |   38|  3.01k|#define FLAG_ZERO       32
  ------------------
  210|  3.01k|                  cp++;
  211|  3.01k|                }
  212|   392k|#if __GLIBC__ >= 2 && !defined __UCLIBC__
  213|   392k|              else if (*cp == 'I')
  ------------------
  |  Branch (213:24): [True: 0, False: 392k]
  ------------------
  214|      0|                {
  215|      0|                  dp->flags |= FLAG_LOCALIZED;
  ------------------
  |  |   40|      0|# define FLAG_LOCALIZED 64      /* I flag, uses localized digits */
  ------------------
  216|      0|                  cp++;
  217|      0|                }
  218|   392k|#endif
  219|   392k|              else
  220|   392k|                break;
  221|   395k|            }
  222|       |
  223|       |          /* Parse the field width.  */
  224|   392k|          if (*cp == '*')
  ------------------
  |  Branch (224:15): [True: 0, False: 392k]
  ------------------
  225|      0|            {
  226|      0|              dp->width_start = cp;
  227|      0|              cp++;
  228|      0|              dp->width_end = cp;
  229|      0|              if (max_width_length < 1)
  ------------------
  |  Branch (229:19): [True: 0, False: 0]
  ------------------
  230|      0|                max_width_length = 1;
  231|       |
  232|       |              /* Test for positional argument.  */
  233|      0|              if (*cp >= '0' && *cp <= '9')
  ------------------
  |  Branch (233:19): [True: 0, False: 0]
  |  Branch (233:33): [True: 0, False: 0]
  ------------------
  234|      0|                {
  235|      0|                  const CHAR_T *np;
  236|       |
  237|      0|                  for (np = cp; *np >= '0' && *np <= '9'; np++)
  ------------------
  |  Branch (237:33): [True: 0, False: 0]
  |  Branch (237:47): [True: 0, False: 0]
  ------------------
  238|      0|                    ;
  239|      0|                  if (*np == '$')
  ------------------
  |  Branch (239:23): [True: 0, False: 0]
  ------------------
  240|      0|                    {
  241|      0|                      size_t n = 0;
  242|       |
  243|      0|                      for (np = cp; *np >= '0' && *np <= '9'; np++)
  ------------------
  |  Branch (243:37): [True: 0, False: 0]
  |  Branch (243:51): [True: 0, False: 0]
  ------------------
  244|      0|                        n = xsum (xtimes (n, 10), *np - '0');
  ------------------
  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  245|      0|                      if (n == 0)
  ------------------
  |  Branch (245:27): [True: 0, False: 0]
  ------------------
  246|       |                        /* Positional argument 0.  */
  247|      0|                        goto error;
  248|      0|                      if (size_overflow_p (n))
  ------------------
  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  249|       |                        /* n too large, would lead to out of memory later.  */
  250|      0|                        goto error;
  251|      0|                      dp->width_arg_index = n - 1;
  252|      0|                      cp = np + 1;
  253|      0|                    }
  254|      0|                }
  255|      0|              if (dp->width_arg_index == ARG_NONE)
  ------------------
  |  |   44|      0|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (255:19): [True: 0, False: 0]
  ------------------
  256|      0|                {
  257|      0|                  dp->width_arg_index = arg_posn++;
  258|      0|                  if (dp->width_arg_index == ARG_NONE)
  ------------------
  |  |   44|      0|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (258:23): [True: 0, False: 0]
  ------------------
  259|       |                    /* arg_posn wrapped around.  */
  260|      0|                    goto error;
  261|      0|                }
  262|      0|              REGISTER_ARG (dp->width_arg_index, TYPE_INT);
  ------------------
  |  |  103|      0|  {                                                                     \
  |  |  104|      0|    size_t n = (_index_);                                               \
  |  |  105|      0|    if (n >= a_allocated)                                               \
  |  |  ------------------
  |  |  |  Branch (105:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  106|      0|      {                                                                 \
  |  |  107|      0|        size_t memory_size;                                             \
  |  |  108|      0|        argument *memory;                                               \
  |  |  109|      0|                                                                        \
  |  |  110|      0|        a_allocated = xtimes (a_allocated, 2);                          \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  111|      0|        if (a_allocated <= n)                                           \
  |  |  ------------------
  |  |  |  Branch (111:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  112|      0|          a_allocated = xsum (n, 1);                                    \
  |  |  113|      0|        memory_size = xtimes (a_allocated, sizeof (argument));          \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  114|      0|        if (size_overflow_p (memory_size))                              \
  |  |  ------------------
  |  |  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  115|      0|          /* Overflow, would lead to out of memory.  */                 \
  |  |  116|      0|          goto out_of_memory;                                           \
  |  |  117|      0|        memory = (argument *) (a->arg != a->direct_alloc_arg            \
  |  |  ------------------
  |  |  |  Branch (117:32): [True: 0, False: 0]
  |  |  ------------------
  |  |  118|      0|                               ? realloc (a->arg, memory_size)          \
  |  |  ------------------
  |  |  |  |   34|      0|#define realloc g_realloc
  |  |  ------------------
  |  |  119|      0|                               : malloc (memory_size));                 \
  |  |  ------------------
  |  |  |  |   33|      0|#define malloc  g_malloc
  |  |  ------------------
  |  |  120|      0|        if (memory == NULL)                                             \
  |  |  ------------------
  |  |  |  Branch (120:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  121|      0|          /* Out of memory.  */                                         \
  |  |  122|      0|          goto out_of_memory;                                           \
  |  |  123|      0|        if (a->arg == a->direct_alloc_arg)                              \
  |  |  ------------------
  |  |  |  Branch (123:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  124|      0|          memcpy (memory, a->arg, a->count * sizeof (argument));        \
  |  |  125|      0|        a->arg = memory;                                                \
  |  |  126|      0|      }                                                                 \
  |  |  127|      0|    while (a->count <= n)                                               \
  |  |  ------------------
  |  |  |  Branch (127:12): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|      a->arg[a->count++].type = TYPE_NONE;                              \
  |  |  129|      0|    if (a->arg[n].type == TYPE_NONE)                                    \
  |  |  ------------------
  |  |  |  Branch (129:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  130|      0|      a->arg[n].type = (_type_);                                        \
  |  |  131|      0|    else if (a->arg[n].type != (_type_))                                \
  |  |  ------------------
  |  |  |  Branch (131:14): [True: 0, False: 0]
  |  |  ------------------
  |  |  132|      0|      /* Ambiguous type for positional argument.  */                    \
  |  |  133|      0|      goto error;                                                       \
  |  |  134|      0|  }
  ------------------
  263|      0|            }
  264|   392k|          else if (*cp >= '0' && *cp <= '9')
  ------------------
  |  Branch (264:20): [True: 392k, False: 0]
  |  Branch (264:34): [True: 3.01k, False: 389k]
  ------------------
  265|  3.01k|            {
  266|  3.01k|              size_t width_length;
  267|       |
  268|  3.01k|              dp->width_start = cp;
  269|  6.02k|              for (; *cp >= '0' && *cp <= '9'; cp++)
  ------------------
  |  Branch (269:22): [True: 6.02k, False: 0]
  |  Branch (269:36): [True: 3.01k, False: 3.01k]
  ------------------
  270|  3.01k|                ;
  271|  3.01k|              dp->width_end = cp;
  272|  3.01k|              width_length = dp->width_end - dp->width_start;
  273|  3.01k|              if (max_width_length < width_length)
  ------------------
  |  Branch (273:19): [True: 2.83k, False: 176]
  ------------------
  274|  2.83k|                max_width_length = width_length;
  275|  3.01k|            }
  276|       |
  277|       |          /* Parse the precision.  */
  278|   392k|          if (*cp == '.')
  ------------------
  |  Branch (278:15): [True: 0, False: 392k]
  ------------------
  279|      0|            {
  280|      0|              cp++;
  281|      0|              if (*cp == '*')
  ------------------
  |  Branch (281:19): [True: 0, False: 0]
  ------------------
  282|      0|                {
  283|      0|                  dp->precision_start = cp - 1;
  284|      0|                  cp++;
  285|      0|                  dp->precision_end = cp;
  286|      0|                  if (max_precision_length < 2)
  ------------------
  |  Branch (286:23): [True: 0, False: 0]
  ------------------
  287|      0|                    max_precision_length = 2;
  288|       |
  289|       |                  /* Test for positional argument.  */
  290|      0|                  if (*cp >= '0' && *cp <= '9')
  ------------------
  |  Branch (290:23): [True: 0, False: 0]
  |  Branch (290:37): [True: 0, False: 0]
  ------------------
  291|      0|                    {
  292|      0|                      const CHAR_T *np;
  293|       |
  294|      0|                      for (np = cp; *np >= '0' && *np <= '9'; np++)
  ------------------
  |  Branch (294:37): [True: 0, False: 0]
  |  Branch (294:51): [True: 0, False: 0]
  ------------------
  295|      0|                        ;
  296|      0|                      if (*np == '$')
  ------------------
  |  Branch (296:27): [True: 0, False: 0]
  ------------------
  297|      0|                        {
  298|      0|                          size_t n = 0;
  299|       |
  300|      0|                          for (np = cp; *np >= '0' && *np <= '9'; np++)
  ------------------
  |  Branch (300:41): [True: 0, False: 0]
  |  Branch (300:55): [True: 0, False: 0]
  ------------------
  301|      0|                            n = xsum (xtimes (n, 10), *np - '0');
  ------------------
  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  302|      0|                          if (n == 0)
  ------------------
  |  Branch (302:31): [True: 0, False: 0]
  ------------------
  303|       |                            /* Positional argument 0.  */
  304|      0|                            goto error;
  305|      0|                          if (size_overflow_p (n))
  ------------------
  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  306|       |                            /* n too large, would lead to out of memory
  307|       |                               later.  */
  308|      0|                            goto error;
  309|      0|                          dp->precision_arg_index = n - 1;
  310|      0|                          cp = np + 1;
  311|      0|                        }
  312|      0|                    }
  313|      0|                  if (dp->precision_arg_index == ARG_NONE)
  ------------------
  |  |   44|      0|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (313:23): [True: 0, False: 0]
  ------------------
  314|      0|                    {
  315|      0|                      dp->precision_arg_index = arg_posn++;
  316|      0|                      if (dp->precision_arg_index == ARG_NONE)
  ------------------
  |  |   44|      0|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (316:27): [True: 0, False: 0]
  ------------------
  317|       |                        /* arg_posn wrapped around.  */
  318|      0|                        goto error;
  319|      0|                    }
  320|      0|                  REGISTER_ARG (dp->precision_arg_index, TYPE_INT);
  ------------------
  |  |  103|      0|  {                                                                     \
  |  |  104|      0|    size_t n = (_index_);                                               \
  |  |  105|      0|    if (n >= a_allocated)                                               \
  |  |  ------------------
  |  |  |  Branch (105:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  106|      0|      {                                                                 \
  |  |  107|      0|        size_t memory_size;                                             \
  |  |  108|      0|        argument *memory;                                               \
  |  |  109|      0|                                                                        \
  |  |  110|      0|        a_allocated = xtimes (a_allocated, 2);                          \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  111|      0|        if (a_allocated <= n)                                           \
  |  |  ------------------
  |  |  |  Branch (111:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  112|      0|          a_allocated = xsum (n, 1);                                    \
  |  |  113|      0|        memory_size = xtimes (a_allocated, sizeof (argument));          \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  114|      0|        if (size_overflow_p (memory_size))                              \
  |  |  ------------------
  |  |  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  115|      0|          /* Overflow, would lead to out of memory.  */                 \
  |  |  116|      0|          goto out_of_memory;                                           \
  |  |  117|      0|        memory = (argument *) (a->arg != a->direct_alloc_arg            \
  |  |  ------------------
  |  |  |  Branch (117:32): [True: 0, False: 0]
  |  |  ------------------
  |  |  118|      0|                               ? realloc (a->arg, memory_size)          \
  |  |  ------------------
  |  |  |  |   34|      0|#define realloc g_realloc
  |  |  ------------------
  |  |  119|      0|                               : malloc (memory_size));                 \
  |  |  ------------------
  |  |  |  |   33|      0|#define malloc  g_malloc
  |  |  ------------------
  |  |  120|      0|        if (memory == NULL)                                             \
  |  |  ------------------
  |  |  |  Branch (120:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  121|      0|          /* Out of memory.  */                                         \
  |  |  122|      0|          goto out_of_memory;                                           \
  |  |  123|      0|        if (a->arg == a->direct_alloc_arg)                              \
  |  |  ------------------
  |  |  |  Branch (123:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  124|      0|          memcpy (memory, a->arg, a->count * sizeof (argument));        \
  |  |  125|      0|        a->arg = memory;                                                \
  |  |  126|      0|      }                                                                 \
  |  |  127|      0|    while (a->count <= n)                                               \
  |  |  ------------------
  |  |  |  Branch (127:12): [True: 0, False: 0]
  |  |  ------------------
  |  |  128|      0|      a->arg[a->count++].type = TYPE_NONE;                              \
  |  |  129|      0|    if (a->arg[n].type == TYPE_NONE)                                    \
  |  |  ------------------
  |  |  |  Branch (129:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  130|      0|      a->arg[n].type = (_type_);                                        \
  |  |  131|      0|    else if (a->arg[n].type != (_type_))                                \
  |  |  ------------------
  |  |  |  Branch (131:14): [True: 0, False: 0]
  |  |  ------------------
  |  |  132|      0|      /* Ambiguous type for positional argument.  */                    \
  |  |  133|      0|      goto error;                                                       \
  |  |  134|      0|  }
  ------------------
  321|      0|                }
  322|      0|              else
  323|      0|                {
  324|      0|                  size_t precision_length;
  325|       |
  326|      0|                  dp->precision_start = cp - 1;
  327|      0|                  for (; *cp >= '0' && *cp <= '9'; cp++)
  ------------------
  |  Branch (327:26): [True: 0, False: 0]
  |  Branch (327:40): [True: 0, False: 0]
  ------------------
  328|      0|                    ;
  329|      0|                  dp->precision_end = cp;
  330|      0|                  precision_length = dp->precision_end - dp->precision_start;
  331|      0|                  if (max_precision_length < precision_length)
  ------------------
  |  Branch (331:23): [True: 0, False: 0]
  ------------------
  332|      0|                    max_precision_length = precision_length;
  333|      0|                }
  334|      0|            }
  335|       |
  336|   392k|          {
  337|   392k|            arg_type type;
  338|       |
  339|       |            /* Parse argument type/size specifiers.  */
  340|   392k|            {
  341|   392k|              int flags = 0;
  342|       |
  343|   392k|              for (;;)
  344|   392k|                {
  345|   392k|                  if (*cp == 'h')
  ------------------
  |  Branch (345:23): [True: 0, False: 392k]
  ------------------
  346|      0|                    {
  347|      0|                      flags |= (1 << (flags & 1));
  348|      0|                      cp++;
  349|      0|                    }
  350|   392k|                  else if (*cp == 'L')
  ------------------
  |  Branch (350:28): [True: 0, False: 392k]
  ------------------
  351|      0|                    {
  352|      0|                      flags |= 4;
  353|      0|                      cp++;
  354|      0|                    }
  355|   392k|                  else if (*cp == 'l')
  ------------------
  |  Branch (355:28): [True: 0, False: 392k]
  ------------------
  356|      0|                    {
  357|      0|                      flags += 8;
  358|      0|                      cp++;
  359|      0|                    }
  360|   392k|                  else if (*cp == 'j')
  ------------------
  |  Branch (360:28): [True: 0, False: 392k]
  ------------------
  361|      0|                    {
  362|      0|                      if (sizeof (intmax_t) > sizeof (long))
  ------------------
  |  Branch (362:27): [Folded, False: 0]
  ------------------
  363|      0|                        {
  364|       |                          /* intmax_t = long long */
  365|      0|                          flags += 16;
  366|      0|                        }
  367|      0|                      else if (sizeof (intmax_t) > sizeof (int))
  ------------------
  |  Branch (367:32): [True: 0, Folded]
  ------------------
  368|      0|                        {
  369|       |                          /* intmax_t = long */
  370|      0|                          flags += 8;
  371|      0|                        }
  372|      0|                      cp++;
  373|      0|                    }
  374|   392k|                  else if (*cp == 'z' || *cp == 'Z')
  ------------------
  |  Branch (374:28): [True: 0, False: 392k]
  |  Branch (374:42): [True: 0, False: 392k]
  ------------------
  375|      0|                    {
  376|       |                      /* 'z' is standardized in ISO C 99, but glibc uses 'Z'
  377|       |                         because the warning facility in gcc-2.95.2 understands
  378|       |                         only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784).  */
  379|      0|                      if (sizeof (size_t) > sizeof (long))
  ------------------
  |  Branch (379:27): [Folded, False: 0]
  ------------------
  380|      0|                        {
  381|       |                          /* size_t = long long */
  382|      0|                          flags += 16;
  383|      0|                        }
  384|      0|                      else if (sizeof (size_t) > sizeof (int))
  ------------------
  |  Branch (384:32): [True: 0, Folded]
  ------------------
  385|      0|                        {
  386|       |                          /* size_t = long */
  387|      0|                          flags += 8;
  388|      0|                        }
  389|      0|                      cp++;
  390|      0|                    }
  391|   392k|                  else if (*cp == 't')
  ------------------
  |  Branch (391:28): [True: 0, False: 392k]
  ------------------
  392|      0|                    {
  393|      0|                      if (sizeof (ptrdiff_t) > sizeof (long))
  ------------------
  |  Branch (393:27): [Folded, False: 0]
  ------------------
  394|      0|                        {
  395|       |                          /* ptrdiff_t = long long */
  396|      0|                          flags += 16;
  397|      0|                        }
  398|      0|                      else if (sizeof (ptrdiff_t) > sizeof (int))
  ------------------
  |  Branch (398:32): [True: 0, Folded]
  ------------------
  399|      0|                        {
  400|       |                          /* ptrdiff_t = long */
  401|      0|                          flags += 8;
  402|      0|                        }
  403|      0|                      cp++;
  404|      0|                    }
  405|       |#if defined __APPLE__ && defined __MACH__
  406|       |                  /* On Mac OS X 10.3, PRIdMAX is defined as "qd".
  407|       |                     We cannot change it to "lld" because PRIdMAX must also
  408|       |                     be understood by the system's printf routines.  */
  409|       |                  else if (*cp == 'q')
  410|       |                    {
  411|       |                      if (64 / 8 > sizeof (long))
  412|       |                        {
  413|       |                          /* int64_t = long long */
  414|       |                          flags += 16;
  415|       |                        }
  416|       |                      else
  417|       |                        {
  418|       |                          /* int64_t = long */
  419|       |                          flags += 8;
  420|       |                        }
  421|       |                      cp++;
  422|       |                    }
  423|       |#endif
  424|       |#if defined _WIN32 && ! defined __CYGWIN__
  425|       |                  /* On native Windows, PRIdMAX is defined as "I64d".
  426|       |                     We cannot change it to "lld" because PRIdMAX must also
  427|       |                     be understood by the system's printf routines.  */
  428|       |                  else if (*cp == 'I' && cp[1] == '6' && cp[2] == '4')
  429|       |                    {
  430|       |                      if (64 / 8 > sizeof (long))
  431|       |                        {
  432|       |                          /* __int64 = long long */
  433|       |                          flags += 16;
  434|       |                        }
  435|       |                      else
  436|       |                        {
  437|       |                          /* __int64 = long */
  438|       |                          flags += 8;
  439|       |                        }
  440|       |                      cp += 3;
  441|       |                    }
  442|       |#endif
  443|   392k|                  else
  444|   392k|                    break;
  445|   392k|                }
  446|       |
  447|       |              /* Read the conversion character.  */
  448|   392k|              c = *cp++;
  449|   392k|              switch (c)
  450|   392k|                {
  451|      0|                case 'd': case 'i':
  ------------------
  |  Branch (451:17): [True: 0, False: 392k]
  |  Branch (451:27): [True: 0, False: 392k]
  ------------------
  452|      0|#if HAVE_LONG_LONG
  453|       |                  /* If 'long long' exists and is larger than 'long':  */
  454|      0|                  if (flags >= 16 || (flags & 4))
  ------------------
  |  Branch (454:23): [True: 0, False: 0]
  |  Branch (454:38): [True: 0, False: 0]
  ------------------
  455|      0|                    type = TYPE_LONGLONGINT;
  456|      0|                  else
  457|      0|#endif
  458|       |                  /* If 'long long' exists and is the same as 'long', we parse
  459|       |                     "lld" into TYPE_LONGINT.  */
  460|      0|                  if (flags >= 8)
  ------------------
  |  Branch (460:23): [True: 0, False: 0]
  ------------------
  461|      0|                    type = TYPE_LONGINT;
  462|      0|                  else if (flags & 2)
  ------------------
  |  Branch (462:28): [True: 0, False: 0]
  ------------------
  463|      0|                    type = TYPE_SCHAR;
  464|      0|                  else if (flags & 1)
  ------------------
  |  Branch (464:28): [True: 0, False: 0]
  ------------------
  465|      0|                    type = TYPE_SHORT;
  466|      0|                  else
  467|      0|                    type = TYPE_INT;
  468|      0|                  break;
  469|   204k|                case 'o': case 'u': case 'x': case 'X':
  ------------------
  |  Branch (469:17): [True: 0, False: 392k]
  |  Branch (469:27): [True: 0, False: 392k]
  |  Branch (469:37): [True: 202k, False: 190k]
  |  Branch (469:47): [True: 2.74k, False: 389k]
  ------------------
  470|   204k|#if HAVE_LONG_LONG
  471|       |                  /* If 'long long' exists and is larger than 'long':  */
  472|   204k|                  if (flags >= 16 || (flags & 4))
  ------------------
  |  Branch (472:23): [True: 0, False: 204k]
  |  Branch (472:38): [True: 0, False: 204k]
  ------------------
  473|      0|                    type = TYPE_ULONGLONGINT;
  474|   204k|                  else
  475|   204k|#endif
  476|       |                  /* If 'unsigned long long' exists and is the same as
  477|       |                     'unsigned long', we parse "llu" into TYPE_ULONGINT.  */
  478|   204k|                  if (flags >= 8)
  ------------------
  |  Branch (478:23): [True: 0, False: 204k]
  ------------------
  479|      0|                    type = TYPE_ULONGINT;
  480|   204k|                  else if (flags & 2)
  ------------------
  |  Branch (480:28): [True: 0, False: 204k]
  ------------------
  481|      0|                    type = TYPE_UCHAR;
  482|   204k|                  else if (flags & 1)
  ------------------
  |  Branch (482:28): [True: 0, False: 204k]
  ------------------
  483|      0|                    type = TYPE_USHORT;
  484|   204k|                  else
  485|   204k|                    type = TYPE_UINT;
  486|   204k|                  break;
  487|      0|                case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
  ------------------
  |  Branch (487:17): [True: 0, False: 392k]
  |  Branch (487:27): [True: 0, False: 392k]
  |  Branch (487:37): [True: 0, False: 392k]
  |  Branch (487:47): [True: 0, False: 392k]
  |  Branch (487:57): [True: 0, False: 392k]
  |  Branch (487:67): [True: 0, False: 392k]
  ------------------
  488|      0|                case 'a': case 'A':
  ------------------
  |  Branch (488:17): [True: 0, False: 392k]
  |  Branch (488:27): [True: 0, False: 392k]
  ------------------
  489|      0|                  if (flags >= 16 || (flags & 4))
  ------------------
  |  Branch (489:23): [True: 0, False: 0]
  |  Branch (489:38): [True: 0, False: 0]
  ------------------
  490|      0|                    type = TYPE_LONGDOUBLE;
  491|      0|                  else
  492|      0|                    type = TYPE_DOUBLE;
  493|      0|                  break;
  494|      0|                case 'c':
  ------------------
  |  Branch (494:17): [True: 0, False: 392k]
  ------------------
  495|      0|                  if (flags >= 8)
  ------------------
  |  Branch (495:23): [True: 0, False: 0]
  ------------------
  496|      0|#if HAVE_WINT_T
  497|      0|                    type = TYPE_WIDE_CHAR;
  498|       |#else
  499|       |                    goto error;
  500|       |#endif
  501|      0|                  else
  502|      0|                    type = TYPE_CHAR;
  503|      0|                  break;
  504|      0|#if HAVE_WINT_T
  505|      0|                case 'C':
  ------------------
  |  Branch (505:17): [True: 0, False: 392k]
  ------------------
  506|      0|                  type = TYPE_WIDE_CHAR;
  507|      0|                  c = 'c';
  508|      0|                  break;
  509|      0|#endif
  510|   187k|                case 's':
  ------------------
  |  Branch (510:17): [True: 187k, False: 204k]
  ------------------
  511|   187k|                  if (flags >= 8)
  ------------------
  |  Branch (511:23): [True: 0, False: 187k]
  ------------------
  512|      0|#if HAVE_WCHAR_T
  513|      0|                    type = TYPE_WIDE_STRING;
  514|       |#else
  515|       |                    goto error;
  516|       |#endif
  517|   187k|                  else
  518|   187k|                    type = TYPE_STRING;
  519|   187k|                  break;
  520|      0|#if HAVE_WCHAR_T
  521|      0|                case 'S':
  ------------------
  |  Branch (521:17): [True: 0, False: 392k]
  ------------------
  522|      0|                  type = TYPE_WIDE_STRING;
  523|      0|                  c = 's';
  524|      0|                  break;
  525|      0|#endif
  526|      0|                case 'p':
  ------------------
  |  Branch (526:17): [True: 0, False: 392k]
  ------------------
  527|      0|                  type = TYPE_POINTER;
  528|      0|                  break;
  529|      0|                case 'n':
  ------------------
  |  Branch (529:17): [True: 0, False: 392k]
  ------------------
  530|      0|#if HAVE_LONG_LONG
  531|       |                  /* If 'long long' exists and is larger than 'long':  */
  532|      0|                  if (flags >= 16 || (flags & 4))
  ------------------
  |  Branch (532:23): [True: 0, False: 0]
  |  Branch (532:38): [True: 0, False: 0]
  ------------------
  533|      0|                    type = TYPE_COUNT_LONGLONGINT_POINTER;
  534|      0|                  else
  535|      0|#endif
  536|       |                  /* If 'long long' exists and is the same as 'long', we parse
  537|       |                     "lln" into TYPE_COUNT_LONGINT_POINTER.  */
  538|      0|                  if (flags >= 8)
  ------------------
  |  Branch (538:23): [True: 0, False: 0]
  ------------------
  539|      0|                    type = TYPE_COUNT_LONGINT_POINTER;
  540|      0|                  else if (flags & 2)
  ------------------
  |  Branch (540:28): [True: 0, False: 0]
  ------------------
  541|      0|                    type = TYPE_COUNT_SCHAR_POINTER;
  542|      0|                  else if (flags & 1)
  ------------------
  |  Branch (542:28): [True: 0, False: 0]
  ------------------
  543|      0|                    type = TYPE_COUNT_SHORT_POINTER;
  544|      0|                  else
  545|      0|                    type = TYPE_COUNT_INT_POINTER;
  546|      0|                  break;
  547|       |#if ENABLE_UNISTDIO
  548|       |                /* The unistdio extensions.  */
  549|       |                case 'U':
  550|       |                  if (flags >= 16)
  551|       |                    type = TYPE_U32_STRING;
  552|       |                  else if (flags >= 8)
  553|       |                    type = TYPE_U16_STRING;
  554|       |                  else
  555|       |                    type = TYPE_U8_STRING;
  556|       |                  break;
  557|       |#endif
  558|      0|                case '%':
  ------------------
  |  Branch (558:17): [True: 0, False: 392k]
  ------------------
  559|      0|                  type = TYPE_NONE;
  560|      0|                  break;
  561|      0|                default:
  ------------------
  |  Branch (561:17): [True: 0, False: 392k]
  ------------------
  562|       |                  /* Unknown conversion character.  */
  563|      0|                  goto error;
  564|   392k|                }
  565|   392k|            }
  566|       |
  567|   392k|            if (type != TYPE_NONE)
  ------------------
  |  Branch (567:17): [True: 392k, False: 0]
  ------------------
  568|   392k|              {
  569|   392k|                dp->arg_index = arg_index;
  570|   392k|                if (dp->arg_index == ARG_NONE)
  ------------------
  |  |   44|   392k|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (570:21): [True: 392k, False: 0]
  ------------------
  571|   392k|                  {
  572|   392k|                    dp->arg_index = arg_posn++;
  573|   392k|                    if (dp->arg_index == ARG_NONE)
  ------------------
  |  |   44|   392k|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (573:25): [True: 0, False: 392k]
  ------------------
  574|       |                      /* arg_posn wrapped around.  */
  575|      0|                      goto error;
  576|   392k|                  }
  577|   784k|                REGISTER_ARG (dp->arg_index, type);
  ------------------
  |  |  103|   392k|  {                                                                     \
  |  |  104|   392k|    size_t n = (_index_);                                               \
  |  |  105|   392k|    if (n >= a_allocated)                                               \
  |  |  ------------------
  |  |  |  Branch (105:9): [True: 0, False: 392k]
  |  |  ------------------
  |  |  106|   392k|      {                                                                 \
  |  |  107|      0|        size_t memory_size;                                             \
  |  |  108|      0|        argument *memory;                                               \
  |  |  109|      0|                                                                        \
  |  |  110|      0|        a_allocated = xtimes (a_allocated, 2);                          \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  111|      0|        if (a_allocated <= n)                                           \
  |  |  ------------------
  |  |  |  Branch (111:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  112|      0|          a_allocated = xsum (n, 1);                                    \
  |  |  113|      0|        memory_size = xtimes (a_allocated, sizeof (argument));          \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  114|      0|        if (size_overflow_p (memory_size))                              \
  |  |  ------------------
  |  |  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  115|      0|          /* Overflow, would lead to out of memory.  */                 \
  |  |  116|      0|          goto out_of_memory;                                           \
  |  |  117|      0|        memory = (argument *) (a->arg != a->direct_alloc_arg            \
  |  |  ------------------
  |  |  |  Branch (117:32): [True: 0, False: 0]
  |  |  ------------------
  |  |  118|      0|                               ? realloc (a->arg, memory_size)          \
  |  |  ------------------
  |  |  |  |   34|      0|#define realloc g_realloc
  |  |  ------------------
  |  |  119|      0|                               : malloc (memory_size));                 \
  |  |  ------------------
  |  |  |  |   33|      0|#define malloc  g_malloc
  |  |  ------------------
  |  |  120|      0|        if (memory == NULL)                                             \
  |  |  ------------------
  |  |  |  Branch (120:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  121|      0|          /* Out of memory.  */                                         \
  |  |  122|      0|          goto out_of_memory;                                           \
  |  |  123|      0|        if (a->arg == a->direct_alloc_arg)                              \
  |  |  ------------------
  |  |  |  Branch (123:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  124|      0|          memcpy (memory, a->arg, a->count * sizeof (argument));        \
  |  |  125|      0|        a->arg = memory;                                                \
  |  |  126|      0|      }                                                                 \
  |  |  127|   784k|    while (a->count <= n)                                               \
  |  |  ------------------
  |  |  |  Branch (127:12): [True: 392k, False: 392k]
  |  |  ------------------
  |  |  128|   392k|      a->arg[a->count++].type = TYPE_NONE;                              \
  |  |  129|   392k|    if (a->arg[n].type == TYPE_NONE)                                    \
  |  |  ------------------
  |  |  |  Branch (129:9): [True: 392k, False: 0]
  |  |  ------------------
  |  |  130|   392k|      a->arg[n].type = (_type_);                                        \
  |  |  131|   392k|    else if (a->arg[n].type != (_type_))                                \
  |  |  ------------------
  |  |  |  Branch (131:14): [True: 0, False: 0]
  |  |  ------------------
  |  |  132|      0|      /* Ambiguous type for positional argument.  */                    \
  |  |  133|      0|      goto error;                                                       \
  |  |  134|   392k|  }
  ------------------
  578|   392k|              }
  579|   392k|            dp->conversion = c;
  580|   392k|            dp->dir_end = cp;
  581|   392k|          }
  582|       |
  583|      0|          d->count++;
  584|   392k|          if (d->count >= d_allocated)
  ------------------
  |  Branch (584:15): [True: 0, False: 392k]
  ------------------
  585|      0|            {
  586|      0|              size_t memory_size;
  587|      0|              DIRECTIVE *memory;
  ------------------
  |  |   45|      0|# define DIRECTIVE char_directive
  ------------------
  588|       |
  589|      0|              d_allocated = xtimes (d_allocated, 2);
  ------------------
  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  590|      0|              memory_size = xtimes (d_allocated, sizeof (DIRECTIVE));
  ------------------
  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  591|      0|              if (size_overflow_p (memory_size))
  ------------------
  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  592|       |                /* Overflow, would lead to out of memory.  */
  593|      0|                goto out_of_memory;
  594|      0|              memory = (DIRECTIVE *) (d->dir != d->direct_alloc_dir
  ------------------
  |  Branch (594:39): [True: 0, False: 0]
  ------------------
  595|      0|                                      ? realloc (d->dir, memory_size)
  ------------------
  |  |   34|      0|#define realloc g_realloc
  ------------------
  596|      0|                                      : malloc (memory_size));
  ------------------
  |  |   33|      0|#define malloc  g_malloc
  ------------------
  597|      0|              if (memory == NULL)
  ------------------
  |  Branch (597:19): [True: 0, False: 0]
  ------------------
  598|       |                /* Out of memory.  */
  599|      0|                goto out_of_memory;
  600|      0|              if (d->dir == d->direct_alloc_dir)
  ------------------
  |  Branch (600:19): [True: 0, False: 0]
  ------------------
  601|      0|                memcpy (memory, d->dir, d->count * sizeof (DIRECTIVE));
  602|      0|              d->dir = memory;
  603|      0|            }
  604|   392k|        }
  605|       |#if CHAR_T_ONLY_ASCII
  606|       |      else if (!c_isascii (c))
  607|       |        {
  608|       |          /* Non-ASCII character.  Not supported.  */
  609|       |          goto error;
  610|       |        }
  611|       |#endif
  612|  8.38M|    }
  613|   205k|  d->dir[d->count].dir_start = cp;
  614|       |
  615|   205k|  d->max_width_length = max_width_length;
  616|   205k|  d->max_precision_length = max_precision_length;
  617|   205k|  return 0;
  618|       |
  619|      0|error:
  620|      0|  if (a->arg != a->direct_alloc_arg)
  ------------------
  |  Branch (620:7): [True: 0, False: 0]
  ------------------
  621|      0|    free (a->arg);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
  622|      0|  if (d->dir != d->direct_alloc_dir)
  ------------------
  |  Branch (622:7): [True: 0, False: 0]
  ------------------
  623|      0|    free (d->dir);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
  624|      0|  errno = EINVAL;
  625|      0|  return -1;
  626|       |
  627|      0|out_of_memory:
  628|      0|  if (a->arg != a->direct_alloc_arg)
  ------------------
  |  Branch (628:7): [True: 0, False: 0]
  ------------------
  629|      0|    free (a->arg);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
  630|      0|  if (d->dir != d->direct_alloc_dir)
  ------------------
  |  Branch (630:7): [True: 0, False: 0]
  ------------------
  631|      0|    free (d->dir);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
  632|      0|  errno = ENOMEM;
  633|      0|  return -1;
  634|   205k|}

_g_gnulib_vasprintf:
  137|   205k|{
  138|   205k|  size_t length;
  139|       |
  140|   205k|  *result = vasnprintf (NULL, &length, format, args);
  ------------------
  |  |   25|   205k|#define vasnprintf       _g_gnulib_vasnprintf
  ------------------
  141|   205k|  if (*result == NULL) 
  ------------------
  |  Branch (141:7): [True: 0, False: 205k]
  ------------------
  142|      0|    return -1;
  143|       |  
  144|   205k|  return length;  
  145|   205k|}

_g_gnulib_vasnprintf:
 1790|   205k|{
 1791|   205k|  DIRECTIVES d;
  ------------------
  |  |  151|   205k|#  define DIRECTIVES char_directives
  ------------------
 1792|   205k|  arguments a;
 1793|       |
 1794|   205k|  if (PRINTF_PARSE (format, &d, &a) < 0)
  ------------------
  |  |  152|   205k|#  define PRINTF_PARSE printf_parse
  |  |  ------------------
  |  |  |  |   26|   205k|#define printf_parse     _g_gnulib_printf_parse
  |  |  ------------------
  ------------------
  |  Branch (1794:7): [True: 0, False: 205k]
  ------------------
 1795|       |    /* errno is already set.  */
 1796|      0|    return NULL;
 1797|       |
 1798|   205k|#define CLEANUP() \
 1799|   205k|  if (d.dir != d.direct_alloc_dir)                                      \
 1800|   205k|    free (d.dir);                                                       \
 1801|   205k|  if (a.arg != a.direct_alloc_arg)                                      \
 1802|   205k|    free (a.arg);
 1803|       |
 1804|   205k|  if (PRINTF_FETCHARGS (args, &a) < 0)
  ------------------
  |  |   28|   205k|# define PRINTF_FETCHARGS printf_fetchargs
  |  |  ------------------
  |  |  |  |   27|   205k|#define printf_fetchargs _g_gnulib_printf_fetchargs
  |  |  ------------------
  ------------------
  |  Branch (1804:7): [True: 0, False: 205k]
  ------------------
 1805|      0|    {
 1806|      0|      CLEANUP ();
  ------------------
  |  | 1799|      0|  if (d.dir != d.direct_alloc_dir)                                      \
  |  |  ------------------
  |  |  |  Branch (1799:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1800|      0|    free (d.dir);                                                       \
  |  |  ------------------
  |  |  |  |   35|      0|#define free    g_free
  |  |  ------------------
  |  | 1801|      0|  if (a.arg != a.direct_alloc_arg)                                      \
  |  |  ------------------
  |  |  |  Branch (1801:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1802|      0|    free (a.arg);
  |  |  ------------------
  |  |  |  |   35|      0|#define free    g_free
  |  |  ------------------
  ------------------
 1807|      0|      errno = EINVAL;
 1808|      0|      return NULL;
 1809|      0|    }
 1810|       |
 1811|   205k|  {
 1812|   205k|    size_t buf_neededlength;
 1813|   205k|    TCHAR_T *buf;
  ------------------
  |  |  148|   205k|#  define TCHAR_T char
  ------------------
 1814|   205k|    TCHAR_T *buf_malloced;
  ------------------
  |  |  148|   205k|#  define TCHAR_T char
  ------------------
 1815|   205k|    const FCHAR_T *cp;
 1816|   205k|    size_t i;
 1817|   205k|    DIRECTIVE *dp;
  ------------------
  |  |  150|   205k|#  define DIRECTIVE char_directive
  ------------------
 1818|       |    /* Output string accumulator.  */
 1819|   205k|    DCHAR_T *result;
  ------------------
  |  |  147|   205k|#  define DCHAR_T char
  ------------------
 1820|   205k|    size_t allocated;
 1821|   205k|    size_t length;
 1822|       |
 1823|       |    /* Allocate a small buffer that will hold a directive passed to
 1824|       |       sprintf or snprintf.  */
 1825|   205k|    buf_neededlength =
 1826|   205k|      xsum4 (7, d.max_width_length, d.max_precision_length, 6);
 1827|       |#if HAVE_ALLOCA
 1828|       |    if (buf_neededlength < 4000 / sizeof (TCHAR_T))
 1829|       |      {
 1830|       |        buf = (TCHAR_T *) alloca (buf_neededlength * sizeof (TCHAR_T));
 1831|       |        buf_malloced = NULL;
 1832|       |      }
 1833|       |    else
 1834|       |#endif
 1835|   205k|      {
 1836|   205k|        size_t buf_memsize = xtimes (buf_neededlength, sizeof (TCHAR_T));
  ------------------
  |  |  108|   205k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|   205k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|   205k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|   205k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|   205k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 205k, False: 0]
  |  |  ------------------
  ------------------
 1837|   205k|        if (size_overflow_p (buf_memsize))
  ------------------
  |  |  112|   205k|  ((SIZE) == G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|   205k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|   205k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (112:3): [True: 0, False: 205k]
  |  |  ------------------
  ------------------
 1838|      0|          goto out_of_memory_1;
 1839|   205k|        buf = (TCHAR_T *) malloc (buf_memsize);
  ------------------
  |  |   33|   205k|#define malloc  g_malloc
  ------------------
 1840|   205k|        if (buf == NULL)
  ------------------
  |  Branch (1840:13): [True: 0, False: 205k]
  ------------------
 1841|      0|          goto out_of_memory_1;
 1842|   205k|        buf_malloced = buf;
 1843|   205k|      }
 1844|       |
 1845|   205k|    if (resultbuf != NULL)
  ------------------
  |  Branch (1845:9): [True: 0, False: 205k]
  ------------------
 1846|      0|      {
 1847|      0|        result = resultbuf;
 1848|      0|        allocated = *lengthp;
 1849|      0|      }
 1850|   205k|    else
 1851|   205k|      {
 1852|   205k|        result = NULL;
 1853|   205k|        allocated = 0;
 1854|   205k|      }
 1855|   205k|    length = 0;
 1856|       |    /* Invariants:
 1857|       |       result is either == resultbuf or == NULL or malloc-allocated.
 1858|       |       If length > 0, then result != NULL.  */
 1859|       |
 1860|       |    /* Ensures that allocated >= needed.  Aborts through a jump to
 1861|       |       out_of_memory if needed is SIZE_MAX or otherwise too big.  */
 1862|   205k|#define ENSURE_ALLOCATION(needed) \
 1863|   205k|    if ((needed) > allocated)                                                \
 1864|   205k|      {                                                                      \
 1865|   205k|        size_t memory_size;                                                  \
 1866|   205k|        DCHAR_T *memory;                                                     \
 1867|   205k|                                                                             \
 1868|   205k|        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
 1869|   205k|        if ((needed) > allocated)                                            \
 1870|   205k|          allocated = (needed);                                              \
 1871|   205k|        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
 1872|   205k|        if (size_overflow_p (memory_size))                                   \
 1873|   205k|          goto out_of_memory;                                                \
 1874|   205k|        if (result == resultbuf || result == NULL)                           \
 1875|   205k|          memory = (DCHAR_T *) malloc (memory_size);                         \
 1876|   205k|        else                                                                 \
 1877|   205k|          memory = (DCHAR_T *) realloc (result, memory_size);                \
 1878|   205k|        if (memory == NULL)                                                  \
 1879|   205k|          goto out_of_memory;                                                \
 1880|   205k|        if (result == resultbuf && length > 0)                               \
 1881|   205k|          DCHAR_CPY (memory, result, length);                                \
 1882|   205k|        result = memory;                                                     \
 1883|   205k|      }
 1884|       |
 1885|   392k|    for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++)
 1886|   597k|      {
 1887|   597k|        if (cp != dp->dir_start)
  ------------------
  |  Branch (1887:13): [True: 591k, False: 5.58k]
  ------------------
 1888|   591k|          {
 1889|   591k|            size_t n = dp->dir_start - cp;
 1890|   591k|            size_t augmented_length = xsum (length, n);
 1891|       |
 1892|   591k|            ENSURE_ALLOCATION (augmented_length);
  ------------------
  |  | 1863|   591k|    if ((needed) > allocated)                                                \
  |  |  ------------------
  |  |  |  Branch (1863:9): [True: 402k, False: 188k]
  |  |  ------------------
  |  | 1864|   591k|      {                                                                      \
  |  | 1865|   402k|        size_t memory_size;                                                  \
  |  | 1866|   402k|        DCHAR_T *memory;                                                     \
  |  |  ------------------
  |  |  |  |  147|   402k|#  define DCHAR_T char
  |  |  ------------------
  |  | 1867|   402k|                                                                             \
  |  | 1868|   402k|        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
  |  |  ------------------
  |  |  |  |  108|   200k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   200k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   200k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   200k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   200k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 200k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1868:22): [True: 200k, False: 202k]
  |  |  ------------------
  |  | 1869|   402k|        if ((needed) > allocated)                                            \
  |  |  ------------------
  |  |  |  Branch (1869:13): [True: 202k, False: 200k]
  |  |  ------------------
  |  | 1870|   402k|          allocated = (needed);                                              \
  |  | 1871|   402k|        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
  |  |  ------------------
  |  |  |  |  108|   402k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   402k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   402k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   402k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   402k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 402k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1872|   402k|        if (size_overflow_p (memory_size))                                   \
  |  |  ------------------
  |  |  |  |  112|   402k|  ((SIZE) == G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   402k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   402k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:3): [True: 0, False: 402k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1873|   402k|          goto out_of_memory;                                                \
  |  | 1874|   402k|        if (result == resultbuf || result == NULL)                           \
  |  |  ------------------
  |  |  |  Branch (1874:13): [True: 202k, False: 200k]
  |  |  |  Branch (1874:36): [True: 0, False: 200k]
  |  |  ------------------
  |  | 1875|   402k|          memory = (DCHAR_T *) malloc (memory_size);                         \
  |  |  ------------------
  |  |  |  |   33|   202k|#define malloc  g_malloc
  |  |  ------------------
  |  | 1876|   402k|        else                                                                 \
  |  | 1877|   402k|          memory = (DCHAR_T *) realloc (result, memory_size);                \
  |  |  ------------------
  |  |  |  |   34|   200k|#define realloc g_realloc
  |  |  ------------------
  |  | 1878|   402k|        if (memory == NULL)                                                  \
  |  |  ------------------
  |  |  |  Branch (1878:13): [True: 0, False: 402k]
  |  |  ------------------
  |  | 1879|   402k|          goto out_of_memory;                                                \
  |  | 1880|   402k|        if (result == resultbuf && length > 0)                               \
  |  |  ------------------
  |  |  |  Branch (1880:13): [True: 202k, False: 200k]
  |  |  |  Branch (1880:36): [True: 0, False: 202k]
  |  |  ------------------
  |  | 1881|   402k|          DCHAR_CPY (memory, result, length);                                \
  |  |  ------------------
  |  |  |  |  153|      0|#  define DCHAR_CPY memcpy
  |  |  ------------------
  |  | 1882|   402k|        result = memory;                                                     \
  |  | 1883|   402k|      }
  ------------------
 1893|       |            /* This copies a piece of FCHAR_T[] into a DCHAR_T[].  Here we
 1894|       |               need that the format string contains only ASCII characters
 1895|       |               if FCHAR_T and DCHAR_T are not the same type.  */
 1896|   591k|            if (sizeof (FCHAR_T) == sizeof (DCHAR_T))
  ------------------
  |  Branch (1896:17): [True: 591k, Folded]
  ------------------
 1897|   591k|              {
 1898|   591k|                DCHAR_CPY (result + length, (const DCHAR_T *) cp, n);
  ------------------
  |  |  153|   591k|#  define DCHAR_CPY memcpy
  ------------------
 1899|   591k|                length = augmented_length;
 1900|   591k|              }
 1901|      0|            else
 1902|      0|              {
 1903|      0|                do
 1904|      0|                  result[length++] = *cp++;
 1905|      0|                while (--n > 0);
  ------------------
  |  Branch (1905:24): [True: 0, False: 0]
  ------------------
 1906|      0|              }
 1907|   591k|          }
 1908|   597k|        if (i == d.count)
  ------------------
  |  Branch (1908:13): [True: 205k, False: 392k]
  ------------------
 1909|   205k|          break;
 1910|       |
 1911|       |        /* Execute a single directive.  */
 1912|   392k|        if (dp->conversion == '%')
  ------------------
  |  Branch (1912:13): [True: 0, False: 392k]
  ------------------
 1913|      0|          {
 1914|      0|            size_t augmented_length;
 1915|       |
 1916|      0|            if (!(dp->arg_index == ARG_NONE))
  ------------------
  |  |   44|      0|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (1916:17): [True: 0, False: 0]
  ------------------
 1917|      0|              abort ();
 1918|      0|            augmented_length = xsum (length, 1);
 1919|      0|            ENSURE_ALLOCATION (augmented_length);
  ------------------
  |  | 1863|      0|    if ((needed) > allocated)                                                \
  |  |  ------------------
  |  |  |  Branch (1863:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1864|      0|      {                                                                      \
  |  | 1865|      0|        size_t memory_size;                                                  \
  |  | 1866|      0|        DCHAR_T *memory;                                                     \
  |  |  ------------------
  |  |  |  |  147|      0|#  define DCHAR_T char
  |  |  ------------------
  |  | 1867|      0|                                                                             \
  |  | 1868|      0|        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1868:22): [True: 0, False: 0]
  |  |  ------------------
  |  | 1869|      0|        if ((needed) > allocated)                                            \
  |  |  ------------------
  |  |  |  Branch (1869:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1870|      0|          allocated = (needed);                                              \
  |  | 1871|      0|        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1872|      0|        if (size_overflow_p (memory_size))                                   \
  |  |  ------------------
  |  |  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1873|      0|          goto out_of_memory;                                                \
  |  | 1874|      0|        if (result == resultbuf || result == NULL)                           \
  |  |  ------------------
  |  |  |  Branch (1874:13): [True: 0, False: 0]
  |  |  |  Branch (1874:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 1875|      0|          memory = (DCHAR_T *) malloc (memory_size);                         \
  |  |  ------------------
  |  |  |  |   33|      0|#define malloc  g_malloc
  |  |  ------------------
  |  | 1876|      0|        else                                                                 \
  |  | 1877|      0|          memory = (DCHAR_T *) realloc (result, memory_size);                \
  |  |  ------------------
  |  |  |  |   34|      0|#define realloc g_realloc
  |  |  ------------------
  |  | 1878|      0|        if (memory == NULL)                                                  \
  |  |  ------------------
  |  |  |  Branch (1878:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1879|      0|          goto out_of_memory;                                                \
  |  | 1880|      0|        if (result == resultbuf && length > 0)                               \
  |  |  ------------------
  |  |  |  Branch (1880:13): [True: 0, False: 0]
  |  |  |  Branch (1880:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 1881|      0|          DCHAR_CPY (memory, result, length);                                \
  |  |  ------------------
  |  |  |  |  153|      0|#  define DCHAR_CPY memcpy
  |  |  ------------------
  |  | 1882|      0|        result = memory;                                                     \
  |  | 1883|      0|      }
  ------------------
 1920|      0|            result[length] = '%';
 1921|      0|            length = augmented_length;
 1922|      0|          }
 1923|   392k|        else
 1924|   392k|          {
 1925|   392k|            if (!(dp->arg_index != ARG_NONE))
  ------------------
  |  |   44|   392k|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (1925:17): [True: 0, False: 392k]
  ------------------
 1926|      0|              abort ();
 1927|       |
 1928|   392k|            if (dp->conversion == 'n')
  ------------------
  |  Branch (1928:17): [True: 0, False: 392k]
  ------------------
 1929|      0|              {
 1930|      0|                switch (a.arg[dp->arg_index].type)
 1931|      0|                  {
 1932|      0|                  case TYPE_COUNT_SCHAR_POINTER:
  ------------------
  |  Branch (1932:19): [True: 0, False: 0]
  ------------------
 1933|      0|                    *a.arg[dp->arg_index].a.a_count_schar_pointer = length;
 1934|      0|                    break;
 1935|      0|                  case TYPE_COUNT_SHORT_POINTER:
  ------------------
  |  Branch (1935:19): [True: 0, False: 0]
  ------------------
 1936|      0|                    *a.arg[dp->arg_index].a.a_count_short_pointer = length;
 1937|      0|                    break;
 1938|      0|                  case TYPE_COUNT_INT_POINTER:
  ------------------
  |  Branch (1938:19): [True: 0, False: 0]
  ------------------
 1939|      0|                    *a.arg[dp->arg_index].a.a_count_int_pointer = length;
 1940|      0|                    break;
 1941|      0|                  case TYPE_COUNT_LONGINT_POINTER:
  ------------------
  |  Branch (1941:19): [True: 0, False: 0]
  ------------------
 1942|      0|                    *a.arg[dp->arg_index].a.a_count_longint_pointer = length;
 1943|      0|                    break;
 1944|      0|#if HAVE_LONG_LONG
 1945|      0|                  case TYPE_COUNT_LONGLONGINT_POINTER:
  ------------------
  |  Branch (1945:19): [True: 0, False: 0]
  ------------------
 1946|      0|                    *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length;
 1947|      0|                    break;
 1948|      0|#endif
 1949|      0|                  default:
  ------------------
  |  Branch (1949:19): [True: 0, False: 0]
  ------------------
 1950|      0|                    abort ();
 1951|      0|                  }
 1952|      0|              }
 1953|       |#if ENABLE_UNISTDIO
 1954|       |            /* The unistdio extensions.  */
 1955|       |            else if (dp->conversion == 'U')
 1956|       |              {
 1957|       |                arg_type type = a.arg[dp->arg_index].type;
 1958|       |                int flags = dp->flags;
 1959|       |                int has_width;
 1960|       |                size_t width;
 1961|       |                int has_precision;
 1962|       |                size_t precision;
 1963|       |
 1964|       |                has_width = 0;
 1965|       |                width = 0;
 1966|       |                if (dp->width_start != dp->width_end)
 1967|       |                  {
 1968|       |                    if (dp->width_arg_index != ARG_NONE)
 1969|       |                      {
 1970|       |                        int arg;
 1971|       |
 1972|       |                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
 1973|       |                          abort ();
 1974|       |                        arg = a.arg[dp->width_arg_index].a.a_int;
 1975|       |                        width = arg;
 1976|       |                        if (arg < 0)
 1977|       |                          {
 1978|       |                            /* "A negative field width is taken as a '-' flag
 1979|       |                                followed by a positive field width."  */
 1980|       |                            flags |= FLAG_LEFT;
 1981|       |                            width = -width;
 1982|       |                          }
 1983|       |                      }
 1984|       |                    else
 1985|       |                      {
 1986|       |                        const FCHAR_T *digitp = dp->width_start;
 1987|       |
 1988|       |                        do
 1989|       |                          width = xsum (xtimes (width, 10), *digitp++ - '0');
 1990|       |                        while (digitp != dp->width_end);
 1991|       |                      }
 1992|       |                    has_width = 1;
 1993|       |                  }
 1994|       |
 1995|       |                has_precision = 0;
 1996|       |                precision = 0;
 1997|       |                if (dp->precision_start != dp->precision_end)
 1998|       |                  {
 1999|       |                    if (dp->precision_arg_index != ARG_NONE)
 2000|       |                      {
 2001|       |                        int arg;
 2002|       |
 2003|       |                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
 2004|       |                          abort ();
 2005|       |                        arg = a.arg[dp->precision_arg_index].a.a_int;
 2006|       |                        /* "A negative precision is taken as if the precision
 2007|       |                            were omitted."  */
 2008|       |                        if (arg >= 0)
 2009|       |                          {
 2010|       |                            precision = arg;
 2011|       |                            has_precision = 1;
 2012|       |                          }
 2013|       |                      }
 2014|       |                    else
 2015|       |                      {
 2016|       |                        const FCHAR_T *digitp = dp->precision_start + 1;
 2017|       |
 2018|       |                        precision = 0;
 2019|       |                        while (digitp != dp->precision_end)
 2020|       |                          precision = xsum (xtimes (precision, 10), *digitp++ - '0');
 2021|       |                        has_precision = 1;
 2022|       |                      }
 2023|       |                  }
 2024|       |
 2025|       |                switch (type)
 2026|       |                  {
 2027|       |                  case TYPE_U8_STRING:
 2028|       |                    {
 2029|       |                      const uint8_t *arg = a.arg[dp->arg_index].a.a_u8_string;
 2030|       |                      const uint8_t *arg_end;
 2031|       |                      size_t characters;
 2032|       |
 2033|       |                      if (has_precision)
 2034|       |                        {
 2035|       |                          /* Use only PRECISION characters, from the left.  */
 2036|       |                          arg_end = arg;
 2037|       |                          characters = 0;
 2038|       |                          for (; precision > 0; precision--)
 2039|       |                            {
 2040|       |                              int count = u8_strmblen (arg_end);
 2041|       |                              if (count == 0)
 2042|       |                                break;
 2043|       |                              if (count < 0)
 2044|       |                                {
 2045|       |                                  if (!(result == resultbuf || result == NULL))
 2046|       |                                    free (result);
 2047|       |                                  if (buf_malloced != NULL)
 2048|       |                                    free (buf_malloced);
 2049|       |                                  CLEANUP ();
 2050|       |                                  errno = EILSEQ;
 2051|       |                                  return NULL;
 2052|       |                                }
 2053|       |                              arg_end += count;
 2054|       |                              characters++;
 2055|       |                            }
 2056|       |                        }
 2057|       |                      else if (has_width)
 2058|       |                        {
 2059|       |                          /* Use the entire string, and count the number of
 2060|       |                             characters.  */
 2061|       |                          arg_end = arg;
 2062|       |                          characters = 0;
 2063|       |                          for (;;)
 2064|       |                            {
 2065|       |                              int count = u8_strmblen (arg_end);
 2066|       |                              if (count == 0)
 2067|       |                                break;
 2068|       |                              if (count < 0)
 2069|       |                                {
 2070|       |                                  if (!(result == resultbuf || result == NULL))
 2071|       |                                    free (result);
 2072|       |                                  if (buf_malloced != NULL)
 2073|       |                                    free (buf_malloced);
 2074|       |                                  CLEANUP ();
 2075|       |                                  errno = EILSEQ;
 2076|       |                                  return NULL;
 2077|       |                                }
 2078|       |                              arg_end += count;
 2079|       |                              characters++;
 2080|       |                            }
 2081|       |                        }
 2082|       |                      else
 2083|       |                        {
 2084|       |                          /* Use the entire string.  */
 2085|       |                          arg_end = arg + u8_strlen (arg);
 2086|       |                          /* The number of characters doesn't matter.  */
 2087|       |                          characters = 0;
 2088|       |                        }
 2089|       |
 2090|       |                      if (characters < width && !(dp->flags & FLAG_LEFT))
 2091|       |                        {
 2092|       |                          size_t n = width - characters;
 2093|       |                          ENSURE_ALLOCATION (xsum (length, n));
 2094|       |                          DCHAR_SET (result + length, ' ', n);
 2095|       |                          length += n;
 2096|       |                        }
 2097|       |
 2098|       |# if DCHAR_IS_UINT8_T
 2099|       |                      {
 2100|       |                        size_t n = arg_end - arg;
 2101|       |                        ENSURE_ALLOCATION (xsum (length, n));
 2102|       |                        DCHAR_CPY (result + length, arg, n);
 2103|       |                        length += n;
 2104|       |                      }
 2105|       |# else
 2106|       |                      { /* Convert.  */
 2107|       |                        DCHAR_T *converted = result + length;
 2108|       |                        size_t converted_len = allocated - length;
 2109|       |#  if DCHAR_IS_TCHAR
 2110|       |                        /* Convert from UTF-8 to locale encoding.  */
 2111|       |                        converted =
 2112|       |                          u8_conv_to_encoding (locale_charset (),
 2113|       |                                               iconveh_question_mark,
 2114|       |                                               arg, arg_end - arg, NULL,
 2115|       |                                               converted, &converted_len);
 2116|       |#  else
 2117|       |                        /* Convert from UTF-8 to UTF-16/UTF-32.  */
 2118|       |                        converted =
 2119|       |                          U8_TO_DCHAR (arg, arg_end - arg,
 2120|       |                                       converted, &converted_len);
 2121|       |#  endif
 2122|       |                        if (converted == NULL)
 2123|       |                          {
 2124|       |                            int saved_errno = errno;
 2125|       |                            if (!(result == resultbuf || result == NULL))
 2126|       |                              free (result);
 2127|       |                            if (buf_malloced != NULL)
 2128|       |                              free (buf_malloced);
 2129|       |                            CLEANUP ();
 2130|       |                            errno = saved_errno;
 2131|       |                            return NULL;
 2132|       |                          }
 2133|       |                        if (converted != result + length)
 2134|       |                          {
 2135|       |                            ENSURE_ALLOCATION (xsum (length, converted_len));
 2136|       |                            DCHAR_CPY (result + length, converted, converted_len);
 2137|       |                            free (converted);
 2138|       |                          }
 2139|       |                        length += converted_len;
 2140|       |                      }
 2141|       |# endif
 2142|       |
 2143|       |                      if (characters < width && (dp->flags & FLAG_LEFT))
 2144|       |                        {
 2145|       |                          size_t n = width - characters;
 2146|       |                          ENSURE_ALLOCATION (xsum (length, n));
 2147|       |                          DCHAR_SET (result + length, ' ', n);
 2148|       |                          length += n;
 2149|       |                        }
 2150|       |                    }
 2151|       |                    break;
 2152|       |
 2153|       |                  case TYPE_U16_STRING:
 2154|       |                    {
 2155|       |                      const uint16_t *arg = a.arg[dp->arg_index].a.a_u16_string;
 2156|       |                      const uint16_t *arg_end;
 2157|       |                      size_t characters;
 2158|       |
 2159|       |                      if (has_precision)
 2160|       |                        {
 2161|       |                          /* Use only PRECISION characters, from the left.  */
 2162|       |                          arg_end = arg;
 2163|       |                          characters = 0;
 2164|       |                          for (; precision > 0; precision--)
 2165|       |                            {
 2166|       |                              int count = u16_strmblen (arg_end);
 2167|       |                              if (count == 0)
 2168|       |                                break;
 2169|       |                              if (count < 0)
 2170|       |                                {
 2171|       |                                  if (!(result == resultbuf || result == NULL))
 2172|       |                                    free (result);
 2173|       |                                  if (buf_malloced != NULL)
 2174|       |                                    free (buf_malloced);
 2175|       |                                  CLEANUP ();
 2176|       |                                  errno = EILSEQ;
 2177|       |                                  return NULL;
 2178|       |                                }
 2179|       |                              arg_end += count;
 2180|       |                              characters++;
 2181|       |                            }
 2182|       |                        }
 2183|       |                      else if (has_width)
 2184|       |                        {
 2185|       |                          /* Use the entire string, and count the number of
 2186|       |                             characters.  */
 2187|       |                          arg_end = arg;
 2188|       |                          characters = 0;
 2189|       |                          for (;;)
 2190|       |                            {
 2191|       |                              int count = u16_strmblen (arg_end);
 2192|       |                              if (count == 0)
 2193|       |                                break;
 2194|       |                              if (count < 0)
 2195|       |                                {
 2196|       |                                  if (!(result == resultbuf || result == NULL))
 2197|       |                                    free (result);
 2198|       |                                  if (buf_malloced != NULL)
 2199|       |                                    free (buf_malloced);
 2200|       |                                  CLEANUP ();
 2201|       |                                  errno = EILSEQ;
 2202|       |                                  return NULL;
 2203|       |                                }
 2204|       |                              arg_end += count;
 2205|       |                              characters++;
 2206|       |                            }
 2207|       |                        }
 2208|       |                      else
 2209|       |                        {
 2210|       |                          /* Use the entire string.  */
 2211|       |                          arg_end = arg + u16_strlen (arg);
 2212|       |                          /* The number of characters doesn't matter.  */
 2213|       |                          characters = 0;
 2214|       |                        }
 2215|       |
 2216|       |                      if (characters < width && !(dp->flags & FLAG_LEFT))
 2217|       |                        {
 2218|       |                          size_t n = width - characters;
 2219|       |                          ENSURE_ALLOCATION (xsum (length, n));
 2220|       |                          DCHAR_SET (result + length, ' ', n);
 2221|       |                          length += n;
 2222|       |                        }
 2223|       |
 2224|       |# if DCHAR_IS_UINT16_T
 2225|       |                      {
 2226|       |                        size_t n = arg_end - arg;
 2227|       |                        ENSURE_ALLOCATION (xsum (length, n));
 2228|       |                        DCHAR_CPY (result + length, arg, n);
 2229|       |                        length += n;
 2230|       |                      }
 2231|       |# else
 2232|       |                      { /* Convert.  */
 2233|       |                        DCHAR_T *converted = result + length;
 2234|       |                        size_t converted_len = allocated - length;
 2235|       |#  if DCHAR_IS_TCHAR
 2236|       |                        /* Convert from UTF-16 to locale encoding.  */
 2237|       |                        converted =
 2238|       |                          u16_conv_to_encoding (locale_charset (),
 2239|       |                                                iconveh_question_mark,
 2240|       |                                                arg, arg_end - arg, NULL,
 2241|       |                                                converted, &converted_len);
 2242|       |#  else
 2243|       |                        /* Convert from UTF-16 to UTF-8/UTF-32.  */
 2244|       |                        converted =
 2245|       |                          U16_TO_DCHAR (arg, arg_end - arg,
 2246|       |                                        converted, &converted_len);
 2247|       |#  endif
 2248|       |                        if (converted == NULL)
 2249|       |                          {
 2250|       |                            int saved_errno = errno;
 2251|       |                            if (!(result == resultbuf || result == NULL))
 2252|       |                              free (result);
 2253|       |                            if (buf_malloced != NULL)
 2254|       |                              free (buf_malloced);
 2255|       |                            CLEANUP ();
 2256|       |                            errno = saved_errno;
 2257|       |                            return NULL;
 2258|       |                          }
 2259|       |                        if (converted != result + length)
 2260|       |                          {
 2261|       |                            ENSURE_ALLOCATION (xsum (length, converted_len));
 2262|       |                            DCHAR_CPY (result + length, converted, converted_len);
 2263|       |                            free (converted);
 2264|       |                          }
 2265|       |                        length += converted_len;
 2266|       |                      }
 2267|       |# endif
 2268|       |
 2269|       |                      if (characters < width && (dp->flags & FLAG_LEFT))
 2270|       |                        {
 2271|       |                          size_t n = width - characters;
 2272|       |                          ENSURE_ALLOCATION (xsum (length, n));
 2273|       |                          DCHAR_SET (result + length, ' ', n);
 2274|       |                          length += n;
 2275|       |                        }
 2276|       |                    }
 2277|       |                    break;
 2278|       |
 2279|       |                  case TYPE_U32_STRING:
 2280|       |                    {
 2281|       |                      const uint32_t *arg = a.arg[dp->arg_index].a.a_u32_string;
 2282|       |                      const uint32_t *arg_end;
 2283|       |                      size_t characters;
 2284|       |
 2285|       |                      if (has_precision)
 2286|       |                        {
 2287|       |                          /* Use only PRECISION characters, from the left.  */
 2288|       |                          arg_end = arg;
 2289|       |                          characters = 0;
 2290|       |                          for (; precision > 0; precision--)
 2291|       |                            {
 2292|       |                              int count = u32_strmblen (arg_end);
 2293|       |                              if (count == 0)
 2294|       |                                break;
 2295|       |                              if (count < 0)
 2296|       |                                {
 2297|       |                                  if (!(result == resultbuf || result == NULL))
 2298|       |                                    free (result);
 2299|       |                                  if (buf_malloced != NULL)
 2300|       |                                    free (buf_malloced);
 2301|       |                                  CLEANUP ();
 2302|       |                                  errno = EILSEQ;
 2303|       |                                  return NULL;
 2304|       |                                }
 2305|       |                              arg_end += count;
 2306|       |                              characters++;
 2307|       |                            }
 2308|       |                        }
 2309|       |                      else if (has_width)
 2310|       |                        {
 2311|       |                          /* Use the entire string, and count the number of
 2312|       |                             characters.  */
 2313|       |                          arg_end = arg;
 2314|       |                          characters = 0;
 2315|       |                          for (;;)
 2316|       |                            {
 2317|       |                              int count = u32_strmblen (arg_end);
 2318|       |                              if (count == 0)
 2319|       |                                break;
 2320|       |                              if (count < 0)
 2321|       |                                {
 2322|       |                                  if (!(result == resultbuf || result == NULL))
 2323|       |                                    free (result);
 2324|       |                                  if (buf_malloced != NULL)
 2325|       |                                    free (buf_malloced);
 2326|       |                                  CLEANUP ();
 2327|       |                                  errno = EILSEQ;
 2328|       |                                  return NULL;
 2329|       |                                }
 2330|       |                              arg_end += count;
 2331|       |                              characters++;
 2332|       |                            }
 2333|       |                        }
 2334|       |                      else
 2335|       |                        {
 2336|       |                          /* Use the entire string.  */
 2337|       |                          arg_end = arg + u32_strlen (arg);
 2338|       |                          /* The number of characters doesn't matter.  */
 2339|       |                          characters = 0;
 2340|       |                        }
 2341|       |
 2342|       |                      if (characters < width && !(dp->flags & FLAG_LEFT))
 2343|       |                        {
 2344|       |                          size_t n = width - characters;
 2345|       |                          ENSURE_ALLOCATION (xsum (length, n));
 2346|       |                          DCHAR_SET (result + length, ' ', n);
 2347|       |                          length += n;
 2348|       |                        }
 2349|       |
 2350|       |# if DCHAR_IS_UINT32_T
 2351|       |                      {
 2352|       |                        size_t n = arg_end - arg;
 2353|       |                        ENSURE_ALLOCATION (xsum (length, n));
 2354|       |                        DCHAR_CPY (result + length, arg, n);
 2355|       |                        length += n;
 2356|       |                      }
 2357|       |# else
 2358|       |                      { /* Convert.  */
 2359|       |                        DCHAR_T *converted = result + length;
 2360|       |                        size_t converted_len = allocated - length;
 2361|       |#  if DCHAR_IS_TCHAR
 2362|       |                        /* Convert from UTF-32 to locale encoding.  */
 2363|       |                        converted =
 2364|       |                          u32_conv_to_encoding (locale_charset (),
 2365|       |                                                iconveh_question_mark,
 2366|       |                                                arg, arg_end - arg, NULL,
 2367|       |                                                converted, &converted_len);
 2368|       |#  else
 2369|       |                        /* Convert from UTF-32 to UTF-8/UTF-16.  */
 2370|       |                        converted =
 2371|       |                          U32_TO_DCHAR (arg, arg_end - arg,
 2372|       |                                        converted, &converted_len);
 2373|       |#  endif
 2374|       |                        if (converted == NULL)
 2375|       |                          {
 2376|       |                            int saved_errno = errno;
 2377|       |                            if (!(result == resultbuf || result == NULL))
 2378|       |                              free (result);
 2379|       |                            if (buf_malloced != NULL)
 2380|       |                              free (buf_malloced);
 2381|       |                            CLEANUP ();
 2382|       |                            errno = saved_errno;
 2383|       |                            return NULL;
 2384|       |                          }
 2385|       |                        if (converted != result + length)
 2386|       |                          {
 2387|       |                            ENSURE_ALLOCATION (xsum (length, converted_len));
 2388|       |                            DCHAR_CPY (result + length, converted, converted_len);
 2389|       |                            free (converted);
 2390|       |                          }
 2391|       |                        length += converted_len;
 2392|       |                      }
 2393|       |# endif
 2394|       |
 2395|       |                      if (characters < width && (dp->flags & FLAG_LEFT))
 2396|       |                        {
 2397|       |                          size_t n = width - characters;
 2398|       |                          ENSURE_ALLOCATION (xsum (length, n));
 2399|       |                          DCHAR_SET (result + length, ' ', n);
 2400|       |                          length += n;
 2401|       |                        }
 2402|       |                    }
 2403|       |                    break;
 2404|       |
 2405|       |                  default:
 2406|       |                    abort ();
 2407|       |                  }
 2408|       |              }
 2409|       |#endif
 2410|   392k|#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && HAVE_WCHAR_T
 2411|   392k|            else if (dp->conversion == 's'
  ------------------
  |  Branch (2411:22): [True: 187k, False: 204k]
  ------------------
 2412|       |# if WIDE_CHAR_VERSION
 2413|       |                     && a.arg[dp->arg_index].type != TYPE_WIDE_STRING
 2414|       |# else
 2415|   187k|                     && a.arg[dp->arg_index].type == TYPE_WIDE_STRING
  ------------------
  |  Branch (2415:25): [True: 0, False: 187k]
  ------------------
 2416|   392k|# endif
 2417|   392k|                    )
 2418|      0|              {
 2419|       |                /* The normal handling of the 's' directive below requires
 2420|       |                   allocating a temporary buffer.  The determination of its
 2421|       |                   length (tmp_length), in the case when a precision is
 2422|       |                   specified, below requires a conversion between a char[]
 2423|       |                   string and a wchar_t[] wide string.  It could be done, but
 2424|       |                   we have no guarantee that the implementation of sprintf will
 2425|       |                   use the exactly same algorithm.  Without this guarantee, it
 2426|       |                   is possible to have buffer overrun bugs.  In order to avoid
 2427|       |                   such bugs, we implement the entire processing of the 's'
 2428|       |                   directive ourselves.  */
 2429|      0|                int flags = dp->flags;
 2430|      0|                int has_width;
 2431|      0|                size_t width;
 2432|      0|                int has_precision;
 2433|      0|                size_t precision;
 2434|       |
 2435|      0|                has_width = 0;
 2436|      0|                width = 0;
 2437|      0|                if (dp->width_start != dp->width_end)
  ------------------
  |  Branch (2437:21): [True: 0, False: 0]
  ------------------
 2438|      0|                  {
 2439|      0|                    if (dp->width_arg_index != ARG_NONE)
  ------------------
  |  |   44|      0|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (2439:25): [True: 0, False: 0]
  ------------------
 2440|      0|                      {
 2441|      0|                        int arg;
 2442|       |
 2443|      0|                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
  ------------------
  |  Branch (2443:29): [True: 0, False: 0]
  ------------------
 2444|      0|                          abort ();
 2445|      0|                        arg = a.arg[dp->width_arg_index].a.a_int;
 2446|      0|                        width = arg;
 2447|      0|                        if (arg < 0)
  ------------------
  |  Branch (2447:29): [True: 0, False: 0]
  ------------------
 2448|      0|                          {
 2449|       |                            /* "A negative field width is taken as a '-' flag
 2450|       |                                followed by a positive field width."  */
 2451|      0|                            flags |= FLAG_LEFT;
  ------------------
  |  |   34|      0|#define FLAG_LEFT        2      /* - flag */
  ------------------
 2452|      0|                            width = -width;
 2453|      0|                          }
 2454|      0|                      }
 2455|      0|                    else
 2456|      0|                      {
 2457|      0|                        const FCHAR_T *digitp = dp->width_start;
 2458|       |
 2459|      0|                        do
 2460|      0|                          width = xsum (xtimes (width, 10), *digitp++ - '0');
  ------------------
  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2461|      0|                        while (digitp != dp->width_end);
  ------------------
  |  Branch (2461:32): [True: 0, False: 0]
  ------------------
 2462|      0|                      }
 2463|      0|                    has_width = 1;
 2464|      0|                  }
 2465|       |
 2466|      0|                has_precision = 0;
 2467|      0|                precision = 6;
 2468|      0|                if (dp->precision_start != dp->precision_end)
  ------------------
  |  Branch (2468:21): [True: 0, False: 0]
  ------------------
 2469|      0|                  {
 2470|      0|                    if (dp->precision_arg_index != ARG_NONE)
  ------------------
  |  |   44|      0|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (2470:25): [True: 0, False: 0]
  ------------------
 2471|      0|                      {
 2472|      0|                        int arg;
 2473|       |
 2474|      0|                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
  ------------------
  |  Branch (2474:29): [True: 0, False: 0]
  ------------------
 2475|      0|                          abort ();
 2476|      0|                        arg = a.arg[dp->precision_arg_index].a.a_int;
 2477|       |                        /* "A negative precision is taken as if the precision
 2478|       |                            were omitted."  */
 2479|      0|                        if (arg >= 0)
  ------------------
  |  Branch (2479:29): [True: 0, False: 0]
  ------------------
 2480|      0|                          {
 2481|      0|                            precision = arg;
 2482|      0|                            has_precision = 1;
 2483|      0|                          }
 2484|      0|                      }
 2485|      0|                    else
 2486|      0|                      {
 2487|      0|                        const FCHAR_T *digitp = dp->precision_start + 1;
 2488|       |
 2489|      0|                        precision = 0;
 2490|      0|                        while (digitp != dp->precision_end)
  ------------------
  |  Branch (2490:32): [True: 0, False: 0]
  ------------------
 2491|      0|                          precision = xsum (xtimes (precision, 10), *digitp++ - '0');
  ------------------
  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2492|      0|                        has_precision = 1;
 2493|      0|                      }
 2494|      0|                  }
 2495|       |
 2496|       |# if WIDE_CHAR_VERSION
 2497|       |                /* %s in vasnwprintf.  See the specification of fwprintf.  */
 2498|       |                {
 2499|       |                  const char *arg = a.arg[dp->arg_index].a.a_string;
 2500|       |                  const char *arg_end;
 2501|       |                  size_t characters;
 2502|       |
 2503|       |                  if (has_precision)
 2504|       |                    {
 2505|       |                      /* Use only as many bytes as needed to produce PRECISION
 2506|       |                         wide characters, from the left.  */
 2507|       |#  if HAVE_MBRTOWC
 2508|       |                      mbstate_t state;
 2509|       |                      memset (&state, '\0', sizeof (mbstate_t));
 2510|       |#  endif
 2511|       |                      arg_end = arg;
 2512|       |                      characters = 0;
 2513|       |                      for (; precision > 0; precision--)
 2514|       |                        {
 2515|       |                          int count;
 2516|       |#  if HAVE_MBRTOWC
 2517|       |                          count = mbrlen (arg_end, MB_CUR_MAX, &state);
 2518|       |#  else
 2519|       |                          count = mblen (arg_end, MB_CUR_MAX);
 2520|       |#  endif
 2521|       |                          if (count == 0)
 2522|       |                            /* Found the terminating NUL.  */
 2523|       |                            break;
 2524|       |                          if (count < 0)
 2525|       |                            {
 2526|       |                              /* Invalid or incomplete multibyte character.  */
 2527|       |                              if (!(result == resultbuf || result == NULL))
 2528|       |                                free (result);
 2529|       |                              if (buf_malloced != NULL)
 2530|       |                                free (buf_malloced);
 2531|       |                              CLEANUP ();
 2532|       |                              errno = EILSEQ;
 2533|       |                              return NULL;
 2534|       |                            }
 2535|       |                          arg_end += count;
 2536|       |                          characters++;
 2537|       |                        }
 2538|       |                    }
 2539|       |                  else if (has_width)
 2540|       |                    {
 2541|       |                      /* Use the entire string, and count the number of wide
 2542|       |                         characters.  */
 2543|       |#  if HAVE_MBRTOWC
 2544|       |                      mbstate_t state;
 2545|       |                      memset (&state, '\0', sizeof (mbstate_t));
 2546|       |#  endif
 2547|       |                      arg_end = arg;
 2548|       |                      characters = 0;
 2549|       |                      for (;;)
 2550|       |                        {
 2551|       |                          int count;
 2552|       |#  if HAVE_MBRTOWC
 2553|       |                          count = mbrlen (arg_end, MB_CUR_MAX, &state);
 2554|       |#  else
 2555|       |                          count = mblen (arg_end, MB_CUR_MAX);
 2556|       |#  endif
 2557|       |                          if (count == 0)
 2558|       |                            /* Found the terminating NUL.  */
 2559|       |                            break;
 2560|       |                          if (count < 0)
 2561|       |                            {
 2562|       |                              /* Invalid or incomplete multibyte character.  */
 2563|       |                              if (!(result == resultbuf || result == NULL))
 2564|       |                                free (result);
 2565|       |                              if (buf_malloced != NULL)
 2566|       |                                free (buf_malloced);
 2567|       |                              CLEANUP ();
 2568|       |                              errno = EILSEQ;
 2569|       |                              return NULL;
 2570|       |                            }
 2571|       |                          arg_end += count;
 2572|       |                          characters++;
 2573|       |                        }
 2574|       |                    }
 2575|       |                  else
 2576|       |                    {
 2577|       |                      /* Use the entire string.  */
 2578|       |                      arg_end = arg + strlen (arg);
 2579|       |                      /* The number of characters doesn't matter.  */
 2580|       |                      characters = 0;
 2581|       |                    }
 2582|       |
 2583|       |                  if (characters < width && !(dp->flags & FLAG_LEFT))
 2584|       |                    {
 2585|       |                      size_t n = width - characters;
 2586|       |                      ENSURE_ALLOCATION (xsum (length, n));
 2587|       |                      DCHAR_SET (result + length, ' ', n);
 2588|       |                      length += n;
 2589|       |                    }
 2590|       |
 2591|       |                  if (has_precision || has_width)
 2592|       |                    {
 2593|       |                      /* We know the number of wide characters in advance.  */
 2594|       |                      size_t remaining;
 2595|       |#  if HAVE_MBRTOWC
 2596|       |                      mbstate_t state;
 2597|       |                      memset (&state, '\0', sizeof (mbstate_t));
 2598|       |#  endif
 2599|       |                      ENSURE_ALLOCATION (xsum (length, characters));
 2600|       |                      for (remaining = characters; remaining > 0; remaining--)
 2601|       |                        {
 2602|       |                          wchar_t wc;
 2603|       |                          int count;
 2604|       |#  if HAVE_MBRTOWC
 2605|       |                          count = mbrtowc (&wc, arg, arg_end - arg, &state);
 2606|       |#  else
 2607|       |                          count = mbtowc (&wc, arg, arg_end - arg);
 2608|       |#  endif
 2609|       |                          if (count <= 0)
 2610|       |                            /* mbrtowc not consistent with mbrlen, or mbtowc
 2611|       |                               not consistent with mblen.  */
 2612|       |                            abort ();
 2613|       |                          result[length++] = wc;
 2614|       |                          arg += count;
 2615|       |                        }
 2616|       |                      if (!(arg == arg_end))
 2617|       |                        abort ();
 2618|       |                    }
 2619|       |                  else
 2620|       |                    {
 2621|       |#  if HAVE_MBRTOWC
 2622|       |                      mbstate_t state;
 2623|       |                      memset (&state, '\0', sizeof (mbstate_t));
 2624|       |#  endif
 2625|       |                      while (arg < arg_end)
 2626|       |                        {
 2627|       |                          wchar_t wc;
 2628|       |                          int count;
 2629|       |#  if HAVE_MBRTOWC
 2630|       |                          count = mbrtowc (&wc, arg, arg_end - arg, &state);
 2631|       |#  else
 2632|       |                          count = mbtowc (&wc, arg, arg_end - arg);
 2633|       |#  endif
 2634|       |                          if (count <= 0)
 2635|       |                            /* mbrtowc not consistent with mbrlen, or mbtowc
 2636|       |                               not consistent with mblen.  */
 2637|       |                            abort ();
 2638|       |                          ENSURE_ALLOCATION (xsum (length, 1));
 2639|       |                          result[length++] = wc;
 2640|       |                          arg += count;
 2641|       |                        }
 2642|       |                    }
 2643|       |
 2644|       |                  if (characters < width && (dp->flags & FLAG_LEFT))
 2645|       |                    {
 2646|       |                      size_t n = width - characters;
 2647|       |                      ENSURE_ALLOCATION (xsum (length, n));
 2648|       |                      DCHAR_SET (result + length, ' ', n);
 2649|       |                      length += n;
 2650|       |                    }
 2651|       |                }
 2652|       |# else
 2653|       |                /* %ls in vasnprintf.  See the specification of fprintf.  */
 2654|      0|                {
 2655|      0|                  const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string;
 2656|      0|                  const wchar_t *arg_end;
 2657|      0|                  size_t characters;
 2658|       |#  if !DCHAR_IS_TCHAR
 2659|       |                  /* This code assumes that TCHAR_T is 'char'.  */
 2660|       |                  verify (sizeof (TCHAR_T) == 1);
 2661|       |                  TCHAR_T *tmpsrc;
 2662|       |                  DCHAR_T *tmpdst;
 2663|       |                  size_t tmpdst_len;
 2664|       |#  endif
 2665|      0|                  size_t w;
 2666|       |
 2667|      0|                  if (has_precision)
  ------------------
  |  Branch (2667:23): [True: 0, False: 0]
  ------------------
 2668|      0|                    {
 2669|       |                      /* Use only as many wide characters as needed to produce
 2670|       |                         at most PRECISION bytes, from the left.  */
 2671|      0|#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
 2672|      0|                      mbstate_t state;
 2673|      0|                      memset (&state, '\0', sizeof (mbstate_t));
 2674|      0|#  endif
 2675|      0|                      arg_end = arg;
 2676|      0|                      characters = 0;
 2677|      0|                      while (precision > 0)
  ------------------
  |  Branch (2677:30): [True: 0, False: 0]
  ------------------
 2678|      0|                        {
 2679|      0|                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
 2680|      0|                          int count;
 2681|       |
 2682|      0|                          if (*arg_end == 0)
  ------------------
  |  Branch (2682:31): [True: 0, False: 0]
  ------------------
 2683|       |                            /* Found the terminating null wide character.  */
 2684|      0|                            break;
 2685|      0|#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
 2686|      0|                          count = wcrtomb (cbuf, *arg_end, &state);
 2687|       |#  else
 2688|       |                          count = wctomb (cbuf, *arg_end);
 2689|       |#  endif
 2690|      0|                          if (count < 0)
  ------------------
  |  Branch (2690:31): [True: 0, False: 0]
  ------------------
 2691|      0|                            {
 2692|       |                              /* Cannot convert.  */
 2693|      0|                              if (!(result == resultbuf || result == NULL))
  ------------------
  |  Branch (2693:37): [True: 0, False: 0]
  |  Branch (2693:60): [True: 0, False: 0]
  ------------------
 2694|      0|                                free (result);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 2695|      0|                              if (buf_malloced != NULL)
  ------------------
  |  Branch (2695:35): [True: 0, False: 0]
  ------------------
 2696|      0|                                free (buf_malloced);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 2697|      0|                              CLEANUP ();
  ------------------
  |  | 1799|      0|  if (d.dir != d.direct_alloc_dir)                                      \
  |  |  ------------------
  |  |  |  Branch (1799:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1800|      0|    free (d.dir);                                                       \
  |  |  ------------------
  |  |  |  |   35|      0|#define free    g_free
  |  |  ------------------
  |  | 1801|      0|  if (a.arg != a.direct_alloc_arg)                                      \
  |  |  ------------------
  |  |  |  Branch (1801:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1802|      0|    free (a.arg);
  |  |  ------------------
  |  |  |  |   35|      0|#define free    g_free
  |  |  ------------------
  ------------------
 2698|      0|                              errno = EILSEQ;
 2699|      0|                              return NULL;
 2700|      0|                            }
 2701|      0|                          if (precision < (unsigned int) count)
  ------------------
  |  Branch (2701:31): [True: 0, False: 0]
  ------------------
 2702|      0|                            break;
 2703|      0|                          arg_end++;
 2704|      0|                          characters += count;
 2705|      0|                          precision -= count;
 2706|      0|                        }
 2707|      0|                    }
 2708|      0|#  if DCHAR_IS_TCHAR
 2709|      0|                  else if (has_width)
  ------------------
  |  Branch (2709:28): [True: 0, False: 0]
  ------------------
 2710|       |#  else
 2711|       |                  else
 2712|       |#  endif
 2713|      0|                    {
 2714|       |                      /* Use the entire string, and count the number of
 2715|       |                         bytes.  */
 2716|      0|#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
 2717|      0|                      mbstate_t state;
 2718|      0|                      memset (&state, '\0', sizeof (mbstate_t));
 2719|      0|#  endif
 2720|      0|                      arg_end = arg;
 2721|      0|                      characters = 0;
 2722|      0|                      for (;;)
 2723|      0|                        {
 2724|      0|                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
 2725|      0|                          int count;
 2726|       |
 2727|      0|                          if (*arg_end == 0)
  ------------------
  |  Branch (2727:31): [True: 0, False: 0]
  ------------------
 2728|       |                            /* Found the terminating null wide character.  */
 2729|      0|                            break;
 2730|      0|#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
 2731|      0|                          count = wcrtomb (cbuf, *arg_end, &state);
 2732|       |#  else
 2733|       |                          count = wctomb (cbuf, *arg_end);
 2734|       |#  endif
 2735|      0|                          if (count < 0)
  ------------------
  |  Branch (2735:31): [True: 0, False: 0]
  ------------------
 2736|      0|                            {
 2737|       |                              /* Cannot convert.  */
 2738|      0|                              if (!(result == resultbuf || result == NULL))
  ------------------
  |  Branch (2738:37): [True: 0, False: 0]
  |  Branch (2738:60): [True: 0, False: 0]
  ------------------
 2739|      0|                                free (result);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 2740|      0|                              if (buf_malloced != NULL)
  ------------------
  |  Branch (2740:35): [True: 0, False: 0]
  ------------------
 2741|      0|                                free (buf_malloced);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 2742|      0|                              CLEANUP ();
  ------------------
  |  | 1799|      0|  if (d.dir != d.direct_alloc_dir)                                      \
  |  |  ------------------
  |  |  |  Branch (1799:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1800|      0|    free (d.dir);                                                       \
  |  |  ------------------
  |  |  |  |   35|      0|#define free    g_free
  |  |  ------------------
  |  | 1801|      0|  if (a.arg != a.direct_alloc_arg)                                      \
  |  |  ------------------
  |  |  |  Branch (1801:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1802|      0|    free (a.arg);
  |  |  ------------------
  |  |  |  |   35|      0|#define free    g_free
  |  |  ------------------
  ------------------
 2743|      0|                              errno = EILSEQ;
 2744|      0|                              return NULL;
 2745|      0|                            }
 2746|      0|                          arg_end++;
 2747|      0|                          characters += count;
 2748|      0|                        }
 2749|      0|                    }
 2750|      0|#  if DCHAR_IS_TCHAR
 2751|      0|                  else
 2752|      0|                    {
 2753|       |                      /* Use the entire string.  */
 2754|      0|                      arg_end = arg + local_wcslen (arg);
  ------------------
  |  |  242|      0|#  define local_wcslen wcslen
  ------------------
 2755|       |                      /* The number of bytes doesn't matter.  */
 2756|      0|                      characters = 0;
 2757|      0|                    }
 2758|      0|#  endif
 2759|       |
 2760|       |#  if !DCHAR_IS_TCHAR
 2761|       |                  /* Convert the string into a piece of temporary memory.  */
 2762|       |                  tmpsrc = (TCHAR_T *) malloc (characters * sizeof (TCHAR_T));
 2763|       |                  if (tmpsrc == NULL)
 2764|       |                    goto out_of_memory;
 2765|       |                  {
 2766|       |                    TCHAR_T *tmpptr = tmpsrc;
 2767|       |                    size_t remaining;
 2768|       |#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
 2769|       |                    mbstate_t state;
 2770|       |                    memset (&state, '\0', sizeof (mbstate_t));
 2771|       |#   endif
 2772|       |                    for (remaining = characters; remaining > 0; )
 2773|       |                      {
 2774|       |                        char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
 2775|       |                        int count;
 2776|       |
 2777|       |                        if (*arg == 0)
 2778|       |                          abort ();
 2779|       |#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
 2780|       |                        count = wcrtomb (cbuf, *arg, &state);
 2781|       |#   else
 2782|       |                        count = wctomb (cbuf, *arg);
 2783|       |#   endif
 2784|       |                        if (count <= 0)
 2785|       |                          /* Inconsistency.  */
 2786|       |                          abort ();
 2787|       |                        memcpy (tmpptr, cbuf, count);
 2788|       |                        tmpptr += count;
 2789|       |                        arg++;
 2790|       |                        remaining -= count;
 2791|       |                      }
 2792|       |                    if (!(arg == arg_end))
 2793|       |                      abort ();
 2794|       |                  }
 2795|       |
 2796|       |                  /* Convert from TCHAR_T[] to DCHAR_T[].  */
 2797|       |                  tmpdst =
 2798|       |                    DCHAR_CONV_FROM_ENCODING (locale_charset (),
 2799|       |                                              iconveh_question_mark,
 2800|       |                                              tmpsrc, characters,
 2801|       |                                              NULL,
 2802|       |                                              NULL, &tmpdst_len);
 2803|       |                  if (tmpdst == NULL)
 2804|       |                    {
 2805|       |                      int saved_errno = errno;
 2806|       |                      free (tmpsrc);
 2807|       |                      if (!(result == resultbuf || result == NULL))
 2808|       |                        free (result);
 2809|       |                      if (buf_malloced != NULL)
 2810|       |                        free (buf_malloced);
 2811|       |                      CLEANUP ();
 2812|       |                      errno = saved_errno;
 2813|       |                      return NULL;
 2814|       |                    }
 2815|       |                  free (tmpsrc);
 2816|       |#  endif
 2817|       |
 2818|      0|                  if (has_width)
  ------------------
  |  Branch (2818:23): [True: 0, False: 0]
  ------------------
 2819|      0|                    {
 2820|       |#  if ENABLE_UNISTDIO
 2821|       |                      /* Outside POSIX, it's preferable to compare the width
 2822|       |                         against the number of _characters_ of the converted
 2823|       |                         value.  */
 2824|       |                      w = DCHAR_MBSNLEN (result + length, characters);
 2825|       |#  else
 2826|       |                      /* The width is compared against the number of _bytes_
 2827|       |                         of the converted value, says POSIX.  */
 2828|      0|                      w = characters;
 2829|      0|#  endif
 2830|      0|                    }
 2831|      0|                  else
 2832|       |                    /* w doesn't matter.  */
 2833|      0|                    w = 0;
 2834|       |
 2835|      0|                  if (w < width && !(dp->flags & FLAG_LEFT))
  ------------------
  |  |   34|      0|#define FLAG_LEFT        2      /* - flag */
  ------------------
  |  Branch (2835:23): [True: 0, False: 0]
  |  Branch (2835:36): [True: 0, False: 0]
  ------------------
 2836|      0|                    {
 2837|      0|                      size_t n = width - w;
 2838|      0|                      ENSURE_ALLOCATION (xsum (length, n));
  ------------------
  |  | 1863|      0|    if ((needed) > allocated)                                                \
  |  |  ------------------
  |  |  |  Branch (1863:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1864|      0|      {                                                                      \
  |  | 1865|      0|        size_t memory_size;                                                  \
  |  | 1866|      0|        DCHAR_T *memory;                                                     \
  |  |  ------------------
  |  |  |  |  147|      0|#  define DCHAR_T char
  |  |  ------------------
  |  | 1867|      0|                                                                             \
  |  | 1868|      0|        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1868:22): [True: 0, False: 0]
  |  |  ------------------
  |  | 1869|      0|        if ((needed) > allocated)                                            \
  |  |  ------------------
  |  |  |  Branch (1869:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1870|      0|          allocated = (needed);                                              \
  |  | 1871|      0|        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1872|      0|        if (size_overflow_p (memory_size))                                   \
  |  |  ------------------
  |  |  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1873|      0|          goto out_of_memory;                                                \
  |  | 1874|      0|        if (result == resultbuf || result == NULL)                           \
  |  |  ------------------
  |  |  |  Branch (1874:13): [True: 0, False: 0]
  |  |  |  Branch (1874:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 1875|      0|          memory = (DCHAR_T *) malloc (memory_size);                         \
  |  |  ------------------
  |  |  |  |   33|      0|#define malloc  g_malloc
  |  |  ------------------
  |  | 1876|      0|        else                                                                 \
  |  | 1877|      0|          memory = (DCHAR_T *) realloc (result, memory_size);                \
  |  |  ------------------
  |  |  |  |   34|      0|#define realloc g_realloc
  |  |  ------------------
  |  | 1878|      0|        if (memory == NULL)                                                  \
  |  |  ------------------
  |  |  |  Branch (1878:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1879|      0|          goto out_of_memory;                                                \
  |  | 1880|      0|        if (result == resultbuf && length > 0)                               \
  |  |  ------------------
  |  |  |  Branch (1880:13): [True: 0, False: 0]
  |  |  |  Branch (1880:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 1881|      0|          DCHAR_CPY (memory, result, length);                                \
  |  |  ------------------
  |  |  |  |  153|      0|#  define DCHAR_CPY memcpy
  |  |  ------------------
  |  | 1882|      0|        result = memory;                                                     \
  |  | 1883|      0|      }
  ------------------
 2839|      0|                      DCHAR_SET (result + length, ' ', n);
  ------------------
  |  |  154|      0|#  define DCHAR_SET memset
  ------------------
 2840|      0|                      length += n;
 2841|      0|                    }
 2842|       |
 2843|      0|#  if DCHAR_IS_TCHAR
 2844|      0|                  if (has_precision || has_width)
  ------------------
  |  Branch (2844:23): [True: 0, False: 0]
  |  Branch (2844:40): [True: 0, False: 0]
  ------------------
 2845|      0|                    {
 2846|       |                      /* We know the number of bytes in advance.  */
 2847|      0|                      size_t remaining;
 2848|      0|#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
 2849|      0|                      mbstate_t state;
 2850|      0|                      memset (&state, '\0', sizeof (mbstate_t));
 2851|      0|#   endif
 2852|      0|                      ENSURE_ALLOCATION (xsum (length, characters));
  ------------------
  |  | 1863|      0|    if ((needed) > allocated)                                                \
  |  |  ------------------
  |  |  |  Branch (1863:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1864|      0|      {                                                                      \
  |  | 1865|      0|        size_t memory_size;                                                  \
  |  | 1866|      0|        DCHAR_T *memory;                                                     \
  |  |  ------------------
  |  |  |  |  147|      0|#  define DCHAR_T char
  |  |  ------------------
  |  | 1867|      0|                                                                             \
  |  | 1868|      0|        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1868:22): [True: 0, False: 0]
  |  |  ------------------
  |  | 1869|      0|        if ((needed) > allocated)                                            \
  |  |  ------------------
  |  |  |  Branch (1869:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1870|      0|          allocated = (needed);                                              \
  |  | 1871|      0|        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1872|      0|        if (size_overflow_p (memory_size))                                   \
  |  |  ------------------
  |  |  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1873|      0|          goto out_of_memory;                                                \
  |  | 1874|      0|        if (result == resultbuf || result == NULL)                           \
  |  |  ------------------
  |  |  |  Branch (1874:13): [True: 0, False: 0]
  |  |  |  Branch (1874:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 1875|      0|          memory = (DCHAR_T *) malloc (memory_size);                         \
  |  |  ------------------
  |  |  |  |   33|      0|#define malloc  g_malloc
  |  |  ------------------
  |  | 1876|      0|        else                                                                 \
  |  | 1877|      0|          memory = (DCHAR_T *) realloc (result, memory_size);                \
  |  |  ------------------
  |  |  |  |   34|      0|#define realloc g_realloc
  |  |  ------------------
  |  | 1878|      0|        if (memory == NULL)                                                  \
  |  |  ------------------
  |  |  |  Branch (1878:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1879|      0|          goto out_of_memory;                                                \
  |  | 1880|      0|        if (result == resultbuf && length > 0)                               \
  |  |  ------------------
  |  |  |  Branch (1880:13): [True: 0, False: 0]
  |  |  |  Branch (1880:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 1881|      0|          DCHAR_CPY (memory, result, length);                                \
  |  |  ------------------
  |  |  |  |  153|      0|#  define DCHAR_CPY memcpy
  |  |  ------------------
  |  | 1882|      0|        result = memory;                                                     \
  |  | 1883|      0|      }
  ------------------
 2853|      0|                      for (remaining = characters; remaining > 0; )
  ------------------
  |  Branch (2853:52): [True: 0, False: 0]
  ------------------
 2854|      0|                        {
 2855|      0|                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
 2856|      0|                          int count;
 2857|       |
 2858|      0|                          if (*arg == 0)
  ------------------
  |  Branch (2858:31): [True: 0, False: 0]
  ------------------
 2859|      0|                            abort ();
 2860|      0|#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
 2861|      0|                          count = wcrtomb (cbuf, *arg, &state);
 2862|       |#   else
 2863|       |                          count = wctomb (cbuf, *arg);
 2864|       |#   endif
 2865|      0|                          if (count <= 0)
  ------------------
  |  Branch (2865:31): [True: 0, False: 0]
  ------------------
 2866|       |                            /* Inconsistency.  */
 2867|      0|                            abort ();
 2868|      0|                          memcpy (result + length, cbuf, count);
 2869|      0|                          length += count;
 2870|      0|                          arg++;
 2871|      0|                          remaining -= count;
 2872|      0|                        }
 2873|      0|                      if (!(arg == arg_end))
  ------------------
  |  Branch (2873:27): [True: 0, False: 0]
  ------------------
 2874|      0|                        abort ();
 2875|      0|                    }
 2876|      0|                  else
 2877|      0|                    {
 2878|      0|#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
 2879|      0|                      mbstate_t state;
 2880|      0|                      memset (&state, '\0', sizeof (mbstate_t));
 2881|      0|#   endif
 2882|      0|                      while (arg < arg_end)
  ------------------
  |  Branch (2882:30): [True: 0, False: 0]
  ------------------
 2883|      0|                        {
 2884|      0|                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
 2885|      0|                          int count;
 2886|       |
 2887|      0|                          if (*arg == 0)
  ------------------
  |  Branch (2887:31): [True: 0, False: 0]
  ------------------
 2888|      0|                            abort ();
 2889|      0|#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
 2890|      0|                          count = wcrtomb (cbuf, *arg, &state);
 2891|       |#   else
 2892|       |                          count = wctomb (cbuf, *arg);
 2893|       |#   endif
 2894|      0|                          if (count <= 0)
  ------------------
  |  Branch (2894:31): [True: 0, False: 0]
  ------------------
 2895|      0|                            {
 2896|       |                              /* Cannot convert.  */
 2897|      0|                              if (!(result == resultbuf || result == NULL))
  ------------------
  |  Branch (2897:37): [True: 0, False: 0]
  |  Branch (2897:60): [True: 0, False: 0]
  ------------------
 2898|      0|                                free (result);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 2899|      0|                              if (buf_malloced != NULL)
  ------------------
  |  Branch (2899:35): [True: 0, False: 0]
  ------------------
 2900|      0|                                free (buf_malloced);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 2901|      0|                              CLEANUP ();
  ------------------
  |  | 1799|      0|  if (d.dir != d.direct_alloc_dir)                                      \
  |  |  ------------------
  |  |  |  Branch (1799:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1800|      0|    free (d.dir);                                                       \
  |  |  ------------------
  |  |  |  |   35|      0|#define free    g_free
  |  |  ------------------
  |  | 1801|      0|  if (a.arg != a.direct_alloc_arg)                                      \
  |  |  ------------------
  |  |  |  Branch (1801:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1802|      0|    free (a.arg);
  |  |  ------------------
  |  |  |  |   35|      0|#define free    g_free
  |  |  ------------------
  ------------------
 2902|      0|                              errno = EILSEQ;
 2903|      0|                              return NULL;
 2904|      0|                            }
 2905|      0|                          ENSURE_ALLOCATION (xsum (length, count));
  ------------------
  |  | 1863|      0|    if ((needed) > allocated)                                                \
  |  |  ------------------
  |  |  |  Branch (1863:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1864|      0|      {                                                                      \
  |  | 1865|      0|        size_t memory_size;                                                  \
  |  | 1866|      0|        DCHAR_T *memory;                                                     \
  |  |  ------------------
  |  |  |  |  147|      0|#  define DCHAR_T char
  |  |  ------------------
  |  | 1867|      0|                                                                             \
  |  | 1868|      0|        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1868:22): [True: 0, False: 0]
  |  |  ------------------
  |  | 1869|      0|        if ((needed) > allocated)                                            \
  |  |  ------------------
  |  |  |  Branch (1869:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1870|      0|          allocated = (needed);                                              \
  |  | 1871|      0|        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1872|      0|        if (size_overflow_p (memory_size))                                   \
  |  |  ------------------
  |  |  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1873|      0|          goto out_of_memory;                                                \
  |  | 1874|      0|        if (result == resultbuf || result == NULL)                           \
  |  |  ------------------
  |  |  |  Branch (1874:13): [True: 0, False: 0]
  |  |  |  Branch (1874:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 1875|      0|          memory = (DCHAR_T *) malloc (memory_size);                         \
  |  |  ------------------
  |  |  |  |   33|      0|#define malloc  g_malloc
  |  |  ------------------
  |  | 1876|      0|        else                                                                 \
  |  | 1877|      0|          memory = (DCHAR_T *) realloc (result, memory_size);                \
  |  |  ------------------
  |  |  |  |   34|      0|#define realloc g_realloc
  |  |  ------------------
  |  | 1878|      0|        if (memory == NULL)                                                  \
  |  |  ------------------
  |  |  |  Branch (1878:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1879|      0|          goto out_of_memory;                                                \
  |  | 1880|      0|        if (result == resultbuf && length > 0)                               \
  |  |  ------------------
  |  |  |  Branch (1880:13): [True: 0, False: 0]
  |  |  |  Branch (1880:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 1881|      0|          DCHAR_CPY (memory, result, length);                                \
  |  |  ------------------
  |  |  |  |  153|      0|#  define DCHAR_CPY memcpy
  |  |  ------------------
  |  | 1882|      0|        result = memory;                                                     \
  |  | 1883|      0|      }
  ------------------
 2906|      0|                          memcpy (result + length, cbuf, count);
 2907|      0|                          length += count;
 2908|      0|                          arg++;
 2909|      0|                        }
 2910|      0|                    }
 2911|       |#  else
 2912|       |                  ENSURE_ALLOCATION (xsum (length, tmpdst_len));
 2913|       |                  DCHAR_CPY (result + length, tmpdst, tmpdst_len);
 2914|       |                  free (tmpdst);
 2915|       |                  length += tmpdst_len;
 2916|       |#  endif
 2917|       |
 2918|      0|                  if (w < width && (dp->flags & FLAG_LEFT))
  ------------------
  |  |   34|      0|#define FLAG_LEFT        2      /* - flag */
  ------------------
  |  Branch (2918:23): [True: 0, False: 0]
  |  Branch (2918:36): [True: 0, False: 0]
  ------------------
 2919|      0|                    {
 2920|      0|                      size_t n = width - w;
 2921|      0|                      ENSURE_ALLOCATION (xsum (length, n));
  ------------------
  |  | 1863|      0|    if ((needed) > allocated)                                                \
  |  |  ------------------
  |  |  |  Branch (1863:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1864|      0|      {                                                                      \
  |  | 1865|      0|        size_t memory_size;                                                  \
  |  | 1866|      0|        DCHAR_T *memory;                                                     \
  |  |  ------------------
  |  |  |  |  147|      0|#  define DCHAR_T char
  |  |  ------------------
  |  | 1867|      0|                                                                             \
  |  | 1868|      0|        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1868:22): [True: 0, False: 0]
  |  |  ------------------
  |  | 1869|      0|        if ((needed) > allocated)                                            \
  |  |  ------------------
  |  |  |  Branch (1869:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1870|      0|          allocated = (needed);                                              \
  |  | 1871|      0|        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1872|      0|        if (size_overflow_p (memory_size))                                   \
  |  |  ------------------
  |  |  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1873|      0|          goto out_of_memory;                                                \
  |  | 1874|      0|        if (result == resultbuf || result == NULL)                           \
  |  |  ------------------
  |  |  |  Branch (1874:13): [True: 0, False: 0]
  |  |  |  Branch (1874:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 1875|      0|          memory = (DCHAR_T *) malloc (memory_size);                         \
  |  |  ------------------
  |  |  |  |   33|      0|#define malloc  g_malloc
  |  |  ------------------
  |  | 1876|      0|        else                                                                 \
  |  | 1877|      0|          memory = (DCHAR_T *) realloc (result, memory_size);                \
  |  |  ------------------
  |  |  |  |   34|      0|#define realloc g_realloc
  |  |  ------------------
  |  | 1878|      0|        if (memory == NULL)                                                  \
  |  |  ------------------
  |  |  |  Branch (1878:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1879|      0|          goto out_of_memory;                                                \
  |  | 1880|      0|        if (result == resultbuf && length > 0)                               \
  |  |  ------------------
  |  |  |  Branch (1880:13): [True: 0, False: 0]
  |  |  |  Branch (1880:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 1881|      0|          DCHAR_CPY (memory, result, length);                                \
  |  |  ------------------
  |  |  |  |  153|      0|#  define DCHAR_CPY memcpy
  |  |  ------------------
  |  | 1882|      0|        result = memory;                                                     \
  |  | 1883|      0|      }
  ------------------
 2922|      0|                      DCHAR_SET (result + length, ' ', n);
  ------------------
  |  |  154|      0|#  define DCHAR_SET memset
  ------------------
 2923|      0|                      length += n;
 2924|      0|                    }
 2925|      0|                }
 2926|      0|# endif
 2927|      0|              }
 2928|   392k|#endif
 2929|   392k|#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL
 2930|   392k|            else if ((dp->conversion == 'a' || dp->conversion == 'A')
  ------------------
  |  Branch (2930:23): [True: 0, False: 392k]
  |  Branch (2930:48): [True: 0, False: 392k]
  ------------------
 2931|       |# if !(NEED_PRINTF_DIRECTIVE_A || (NEED_PRINTF_LONG_DOUBLE && NEED_PRINTF_DOUBLE))
 2932|       |                     && (0
 2933|       |#  if NEED_PRINTF_DOUBLE
 2934|       |                         || a.arg[dp->arg_index].type == TYPE_DOUBLE
 2935|       |#  endif
 2936|       |#  if NEED_PRINTF_LONG_DOUBLE
 2937|       |                         || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
 2938|       |#  endif
 2939|       |                        )
 2940|       |# endif
 2941|   392k|                    )
 2942|      0|              {
 2943|      0|                arg_type type = a.arg[dp->arg_index].type;
 2944|      0|                int flags = dp->flags;
 2945|      0|                size_t width;
 2946|      0|                int has_precision;
 2947|      0|                size_t precision;
 2948|      0|                size_t tmp_length;
 2949|      0|                size_t count;
 2950|      0|                DCHAR_T tmpbuf[700];
  ------------------
  |  |  147|      0|#  define DCHAR_T char
  ------------------
 2951|      0|                DCHAR_T *tmp;
  ------------------
  |  |  147|      0|#  define DCHAR_T char
  ------------------
 2952|      0|                DCHAR_T *pad_ptr;
  ------------------
  |  |  147|      0|#  define DCHAR_T char
  ------------------
 2953|      0|                DCHAR_T *p;
  ------------------
  |  |  147|      0|#  define DCHAR_T char
  ------------------
 2954|       |
 2955|      0|                width = 0;
 2956|      0|                if (dp->width_start != dp->width_end)
  ------------------
  |  Branch (2956:21): [True: 0, False: 0]
  ------------------
 2957|      0|                  {
 2958|      0|                    if (dp->width_arg_index != ARG_NONE)
  ------------------
  |  |   44|      0|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (2958:25): [True: 0, False: 0]
  ------------------
 2959|      0|                      {
 2960|      0|                        int arg;
 2961|       |
 2962|      0|                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
  ------------------
  |  Branch (2962:29): [True: 0, False: 0]
  ------------------
 2963|      0|                          abort ();
 2964|      0|                        arg = a.arg[dp->width_arg_index].a.a_int;
 2965|      0|                        width = arg;
 2966|      0|                        if (arg < 0)
  ------------------
  |  Branch (2966:29): [True: 0, False: 0]
  ------------------
 2967|      0|                          {
 2968|       |                            /* "A negative field width is taken as a '-' flag
 2969|       |                                followed by a positive field width."  */
 2970|      0|                            flags |= FLAG_LEFT;
  ------------------
  |  |   34|      0|#define FLAG_LEFT        2      /* - flag */
  ------------------
 2971|      0|                            width = -width;
 2972|      0|                          }
 2973|      0|                      }
 2974|      0|                    else
 2975|      0|                      {
 2976|      0|                        const FCHAR_T *digitp = dp->width_start;
 2977|       |
 2978|      0|                        do
 2979|      0|                          width = xsum (xtimes (width, 10), *digitp++ - '0');
  ------------------
  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2980|      0|                        while (digitp != dp->width_end);
  ------------------
  |  Branch (2980:32): [True: 0, False: 0]
  ------------------
 2981|      0|                      }
 2982|      0|                  }
 2983|       |
 2984|      0|                has_precision = 0;
 2985|      0|                precision = 0;
 2986|      0|                if (dp->precision_start != dp->precision_end)
  ------------------
  |  Branch (2986:21): [True: 0, False: 0]
  ------------------
 2987|      0|                  {
 2988|      0|                    if (dp->precision_arg_index != ARG_NONE)
  ------------------
  |  |   44|      0|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (2988:25): [True: 0, False: 0]
  ------------------
 2989|      0|                      {
 2990|      0|                        int arg;
 2991|       |
 2992|      0|                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
  ------------------
  |  Branch (2992:29): [True: 0, False: 0]
  ------------------
 2993|      0|                          abort ();
 2994|      0|                        arg = a.arg[dp->precision_arg_index].a.a_int;
 2995|       |                        /* "A negative precision is taken as if the precision
 2996|       |                            were omitted."  */
 2997|      0|                        if (arg >= 0)
  ------------------
  |  Branch (2997:29): [True: 0, False: 0]
  ------------------
 2998|      0|                          {
 2999|      0|                            precision = arg;
 3000|      0|                            has_precision = 1;
 3001|      0|                          }
 3002|      0|                      }
 3003|      0|                    else
 3004|      0|                      {
 3005|      0|                        const FCHAR_T *digitp = dp->precision_start + 1;
 3006|       |
 3007|      0|                        precision = 0;
 3008|      0|                        while (digitp != dp->precision_end)
  ------------------
  |  Branch (3008:32): [True: 0, False: 0]
  ------------------
 3009|      0|                          precision = xsum (xtimes (precision, 10), *digitp++ - '0');
  ------------------
  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3010|      0|                        has_precision = 1;
 3011|      0|                      }
 3012|      0|                  }
 3013|       |
 3014|       |                /* Allocate a temporary buffer of sufficient size.  */
 3015|      0|                if (type == TYPE_LONGDOUBLE)
  ------------------
  |  Branch (3015:21): [True: 0, False: 0]
  ------------------
 3016|      0|                  tmp_length =
 3017|      0|                    (unsigned int) ((LDBL_DIG + 1)
 3018|      0|                                    * 0.831 /* decimal -> hexadecimal */
 3019|      0|                                   )
 3020|      0|                    + 1; /* turn floor into ceil */
 3021|      0|                else
 3022|      0|                  tmp_length =
 3023|      0|                    (unsigned int) ((DBL_DIG + 1)
 3024|      0|                                    * 0.831 /* decimal -> hexadecimal */
 3025|      0|                                   )
 3026|      0|                    + 1; /* turn floor into ceil */
 3027|      0|                if (tmp_length < precision)
  ------------------
  |  Branch (3027:21): [True: 0, False: 0]
  ------------------
 3028|      0|                  tmp_length = precision;
 3029|       |                /* Account for sign, decimal point etc. */
 3030|      0|                tmp_length = xsum (tmp_length, 12);
 3031|       |
 3032|      0|                if (tmp_length < width)
  ------------------
  |  Branch (3032:21): [True: 0, False: 0]
  ------------------
 3033|      0|                  tmp_length = width;
 3034|       |
 3035|      0|                tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
 3036|       |
 3037|      0|                if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T))
  ------------------
  |  Branch (3037:21): [True: 0, False: 0]
  ------------------
 3038|      0|                  tmp = tmpbuf;
 3039|      0|                else
 3040|      0|                  {
 3041|      0|                    size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T));
  ------------------
  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3042|       |
 3043|      0|                    if (size_overflow_p (tmp_memsize))
  ------------------
  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3044|       |                      /* Overflow, would lead to out of memory.  */
 3045|      0|                      goto out_of_memory;
 3046|      0|                    tmp = (DCHAR_T *) malloc (tmp_memsize);
  ------------------
  |  |   33|      0|#define malloc  g_malloc
  ------------------
 3047|      0|                    if (tmp == NULL)
  ------------------
  |  Branch (3047:25): [True: 0, False: 0]
  ------------------
 3048|       |                      /* Out of memory.  */
 3049|      0|                      goto out_of_memory;
 3050|      0|                  }
 3051|       |
 3052|      0|                pad_ptr = NULL;
 3053|      0|                p = tmp;
 3054|      0|                if (type == TYPE_LONGDOUBLE)
  ------------------
  |  Branch (3054:21): [True: 0, False: 0]
  ------------------
 3055|      0|                  {
 3056|      0|# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE
 3057|      0|                    long double arg = a.arg[dp->arg_index].a.a_longdouble;
 3058|       |
 3059|      0|                    if (isnanl (arg))
  ------------------
  |  |   31|      0|# define isnanl rpl_isnanl
  ------------------
  |  Branch (3059:25): [True: 0, False: 0]
  ------------------
 3060|      0|                      {
 3061|      0|                        if (dp->conversion == 'A')
  ------------------
  |  Branch (3061:29): [True: 0, False: 0]
  ------------------
 3062|      0|                          {
 3063|      0|                            *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
 3064|      0|                          }
 3065|      0|                        else
 3066|      0|                          {
 3067|      0|                            *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
 3068|      0|                          }
 3069|      0|                      }
 3070|      0|                    else
 3071|      0|                      {
 3072|      0|                        int sign = 0;
 3073|      0|                        DECL_LONG_DOUBLE_ROUNDING
  ------------------
  |  |   84|      0|  fpucw_t oldcw;
  ------------------
 3074|       |
 3075|      0|                        BEGIN_LONG_DOUBLE_ROUNDING ();
  ------------------
  |  |   86|      0|  (void)(oldcw = GET_FPUCW (),                                  \
  |  |  ------------------
  |  |  |  |   74|      0|  ({ fpucw_t _cw;                                               \
  |  |  |  |   75|      0|     __asm__ __volatile__ ("fnstcw %0" : "=m" (*&_cw));         \
  |  |  |  |   76|      0|     _cw;                                                       \
  |  |  |  |   77|      0|   })
  |  |  ------------------
  |  |   87|      0|         SET_FPUCW ((oldcw & ~FPU_PC_MASK) | FPU_PC_EXTENDED))
  |  |  ------------------
  |  |  |  |   79|      0|  (void)({ fpucw_t _ncw = (word);                               \
  |  |  |  |   80|      0|           __asm__ __volatile__ ("fldcw %0" : : "m" (*&_ncw));  \
  |  |  |  |   81|      0|         })
  |  |  ------------------
  ------------------
 3076|       |
 3077|      0|                        if (signbit (arg)) /* arg < 0.0L or negative zero */
  ------------------
  |  Branch (3077:29): [True: 0, False: 0]
  ------------------
 3078|      0|                          {
 3079|      0|                            sign = -1;
 3080|      0|                            arg = -arg;
 3081|      0|                          }
 3082|       |
 3083|      0|                        if (sign < 0)
  ------------------
  |  Branch (3083:29): [True: 0, False: 0]
  ------------------
 3084|      0|                          *p++ = '-';
 3085|      0|                        else if (flags & FLAG_SHOWSIGN)
  ------------------
  |  |   35|      0|#define FLAG_SHOWSIGN    4      /* + flag */
  ------------------
  |  Branch (3085:34): [True: 0, False: 0]
  ------------------
 3086|      0|                          *p++ = '+';
 3087|      0|                        else if (flags & FLAG_SPACE)
  ------------------
  |  |   36|      0|#define FLAG_SPACE       8      /* space flag */
  ------------------
  |  Branch (3087:34): [True: 0, False: 0]
  ------------------
 3088|      0|                          *p++ = ' ';
 3089|       |
 3090|      0|                        if (arg > 0.0L && arg + arg == arg)
  ------------------
  |  Branch (3090:29): [True: 0, False: 0]
  |  Branch (3090:43): [True: 0, False: 0]
  ------------------
 3091|      0|                          {
 3092|      0|                            if (dp->conversion == 'A')
  ------------------
  |  Branch (3092:33): [True: 0, False: 0]
  ------------------
 3093|      0|                              {
 3094|      0|                                *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
 3095|      0|                              }
 3096|      0|                            else
 3097|      0|                              {
 3098|      0|                                *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
 3099|      0|                              }
 3100|      0|                          }
 3101|      0|                        else
 3102|      0|                          {
 3103|      0|                            int exponent;
 3104|      0|                            long double mantissa;
 3105|       |
 3106|      0|                            if (arg > 0.0L)
  ------------------
  |  Branch (3106:33): [True: 0, False: 0]
  ------------------
 3107|      0|                              mantissa = printf_frexpl (arg, &exponent);
 3108|      0|                            else
 3109|      0|                              {
 3110|      0|                                exponent = 0;
 3111|      0|                                mantissa = 0.0L;
 3112|      0|                              }
 3113|       |
 3114|      0|                            if (has_precision
  ------------------
  |  Branch (3114:33): [True: 0, False: 0]
  ------------------
 3115|      0|                                && precision < (unsigned int) ((LDBL_DIG + 1) * 0.831) + 1)
  ------------------
  |  Branch (3115:36): [True: 0, False: 0]
  ------------------
 3116|      0|                              {
 3117|       |                                /* Round the mantissa.  */
 3118|      0|                                long double tail = mantissa;
 3119|      0|                                size_t q;
 3120|       |
 3121|      0|                                for (q = precision; ; q--)
 3122|      0|                                  {
 3123|      0|                                    int digit = (int) tail;
 3124|      0|                                    tail -= digit;
 3125|      0|                                    if (q == 0)
  ------------------
  |  Branch (3125:41): [True: 0, False: 0]
  ------------------
 3126|      0|                                      {
 3127|      0|                                        if (digit & 1 ? tail >= 0.5L : tail > 0.5L)
  ------------------
  |  Branch (3127:45): [True: 0, False: 0]
  |  Branch (3127:45): [True: 0, False: 0]
  ------------------
 3128|      0|                                          tail = 1 - tail;
 3129|      0|                                        else
 3130|      0|                                          tail = - tail;
 3131|      0|                                        break;
 3132|      0|                                      }
 3133|      0|                                    tail *= 16.0L;
 3134|      0|                                  }
 3135|      0|                                if (tail != 0.0L)
  ------------------
  |  Branch (3135:37): [True: 0, False: 0]
  ------------------
 3136|      0|                                  for (q = precision; q > 0; q--)
  ------------------
  |  Branch (3136:55): [True: 0, False: 0]
  ------------------
 3137|      0|                                    tail *= 0.0625L;
 3138|      0|                                mantissa += tail;
 3139|      0|                              }
 3140|       |
 3141|      0|                            *p++ = '0';
 3142|      0|                            *p++ = dp->conversion - 'A' + 'X';
 3143|      0|                            pad_ptr = p;
 3144|      0|                            {
 3145|      0|                              int digit;
 3146|       |
 3147|      0|                              digit = (int) mantissa;
 3148|      0|                              mantissa -= digit;
 3149|      0|                              *p++ = '0' + digit;
 3150|      0|                              if ((flags & FLAG_ALT)
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (3150:35): [True: 0, False: 0]
  ------------------
 3151|      0|                                  || mantissa > 0.0L || precision > 0)
  ------------------
  |  Branch (3151:38): [True: 0, False: 0]
  |  Branch (3151:57): [True: 0, False: 0]
  ------------------
 3152|      0|                                {
 3153|      0|                                  *p++ = decimal_point_char ();
 3154|       |                                  /* This loop terminates because we assume
 3155|       |                                     that FLT_RADIX is a power of 2.  */
 3156|      0|                                  while (mantissa > 0.0L)
  ------------------
  |  Branch (3156:42): [True: 0, False: 0]
  ------------------
 3157|      0|                                    {
 3158|      0|                                      mantissa *= 16.0L;
 3159|      0|                                      digit = (int) mantissa;
 3160|      0|                                      mantissa -= digit;
 3161|      0|                                      *p++ = digit
 3162|      0|                                             + (digit < 10
  ------------------
  |  Branch (3162:49): [True: 0, False: 0]
  ------------------
 3163|      0|                                                ? '0'
 3164|      0|                                                : dp->conversion - 10);
 3165|      0|                                      if (precision > 0)
  ------------------
  |  Branch (3165:43): [True: 0, False: 0]
  ------------------
 3166|      0|                                        precision--;
 3167|      0|                                    }
 3168|      0|                                  while (precision > 0)
  ------------------
  |  Branch (3168:42): [True: 0, False: 0]
  ------------------
 3169|      0|                                    {
 3170|      0|                                      *p++ = '0';
 3171|      0|                                      precision--;
 3172|      0|                                    }
 3173|      0|                                }
 3174|      0|                              }
 3175|      0|                              *p++ = dp->conversion - 'A' + 'P';
 3176|       |#  if WIDE_CHAR_VERSION
 3177|       |                              {
 3178|       |                                static const wchar_t decimal_format[] =
 3179|       |                                  { '%', '+', 'd', '\0' };
 3180|       |                                SNPRINTF (p, 6 + 1, decimal_format, exponent);
 3181|       |                              }
 3182|       |                              while (*p != '\0')
 3183|       |                                p++;
 3184|       |#  else
 3185|      0|                              if (sizeof (DCHAR_T) == 1)
  ------------------
  |  Branch (3185:35): [True: 0, Folded]
  ------------------
 3186|      0|                                {
 3187|      0|                                  sprintf ((char *) p, "%+d", exponent);
 3188|      0|                                  while (*p != '\0')
  ------------------
  |  Branch (3188:42): [True: 0, False: 0]
  ------------------
 3189|      0|                                    p++;
 3190|      0|                                }
 3191|      0|                              else
 3192|      0|                                {
 3193|      0|                                  char expbuf[6 + 1];
 3194|      0|                                  const char *ep;
 3195|      0|                                  sprintf (expbuf, "%+d", exponent);
 3196|      0|                                  for (ep = expbuf; (*p = *ep) != '\0'; ep++)
  ------------------
  |  Branch (3196:53): [True: 0, False: 0]
  ------------------
 3197|      0|                                    p++;
 3198|      0|                                }
 3199|      0|#  endif
 3200|      0|                          }
 3201|       |
 3202|      0|                        END_LONG_DOUBLE_ROUNDING ();
  ------------------
  |  |   89|      0|  SET_FPUCW (oldcw)
  |  |  ------------------
  |  |  |  |   79|      0|  (void)({ fpucw_t _ncw = (word);                               \
  |  |  |  |   80|      0|           __asm__ __volatile__ ("fldcw %0" : : "m" (*&_ncw));  \
  |  |  |  |   81|      0|         })
  |  |  ------------------
  ------------------
 3203|      0|                      }
 3204|       |# else
 3205|       |                    abort ();
 3206|       |# endif
 3207|      0|                  }
 3208|      0|                else
 3209|      0|                  {
 3210|      0|# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE
 3211|      0|                    double arg = a.arg[dp->arg_index].a.a_double;
 3212|       |
 3213|      0|                    if (isnand (arg))
  ------------------
  |  |   23|      0|#  define isnand(x) __builtin_isnan ((double)(x))
  |  |  ------------------
  |  |  |  Branch (23:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3214|      0|                      {
 3215|      0|                        if (dp->conversion == 'A')
  ------------------
  |  Branch (3215:29): [True: 0, False: 0]
  ------------------
 3216|      0|                          {
 3217|      0|                            *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
 3218|      0|                          }
 3219|      0|                        else
 3220|      0|                          {
 3221|      0|                            *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
 3222|      0|                          }
 3223|      0|                      }
 3224|      0|                    else
 3225|      0|                      {
 3226|      0|                        int sign = 0;
 3227|       |
 3228|      0|                        if (signbit (arg)) /* arg < 0.0 or negative zero */
  ------------------
  |  Branch (3228:29): [True: 0, False: 0]
  ------------------
 3229|      0|                          {
 3230|      0|                            sign = -1;
 3231|      0|                            arg = -arg;
 3232|      0|                          }
 3233|       |
 3234|      0|                        if (sign < 0)
  ------------------
  |  Branch (3234:29): [True: 0, False: 0]
  ------------------
 3235|      0|                          *p++ = '-';
 3236|      0|                        else if (flags & FLAG_SHOWSIGN)
  ------------------
  |  |   35|      0|#define FLAG_SHOWSIGN    4      /* + flag */
  ------------------
  |  Branch (3236:34): [True: 0, False: 0]
  ------------------
 3237|      0|                          *p++ = '+';
 3238|      0|                        else if (flags & FLAG_SPACE)
  ------------------
  |  |   36|      0|#define FLAG_SPACE       8      /* space flag */
  ------------------
  |  Branch (3238:34): [True: 0, False: 0]
  ------------------
 3239|      0|                          *p++ = ' ';
 3240|       |
 3241|      0|                        if (arg > 0.0 && arg + arg == arg)
  ------------------
  |  Branch (3241:29): [True: 0, False: 0]
  |  Branch (3241:42): [True: 0, False: 0]
  ------------------
 3242|      0|                          {
 3243|      0|                            if (dp->conversion == 'A')
  ------------------
  |  Branch (3243:33): [True: 0, False: 0]
  ------------------
 3244|      0|                              {
 3245|      0|                                *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
 3246|      0|                              }
 3247|      0|                            else
 3248|      0|                              {
 3249|      0|                                *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
 3250|      0|                              }
 3251|      0|                          }
 3252|      0|                        else
 3253|      0|                          {
 3254|      0|                            int exponent;
 3255|      0|                            double mantissa;
 3256|       |
 3257|      0|                            if (arg > 0.0)
  ------------------
  |  Branch (3257:33): [True: 0, False: 0]
  ------------------
 3258|      0|                              mantissa = printf_frexp (arg, &exponent);
 3259|      0|                            else
 3260|      0|                              {
 3261|      0|                                exponent = 0;
 3262|      0|                                mantissa = 0.0;
 3263|      0|                              }
 3264|       |
 3265|      0|                            if (has_precision
  ------------------
  |  Branch (3265:33): [True: 0, False: 0]
  ------------------
 3266|      0|                                && precision < (unsigned int) ((DBL_DIG + 1) * 0.831) + 1)
  ------------------
  |  Branch (3266:36): [True: 0, False: 0]
  ------------------
 3267|      0|                              {
 3268|       |                                /* Round the mantissa.  */
 3269|      0|                                double tail = mantissa;
 3270|      0|                                size_t q;
 3271|       |
 3272|      0|                                for (q = precision; ; q--)
 3273|      0|                                  {
 3274|      0|                                    int digit = (int) tail;
 3275|      0|                                    tail -= digit;
 3276|      0|                                    if (q == 0)
  ------------------
  |  Branch (3276:41): [True: 0, False: 0]
  ------------------
 3277|      0|                                      {
 3278|      0|                                        if (digit & 1 ? tail >= 0.5 : tail > 0.5)
  ------------------
  |  Branch (3278:45): [True: 0, False: 0]
  |  Branch (3278:45): [True: 0, False: 0]
  ------------------
 3279|      0|                                          tail = 1 - tail;
 3280|      0|                                        else
 3281|      0|                                          tail = - tail;
 3282|      0|                                        break;
 3283|      0|                                      }
 3284|      0|                                    tail *= 16.0;
 3285|      0|                                  }
 3286|      0|                                if (tail != 0.0)
  ------------------
  |  Branch (3286:37): [True: 0, False: 0]
  ------------------
 3287|      0|                                  for (q = precision; q > 0; q--)
  ------------------
  |  Branch (3287:55): [True: 0, False: 0]
  ------------------
 3288|      0|                                    tail *= 0.0625;
 3289|      0|                                mantissa += tail;
 3290|      0|                              }
 3291|       |
 3292|      0|                            *p++ = '0';
 3293|      0|                            *p++ = dp->conversion - 'A' + 'X';
 3294|      0|                            pad_ptr = p;
 3295|      0|                            {
 3296|      0|                              int digit;
 3297|       |
 3298|      0|                              digit = (int) mantissa;
 3299|      0|                              mantissa -= digit;
 3300|      0|                              *p++ = '0' + digit;
 3301|      0|                              if ((flags & FLAG_ALT)
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (3301:35): [True: 0, False: 0]
  ------------------
 3302|      0|                                  || mantissa > 0.0 || precision > 0)
  ------------------
  |  Branch (3302:38): [True: 0, False: 0]
  |  Branch (3302:56): [True: 0, False: 0]
  ------------------
 3303|      0|                                {
 3304|      0|                                  *p++ = decimal_point_char ();
 3305|       |                                  /* This loop terminates because we assume
 3306|       |                                     that FLT_RADIX is a power of 2.  */
 3307|      0|                                  while (mantissa > 0.0)
  ------------------
  |  Branch (3307:42): [True: 0, False: 0]
  ------------------
 3308|      0|                                    {
 3309|      0|                                      mantissa *= 16.0;
 3310|      0|                                      digit = (int) mantissa;
 3311|      0|                                      mantissa -= digit;
 3312|      0|                                      *p++ = digit
 3313|      0|                                             + (digit < 10
  ------------------
  |  Branch (3313:49): [True: 0, False: 0]
  ------------------
 3314|      0|                                                ? '0'
 3315|      0|                                                : dp->conversion - 10);
 3316|      0|                                      if (precision > 0)
  ------------------
  |  Branch (3316:43): [True: 0, False: 0]
  ------------------
 3317|      0|                                        precision--;
 3318|      0|                                    }
 3319|      0|                                  while (precision > 0)
  ------------------
  |  Branch (3319:42): [True: 0, False: 0]
  ------------------
 3320|      0|                                    {
 3321|      0|                                      *p++ = '0';
 3322|      0|                                      precision--;
 3323|      0|                                    }
 3324|      0|                                }
 3325|      0|                              }
 3326|      0|                              *p++ = dp->conversion - 'A' + 'P';
 3327|       |#  if WIDE_CHAR_VERSION
 3328|       |                              {
 3329|       |                                static const wchar_t decimal_format[] =
 3330|       |                                  { '%', '+', 'd', '\0' };
 3331|       |                                SNPRINTF (p, 6 + 1, decimal_format, exponent);
 3332|       |                              }
 3333|       |                              while (*p != '\0')
 3334|       |                                p++;
 3335|       |#  else
 3336|      0|                              if (sizeof (DCHAR_T) == 1)
  ------------------
  |  Branch (3336:35): [True: 0, Folded]
  ------------------
 3337|      0|                                {
 3338|      0|                                  sprintf ((char *) p, "%+d", exponent);
 3339|      0|                                  while (*p != '\0')
  ------------------
  |  Branch (3339:42): [True: 0, False: 0]
  ------------------
 3340|      0|                                    p++;
 3341|      0|                                }
 3342|      0|                              else
 3343|      0|                                {
 3344|      0|                                  char expbuf[6 + 1];
 3345|      0|                                  const char *ep;
 3346|      0|                                  sprintf (expbuf, "%+d", exponent);
 3347|      0|                                  for (ep = expbuf; (*p = *ep) != '\0'; ep++)
  ------------------
  |  Branch (3347:53): [True: 0, False: 0]
  ------------------
 3348|      0|                                    p++;
 3349|      0|                                }
 3350|      0|#  endif
 3351|      0|                          }
 3352|      0|                      }
 3353|       |# else
 3354|       |                    abort ();
 3355|       |# endif
 3356|      0|                  }
 3357|       |
 3358|       |                /* The generated string now extends from tmp to p, with the
 3359|       |                   zero padding insertion point being at pad_ptr.  */
 3360|      0|                count = p - tmp;
 3361|       |
 3362|      0|                if (count < width)
  ------------------
  |  Branch (3362:21): [True: 0, False: 0]
  ------------------
 3363|      0|                  {
 3364|      0|                    size_t pad = width - count;
 3365|      0|                    DCHAR_T *end = p + pad;
  ------------------
  |  |  147|      0|#  define DCHAR_T char
  ------------------
 3366|       |
 3367|      0|                    if (flags & FLAG_LEFT)
  ------------------
  |  |   34|      0|#define FLAG_LEFT        2      /* - flag */
  ------------------
  |  Branch (3367:25): [True: 0, False: 0]
  ------------------
 3368|      0|                      {
 3369|       |                        /* Pad with spaces on the right.  */
 3370|      0|                        for (; pad > 0; pad--)
  ------------------
  |  Branch (3370:32): [True: 0, False: 0]
  ------------------
 3371|      0|                          *p++ = ' ';
 3372|      0|                      }
 3373|      0|                    else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
  ------------------
  |  |   38|      0|#define FLAG_ZERO       32
  ------------------
  |  Branch (3373:30): [True: 0, False: 0]
  |  Branch (3373:53): [True: 0, False: 0]
  ------------------
 3374|      0|                      {
 3375|       |                        /* Pad with zeroes.  */
 3376|      0|                        DCHAR_T *q = end;
  ------------------
  |  |  147|      0|#  define DCHAR_T char
  ------------------
 3377|       |
 3378|      0|                        while (p > pad_ptr)
  ------------------
  |  Branch (3378:32): [True: 0, False: 0]
  ------------------
 3379|      0|                          *--q = *--p;
 3380|      0|                        for (; pad > 0; pad--)
  ------------------
  |  Branch (3380:32): [True: 0, False: 0]
  ------------------
 3381|      0|                          *p++ = '0';
 3382|      0|                      }
 3383|      0|                    else
 3384|      0|                      {
 3385|       |                        /* Pad with spaces on the left.  */
 3386|      0|                        DCHAR_T *q = end;
  ------------------
  |  |  147|      0|#  define DCHAR_T char
  ------------------
 3387|       |
 3388|      0|                        while (p > tmp)
  ------------------
  |  Branch (3388:32): [True: 0, False: 0]
  ------------------
 3389|      0|                          *--q = *--p;
 3390|      0|                        for (; pad > 0; pad--)
  ------------------
  |  Branch (3390:32): [True: 0, False: 0]
  ------------------
 3391|      0|                          *p++ = ' ';
 3392|      0|                      }
 3393|       |
 3394|      0|                    p = end;
 3395|      0|                  }
 3396|       |
 3397|      0|                count = p - tmp;
 3398|       |
 3399|      0|                if (count >= tmp_length)
  ------------------
  |  Branch (3399:21): [True: 0, False: 0]
  ------------------
 3400|       |                  /* tmp_length was incorrectly calculated - fix the
 3401|       |                     code above!  */
 3402|      0|                  abort ();
 3403|       |
 3404|       |                /* Make room for the result.  */
 3405|      0|                if (count >= allocated - length)
  ------------------
  |  Branch (3405:21): [True: 0, False: 0]
  ------------------
 3406|      0|                  {
 3407|      0|                    size_t n = xsum (length, count);
 3408|       |
 3409|      0|                    ENSURE_ALLOCATION (n);
  ------------------
  |  | 1863|      0|    if ((needed) > allocated)                                                \
  |  |  ------------------
  |  |  |  Branch (1863:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1864|      0|      {                                                                      \
  |  | 1865|      0|        size_t memory_size;                                                  \
  |  | 1866|      0|        DCHAR_T *memory;                                                     \
  |  |  ------------------
  |  |  |  |  147|      0|#  define DCHAR_T char
  |  |  ------------------
  |  | 1867|      0|                                                                             \
  |  | 1868|      0|        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1868:22): [True: 0, False: 0]
  |  |  ------------------
  |  | 1869|      0|        if ((needed) > allocated)                                            \
  |  |  ------------------
  |  |  |  Branch (1869:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1870|      0|          allocated = (needed);                                              \
  |  | 1871|      0|        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1872|      0|        if (size_overflow_p (memory_size))                                   \
  |  |  ------------------
  |  |  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1873|      0|          goto out_of_memory;                                                \
  |  | 1874|      0|        if (result == resultbuf || result == NULL)                           \
  |  |  ------------------
  |  |  |  Branch (1874:13): [True: 0, False: 0]
  |  |  |  Branch (1874:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 1875|      0|          memory = (DCHAR_T *) malloc (memory_size);                         \
  |  |  ------------------
  |  |  |  |   33|      0|#define malloc  g_malloc
  |  |  ------------------
  |  | 1876|      0|        else                                                                 \
  |  | 1877|      0|          memory = (DCHAR_T *) realloc (result, memory_size);                \
  |  |  ------------------
  |  |  |  |   34|      0|#define realloc g_realloc
  |  |  ------------------
  |  | 1878|      0|        if (memory == NULL)                                                  \
  |  |  ------------------
  |  |  |  Branch (1878:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1879|      0|          goto out_of_memory;                                                \
  |  | 1880|      0|        if (result == resultbuf && length > 0)                               \
  |  |  ------------------
  |  |  |  Branch (1880:13): [True: 0, False: 0]
  |  |  |  Branch (1880:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 1881|      0|          DCHAR_CPY (memory, result, length);                                \
  |  |  ------------------
  |  |  |  |  153|      0|#  define DCHAR_CPY memcpy
  |  |  ------------------
  |  | 1882|      0|        result = memory;                                                     \
  |  | 1883|      0|      }
  ------------------
 3410|      0|                  }
 3411|       |
 3412|       |                /* Append the result.  */
 3413|      0|                memcpy (result + length, tmp, count * sizeof (DCHAR_T));
 3414|      0|                if (tmp != tmpbuf)
  ------------------
  |  Branch (3414:21): [True: 0, False: 0]
  ------------------
 3415|      0|                  free (tmp);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 3416|      0|                length += count;
 3417|      0|              }
 3418|   392k|#endif
 3419|   392k|#if (NEED_PRINTF_INFINITE_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
 3420|   392k|            else if ((dp->conversion == 'f' || dp->conversion == 'F'
  ------------------
  |  Branch (3420:23): [True: 0, False: 392k]
  |  Branch (3420:48): [True: 0, False: 392k]
  ------------------
 3421|   392k|                      || dp->conversion == 'e' || dp->conversion == 'E'
  ------------------
  |  Branch (3421:26): [True: 0, False: 392k]
  |  Branch (3421:51): [True: 0, False: 392k]
  ------------------
 3422|   392k|                      || dp->conversion == 'g' || dp->conversion == 'G'
  ------------------
  |  Branch (3422:26): [True: 0, False: 392k]
  |  Branch (3422:51): [True: 0, False: 392k]
  ------------------
 3423|   392k|                      || dp->conversion == 'a' || dp->conversion == 'A')
  ------------------
  |  Branch (3423:26): [True: 0, False: 392k]
  |  Branch (3423:51): [True: 0, False: 392k]
  ------------------
 3424|      0|                     && (0
  ------------------
  |  Branch (3424:26): [Folded, False: 0]
  ------------------
 3425|      0|# if NEED_PRINTF_DOUBLE
 3426|      0|                         || a.arg[dp->arg_index].type == TYPE_DOUBLE
  ------------------
  |  Branch (3426:29): [True: 0, False: 0]
  ------------------
 3427|       |# elif NEED_PRINTF_INFINITE_DOUBLE
 3428|       |                         || (a.arg[dp->arg_index].type == TYPE_DOUBLE
 3429|       |                             /* The systems (mingw) which produce wrong output
 3430|       |                                for Inf, -Inf, and NaN also do so for -0.0.
 3431|       |                                Therefore we treat this case here as well.  */
 3432|       |                             && is_infinite_or_zero (a.arg[dp->arg_index].a.a_double))
 3433|       |# endif
 3434|      0|# if NEED_PRINTF_LONG_DOUBLE
 3435|      0|                         || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
  ------------------
  |  Branch (3435:29): [True: 0, False: 0]
  ------------------
 3436|       |# elif NEED_PRINTF_INFINITE_LONG_DOUBLE
 3437|       |                         || (a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
 3438|       |                             /* Some systems produce wrong output for Inf,
 3439|       |                                -Inf, and NaN.  Some systems in this category
 3440|       |                                (IRIX 5.3) also do so for -0.0.  Therefore we
 3441|       |                                treat this case here as well.  */
 3442|       |                             && is_infinite_or_zerol (a.arg[dp->arg_index].a.a_longdouble))
 3443|       |# endif
 3444|      0|                        ))
 3445|      0|              {
 3446|      0|# if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE)
 3447|      0|                arg_type type = a.arg[dp->arg_index].type;
 3448|      0|# endif
 3449|      0|                int flags = dp->flags;
 3450|      0|                size_t width;
 3451|      0|                size_t count;
 3452|      0|                int has_precision;
 3453|      0|                size_t precision;
 3454|      0|                size_t tmp_length;
 3455|      0|                DCHAR_T tmpbuf[700];
  ------------------
  |  |  147|      0|#  define DCHAR_T char
  ------------------
 3456|      0|                DCHAR_T *tmp;
  ------------------
  |  |  147|      0|#  define DCHAR_T char
  ------------------
 3457|      0|                DCHAR_T *pad_ptr;
  ------------------
  |  |  147|      0|#  define DCHAR_T char
  ------------------
 3458|      0|                DCHAR_T *p;
  ------------------
  |  |  147|      0|#  define DCHAR_T char
  ------------------
 3459|       |
 3460|      0|                width = 0;
 3461|      0|                if (dp->width_start != dp->width_end)
  ------------------
  |  Branch (3461:21): [True: 0, False: 0]
  ------------------
 3462|      0|                  {
 3463|      0|                    if (dp->width_arg_index != ARG_NONE)
  ------------------
  |  |   44|      0|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (3463:25): [True: 0, False: 0]
  ------------------
 3464|      0|                      {
 3465|      0|                        int arg;
 3466|       |
 3467|      0|                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
  ------------------
  |  Branch (3467:29): [True: 0, False: 0]
  ------------------
 3468|      0|                          abort ();
 3469|      0|                        arg = a.arg[dp->width_arg_index].a.a_int;
 3470|      0|                        width = arg;
 3471|      0|                        if (arg < 0)
  ------------------
  |  Branch (3471:29): [True: 0, False: 0]
  ------------------
 3472|      0|                          {
 3473|       |                            /* "A negative field width is taken as a '-' flag
 3474|       |                                followed by a positive field width."  */
 3475|      0|                            flags |= FLAG_LEFT;
  ------------------
  |  |   34|      0|#define FLAG_LEFT        2      /* - flag */
  ------------------
 3476|      0|                            width = -width;
 3477|      0|                          }
 3478|      0|                      }
 3479|      0|                    else
 3480|      0|                      {
 3481|      0|                        const FCHAR_T *digitp = dp->width_start;
 3482|       |
 3483|      0|                        do
 3484|      0|                          width = xsum (xtimes (width, 10), *digitp++ - '0');
  ------------------
  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3485|      0|                        while (digitp != dp->width_end);
  ------------------
  |  Branch (3485:32): [True: 0, False: 0]
  ------------------
 3486|      0|                      }
 3487|      0|                  }
 3488|       |
 3489|      0|                has_precision = 0;
 3490|      0|                precision = 0;
 3491|      0|                if (dp->precision_start != dp->precision_end)
  ------------------
  |  Branch (3491:21): [True: 0, False: 0]
  ------------------
 3492|      0|                  {
 3493|      0|                    if (dp->precision_arg_index != ARG_NONE)
  ------------------
  |  |   44|      0|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (3493:25): [True: 0, False: 0]
  ------------------
 3494|      0|                      {
 3495|      0|                        int arg;
 3496|       |
 3497|      0|                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
  ------------------
  |  Branch (3497:29): [True: 0, False: 0]
  ------------------
 3498|      0|                          abort ();
 3499|      0|                        arg = a.arg[dp->precision_arg_index].a.a_int;
 3500|       |                        /* "A negative precision is taken as if the precision
 3501|       |                            were omitted."  */
 3502|      0|                        if (arg >= 0)
  ------------------
  |  Branch (3502:29): [True: 0, False: 0]
  ------------------
 3503|      0|                          {
 3504|      0|                            precision = arg;
 3505|      0|                            has_precision = 1;
 3506|      0|                          }
 3507|      0|                      }
 3508|      0|                    else
 3509|      0|                      {
 3510|      0|                        const FCHAR_T *digitp = dp->precision_start + 1;
 3511|       |
 3512|      0|                        precision = 0;
 3513|      0|                        while (digitp != dp->precision_end)
  ------------------
  |  Branch (3513:32): [True: 0, False: 0]
  ------------------
 3514|      0|                          precision = xsum (xtimes (precision, 10), *digitp++ - '0');
  ------------------
  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3515|      0|                        has_precision = 1;
 3516|      0|                      }
 3517|      0|                  }
 3518|       |
 3519|       |                /* POSIX specifies the default precision to be 6 for %f, %F,
 3520|       |                   %e, %E, but not for %g, %G.  Implementations appear to use
 3521|       |                   the same default precision also for %g, %G.  But for %a, %A,
 3522|       |                   the default precision is 0.  */
 3523|      0|                if (!has_precision)
  ------------------
  |  Branch (3523:21): [True: 0, False: 0]
  ------------------
 3524|      0|                  if (!(dp->conversion == 'a' || dp->conversion == 'A'))
  ------------------
  |  Branch (3524:25): [True: 0, False: 0]
  |  Branch (3524:50): [True: 0, False: 0]
  ------------------
 3525|      0|                    precision = 6;
 3526|       |
 3527|       |                /* Allocate a temporary buffer of sufficient size.  */
 3528|      0|# if NEED_PRINTF_DOUBLE && NEED_PRINTF_LONG_DOUBLE
 3529|      0|                tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : DBL_DIG + 1);
  ------------------
  |  Branch (3529:31): [True: 0, False: 0]
  ------------------
 3530|       |# elif NEED_PRINTF_INFINITE_DOUBLE && NEED_PRINTF_LONG_DOUBLE
 3531|       |                tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : 0);
 3532|       |# elif NEED_PRINTF_LONG_DOUBLE
 3533|       |                tmp_length = LDBL_DIG + 1;
 3534|       |# elif NEED_PRINTF_DOUBLE
 3535|       |                tmp_length = DBL_DIG + 1;
 3536|       |# else
 3537|       |                tmp_length = 0;
 3538|       |# endif
 3539|      0|                if (tmp_length < precision)
  ------------------
  |  Branch (3539:21): [True: 0, False: 0]
  ------------------
 3540|      0|                  tmp_length = precision;
 3541|      0|# if NEED_PRINTF_LONG_DOUBLE
 3542|      0|#  if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
 3543|      0|                if (type == TYPE_LONGDOUBLE)
  ------------------
  |  Branch (3543:21): [True: 0, False: 0]
  ------------------
 3544|      0|#  endif
 3545|      0|                  if (dp->conversion == 'f' || dp->conversion == 'F')
  ------------------
  |  Branch (3545:23): [True: 0, False: 0]
  |  Branch (3545:48): [True: 0, False: 0]
  ------------------
 3546|      0|                    {
 3547|      0|                      long double arg = a.arg[dp->arg_index].a.a_longdouble;
 3548|      0|                      if (!(isnanl (arg) || arg + arg == arg))
  ------------------
  |  |   31|      0|# define isnanl rpl_isnanl
  ------------------
  |  Branch (3548:29): [True: 0, False: 0]
  |  Branch (3548:45): [True: 0, False: 0]
  ------------------
 3549|      0|                        {
 3550|       |                          /* arg is finite and nonzero.  */
 3551|      0|                          int exponent = floorlog10l (arg < 0 ? -arg : arg);
  ------------------
  |  Branch (3551:55): [True: 0, False: 0]
  ------------------
 3552|      0|                          if (exponent >= 0 && tmp_length < exponent + precision)
  ------------------
  |  Branch (3552:31): [True: 0, False: 0]
  |  Branch (3552:48): [True: 0, False: 0]
  ------------------
 3553|      0|                            tmp_length = exponent + precision;
 3554|      0|                        }
 3555|      0|                    }
 3556|      0|# endif
 3557|      0|# if NEED_PRINTF_DOUBLE
 3558|      0|#  if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE
 3559|      0|                if (type == TYPE_DOUBLE)
  ------------------
  |  Branch (3559:21): [True: 0, False: 0]
  ------------------
 3560|      0|#  endif
 3561|      0|                  if (dp->conversion == 'f' || dp->conversion == 'F')
  ------------------
  |  Branch (3561:23): [True: 0, False: 0]
  |  Branch (3561:48): [True: 0, False: 0]
  ------------------
 3562|      0|                    {
 3563|      0|                      double arg = a.arg[dp->arg_index].a.a_double;
 3564|      0|                      if (!(isnand (arg) || arg + arg == arg))
  ------------------
  |  |   23|      0|#  define isnand(x) __builtin_isnan ((double)(x))
  |  |  ------------------
  |  |  |  Branch (23:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3564:45): [True: 0, False: 0]
  ------------------
 3565|      0|                        {
 3566|       |                          /* arg is finite and nonzero.  */
 3567|      0|                          int exponent = floorlog10 (arg < 0 ? -arg : arg);
  ------------------
  |  Branch (3567:54): [True: 0, False: 0]
  ------------------
 3568|      0|                          if (exponent >= 0 && tmp_length < exponent + precision)
  ------------------
  |  Branch (3568:31): [True: 0, False: 0]
  |  Branch (3568:48): [True: 0, False: 0]
  ------------------
 3569|      0|                            tmp_length = exponent + precision;
 3570|      0|                        }
 3571|      0|                    }
 3572|      0|# endif
 3573|       |                /* Account for sign, decimal point etc. */
 3574|      0|                tmp_length = xsum (tmp_length, 12);
 3575|       |
 3576|      0|                if (tmp_length < width)
  ------------------
  |  Branch (3576:21): [True: 0, False: 0]
  ------------------
 3577|      0|                  tmp_length = width;
 3578|       |
 3579|      0|                tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
 3580|       |
 3581|      0|                if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T))
  ------------------
  |  Branch (3581:21): [True: 0, False: 0]
  ------------------
 3582|      0|                  tmp = tmpbuf;
 3583|      0|                else
 3584|      0|                  {
 3585|      0|                    size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T));
  ------------------
  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3586|       |
 3587|      0|                    if (size_overflow_p (tmp_memsize))
  ------------------
  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3588|       |                      /* Overflow, would lead to out of memory.  */
 3589|      0|                      goto out_of_memory;
 3590|      0|                    tmp = (DCHAR_T *) malloc (tmp_memsize);
  ------------------
  |  |   33|      0|#define malloc  g_malloc
  ------------------
 3591|      0|                    if (tmp == NULL)
  ------------------
  |  Branch (3591:25): [True: 0, False: 0]
  ------------------
 3592|       |                      /* Out of memory.  */
 3593|      0|                      goto out_of_memory;
 3594|      0|                  }
 3595|       |
 3596|      0|                pad_ptr = NULL;
 3597|      0|                p = tmp;
 3598|       |
 3599|      0|# if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE
 3600|      0|#  if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
 3601|      0|                if (type == TYPE_LONGDOUBLE)
  ------------------
  |  Branch (3601:21): [True: 0, False: 0]
  ------------------
 3602|      0|#  endif
 3603|      0|                  {
 3604|      0|                    long double arg = a.arg[dp->arg_index].a.a_longdouble;
 3605|       |
 3606|      0|                    if (isnanl (arg))
  ------------------
  |  |   31|      0|# define isnanl rpl_isnanl
  ------------------
  |  Branch (3606:25): [True: 0, False: 0]
  ------------------
 3607|      0|                      {
 3608|      0|                        if (dp->conversion >= 'A' && dp->conversion <= 'Z')
  ------------------
  |  Branch (3608:29): [True: 0, False: 0]
  |  Branch (3608:54): [True: 0, False: 0]
  ------------------
 3609|      0|                          {
 3610|      0|                            *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
 3611|      0|                          }
 3612|      0|                        else
 3613|      0|                          {
 3614|      0|                            *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
 3615|      0|                          }
 3616|      0|                      }
 3617|      0|                    else
 3618|      0|                      {
 3619|      0|                        int sign = 0;
 3620|      0|                        DECL_LONG_DOUBLE_ROUNDING
  ------------------
  |  |   84|      0|  fpucw_t oldcw;
  ------------------
 3621|       |
 3622|      0|                        BEGIN_LONG_DOUBLE_ROUNDING ();
  ------------------
  |  |   86|      0|  (void)(oldcw = GET_FPUCW (),                                  \
  |  |  ------------------
  |  |  |  |   74|      0|  ({ fpucw_t _cw;                                               \
  |  |  |  |   75|      0|     __asm__ __volatile__ ("fnstcw %0" : "=m" (*&_cw));         \
  |  |  |  |   76|      0|     _cw;                                                       \
  |  |  |  |   77|      0|   })
  |  |  ------------------
  |  |   87|      0|         SET_FPUCW ((oldcw & ~FPU_PC_MASK) | FPU_PC_EXTENDED))
  |  |  ------------------
  |  |  |  |   79|      0|  (void)({ fpucw_t _ncw = (word);                               \
  |  |  |  |   80|      0|           __asm__ __volatile__ ("fldcw %0" : : "m" (*&_ncw));  \
  |  |  |  |   81|      0|         })
  |  |  ------------------
  ------------------
 3623|       |
 3624|      0|                        if (signbit (arg)) /* arg < 0.0L or negative zero */
  ------------------
  |  Branch (3624:29): [True: 0, False: 0]
  ------------------
 3625|      0|                          {
 3626|      0|                            sign = -1;
 3627|      0|                            arg = -arg;
 3628|      0|                          }
 3629|       |
 3630|      0|                        if (sign < 0)
  ------------------
  |  Branch (3630:29): [True: 0, False: 0]
  ------------------
 3631|      0|                          *p++ = '-';
 3632|      0|                        else if (flags & FLAG_SHOWSIGN)
  ------------------
  |  |   35|      0|#define FLAG_SHOWSIGN    4      /* + flag */
  ------------------
  |  Branch (3632:34): [True: 0, False: 0]
  ------------------
 3633|      0|                          *p++ = '+';
 3634|      0|                        else if (flags & FLAG_SPACE)
  ------------------
  |  |   36|      0|#define FLAG_SPACE       8      /* space flag */
  ------------------
  |  Branch (3634:34): [True: 0, False: 0]
  ------------------
 3635|      0|                          *p++ = ' ';
 3636|       |
 3637|      0|                        if (arg > 0.0L && arg + arg == arg)
  ------------------
  |  Branch (3637:29): [True: 0, False: 0]
  |  Branch (3637:43): [True: 0, False: 0]
  ------------------
 3638|      0|                          {
 3639|      0|                            if (dp->conversion >= 'A' && dp->conversion <= 'Z')
  ------------------
  |  Branch (3639:33): [True: 0, False: 0]
  |  Branch (3639:58): [True: 0, False: 0]
  ------------------
 3640|      0|                              {
 3641|      0|                                *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
 3642|      0|                              }
 3643|      0|                            else
 3644|      0|                              {
 3645|      0|                                *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
 3646|      0|                              }
 3647|      0|                          }
 3648|      0|                        else
 3649|      0|                          {
 3650|      0|#  if NEED_PRINTF_LONG_DOUBLE
 3651|      0|                            pad_ptr = p;
 3652|       |
 3653|      0|                            if (dp->conversion == 'f' || dp->conversion == 'F')
  ------------------
  |  Branch (3653:33): [True: 0, False: 0]
  |  Branch (3653:58): [True: 0, False: 0]
  ------------------
 3654|      0|                              {
 3655|      0|                                char *digits;
 3656|      0|                                size_t ndigits;
 3657|       |
 3658|      0|                                digits =
 3659|      0|                                  scale10_round_decimal_long_double (arg, precision);
 3660|      0|                                if (digits == NULL)
  ------------------
  |  Branch (3660:37): [True: 0, False: 0]
  ------------------
 3661|      0|                                  {
 3662|      0|                                    END_LONG_DOUBLE_ROUNDING ();
  ------------------
  |  |   89|      0|  SET_FPUCW (oldcw)
  |  |  ------------------
  |  |  |  |   79|      0|  (void)({ fpucw_t _ncw = (word);                               \
  |  |  |  |   80|      0|           __asm__ __volatile__ ("fldcw %0" : : "m" (*&_ncw));  \
  |  |  |  |   81|      0|         })
  |  |  ------------------
  ------------------
 3663|      0|                                    goto out_of_memory;
 3664|      0|                                  }
 3665|      0|                                ndigits = strlen (digits);
 3666|       |
 3667|      0|                                if (ndigits > precision)
  ------------------
  |  Branch (3667:37): [True: 0, False: 0]
  ------------------
 3668|      0|                                  do
 3669|      0|                                    {
 3670|      0|                                      --ndigits;
 3671|      0|                                      *p++ = digits[ndigits];
 3672|      0|                                    }
 3673|      0|                                  while (ndigits > precision);
  ------------------
  |  Branch (3673:42): [True: 0, False: 0]
  ------------------
 3674|      0|                                else
 3675|      0|                                  *p++ = '0';
 3676|       |                                /* Here ndigits <= precision.  */
 3677|      0|                                if ((flags & FLAG_ALT) || precision > 0)
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (3677:37): [True: 0, False: 0]
  |  Branch (3677:59): [True: 0, False: 0]
  ------------------
 3678|      0|                                  {
 3679|      0|                                    *p++ = decimal_point_char ();
 3680|      0|                                    for (; precision > ndigits; precision--)
  ------------------
  |  Branch (3680:44): [True: 0, False: 0]
  ------------------
 3681|      0|                                      *p++ = '0';
 3682|      0|                                    while (ndigits > 0)
  ------------------
  |  Branch (3682:44): [True: 0, False: 0]
  ------------------
 3683|      0|                                      {
 3684|      0|                                        --ndigits;
 3685|      0|                                        *p++ = digits[ndigits];
 3686|      0|                                      }
 3687|      0|                                  }
 3688|       |
 3689|      0|                                free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 3690|      0|                              }
 3691|      0|                            else if (dp->conversion == 'e' || dp->conversion == 'E')
  ------------------
  |  Branch (3691:38): [True: 0, False: 0]
  |  Branch (3691:63): [True: 0, False: 0]
  ------------------
 3692|      0|                              {
 3693|      0|                                int exponent;
 3694|       |
 3695|      0|                                if (arg == 0.0L)
  ------------------
  |  Branch (3695:37): [True: 0, False: 0]
  ------------------
 3696|      0|                                  {
 3697|      0|                                    exponent = 0;
 3698|      0|                                    *p++ = '0';
 3699|      0|                                    if ((flags & FLAG_ALT) || precision > 0)
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (3699:41): [True: 0, False: 0]
  |  Branch (3699:63): [True: 0, False: 0]
  ------------------
 3700|      0|                                      {
 3701|      0|                                        *p++ = decimal_point_char ();
 3702|      0|                                        for (; precision > 0; precision--)
  ------------------
  |  Branch (3702:48): [True: 0, False: 0]
  ------------------
 3703|      0|                                          *p++ = '0';
 3704|      0|                                      }
 3705|      0|                                  }
 3706|      0|                                else
 3707|      0|                                  {
 3708|       |                                    /* arg > 0.0L.  */
 3709|      0|                                    int adjusted;
 3710|      0|                                    char *digits;
 3711|      0|                                    size_t ndigits;
 3712|       |
 3713|      0|                                    exponent = floorlog10l (arg);
 3714|      0|                                    adjusted = 0;
 3715|      0|                                    for (;;)
 3716|      0|                                      {
 3717|      0|                                        digits =
 3718|      0|                                          scale10_round_decimal_long_double (arg,
 3719|      0|                                                                             (int)precision - exponent);
 3720|      0|                                        if (digits == NULL)
  ------------------
  |  Branch (3720:45): [True: 0, False: 0]
  ------------------
 3721|      0|                                          {
 3722|      0|                                            END_LONG_DOUBLE_ROUNDING ();
  ------------------
  |  |   89|      0|  SET_FPUCW (oldcw)
  |  |  ------------------
  |  |  |  |   79|      0|  (void)({ fpucw_t _ncw = (word);                               \
  |  |  |  |   80|      0|           __asm__ __volatile__ ("fldcw %0" : : "m" (*&_ncw));  \
  |  |  |  |   81|      0|         })
  |  |  ------------------
  ------------------
 3723|      0|                                            goto out_of_memory;
 3724|      0|                                          }
 3725|      0|                                        ndigits = strlen (digits);
 3726|       |
 3727|      0|                                        if (ndigits == precision + 1)
  ------------------
  |  Branch (3727:45): [True: 0, False: 0]
  ------------------
 3728|      0|                                          break;
 3729|      0|                                        if (ndigits < precision
  ------------------
  |  Branch (3729:45): [True: 0, False: 0]
  ------------------
 3730|      0|                                            || ndigits > precision + 2)
  ------------------
  |  Branch (3730:48): [True: 0, False: 0]
  ------------------
 3731|       |                                          /* The exponent was not guessed
 3732|       |                                             precisely enough.  */
 3733|      0|                                          abort ();
 3734|      0|                                        if (adjusted)
  ------------------
  |  Branch (3734:45): [True: 0, False: 0]
  ------------------
 3735|       |                                          /* None of two values of exponent is
 3736|       |                                             the right one.  Prevent an endless
 3737|       |                                             loop.  */
 3738|      0|                                          abort ();
 3739|      0|                                        free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 3740|      0|                                        if (ndigits == precision)
  ------------------
  |  Branch (3740:45): [True: 0, False: 0]
  ------------------
 3741|      0|                                          exponent -= 1;
 3742|      0|                                        else
 3743|      0|                                          exponent += 1;
 3744|      0|                                        adjusted = 1;
 3745|      0|                                      }
 3746|       |                                    /* Here ndigits = precision+1.  */
 3747|      0|                                    if (is_borderline (digits, precision))
  ------------------
  |  Branch (3747:41): [True: 0, False: 0]
  ------------------
 3748|      0|                                      {
 3749|       |                                        /* Maybe the exponent guess was too high
 3750|       |                                           and a smaller exponent can be reached
 3751|       |                                           by turning a 10...0 into 9...9x.  */
 3752|      0|                                        char *digits2 =
 3753|      0|                                          scale10_round_decimal_long_double (arg,
 3754|      0|                                                                             (int)precision - exponent + 1);
 3755|      0|                                        if (digits2 == NULL)
  ------------------
  |  Branch (3755:45): [True: 0, False: 0]
  ------------------
 3756|      0|                                          {
 3757|      0|                                            free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 3758|      0|                                            END_LONG_DOUBLE_ROUNDING ();
  ------------------
  |  |   89|      0|  SET_FPUCW (oldcw)
  |  |  ------------------
  |  |  |  |   79|      0|  (void)({ fpucw_t _ncw = (word);                               \
  |  |  |  |   80|      0|           __asm__ __volatile__ ("fldcw %0" : : "m" (*&_ncw));  \
  |  |  |  |   81|      0|         })
  |  |  ------------------
  ------------------
 3759|      0|                                            goto out_of_memory;
 3760|      0|                                          }
 3761|      0|                                        if (strlen (digits2) == precision + 1)
  ------------------
  |  Branch (3761:45): [True: 0, False: 0]
  ------------------
 3762|      0|                                          {
 3763|      0|                                            free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 3764|      0|                                            digits = digits2;
 3765|      0|                                            exponent -= 1;
 3766|      0|                                          }
 3767|      0|                                        else
 3768|      0|                                          free (digits2);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 3769|      0|                                      }
 3770|       |                                    /* Here ndigits = precision+1.  */
 3771|       |
 3772|      0|                                    *p++ = digits[--ndigits];
 3773|      0|                                    if ((flags & FLAG_ALT) || precision > 0)
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (3773:41): [True: 0, False: 0]
  |  Branch (3773:63): [True: 0, False: 0]
  ------------------
 3774|      0|                                      {
 3775|      0|                                        *p++ = decimal_point_char ();
 3776|      0|                                        while (ndigits > 0)
  ------------------
  |  Branch (3776:48): [True: 0, False: 0]
  ------------------
 3777|      0|                                          {
 3778|      0|                                            --ndigits;
 3779|      0|                                            *p++ = digits[ndigits];
 3780|      0|                                          }
 3781|      0|                                      }
 3782|       |
 3783|      0|                                    free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 3784|      0|                                  }
 3785|       |
 3786|      0|                                *p++ = dp->conversion; /* 'e' or 'E' */
 3787|       |#   if WIDE_CHAR_VERSION
 3788|       |                                {
 3789|       |                                  static const wchar_t decimal_format[] =
 3790|       |                                    { '%', '+', '.', '2', 'd', '\0' };
 3791|       |                                  SNPRINTF (p, 6 + 1, decimal_format, exponent);
 3792|       |                                }
 3793|       |                                while (*p != '\0')
 3794|       |                                  p++;
 3795|       |#   else
 3796|      0|                                if (sizeof (DCHAR_T) == 1)
  ------------------
  |  Branch (3796:37): [True: 0, Folded]
  ------------------
 3797|      0|                                  {
 3798|      0|                                    sprintf ((char *) p, "%+.2d", exponent);
 3799|      0|                                    while (*p != '\0')
  ------------------
  |  Branch (3799:44): [True: 0, False: 0]
  ------------------
 3800|      0|                                      p++;
 3801|      0|                                  }
 3802|      0|                                else
 3803|      0|                                  {
 3804|      0|                                    char expbuf[6 + 1];
 3805|      0|                                    const char *ep;
 3806|      0|                                    sprintf (expbuf, "%+.2d", exponent);
 3807|      0|                                    for (ep = expbuf; (*p = *ep) != '\0'; ep++)
  ------------------
  |  Branch (3807:55): [True: 0, False: 0]
  ------------------
 3808|      0|                                      p++;
 3809|      0|                                  }
 3810|      0|#   endif
 3811|      0|                              }
 3812|      0|                            else if (dp->conversion == 'g' || dp->conversion == 'G')
  ------------------
  |  Branch (3812:38): [True: 0, False: 0]
  |  Branch (3812:63): [True: 0, False: 0]
  ------------------
 3813|      0|                              {
 3814|      0|                                if (precision == 0)
  ------------------
  |  Branch (3814:37): [True: 0, False: 0]
  ------------------
 3815|      0|                                  precision = 1;
 3816|       |                                /* precision >= 1.  */
 3817|       |
 3818|      0|                                if (arg == 0.0L)
  ------------------
  |  Branch (3818:37): [True: 0, False: 0]
  ------------------
 3819|       |                                  /* The exponent is 0, >= -4, < precision.
 3820|       |                                     Use fixed-point notation.  */
 3821|      0|                                  {
 3822|      0|                                    size_t ndigits = precision;
 3823|       |                                    /* Number of trailing zeroes that have to be
 3824|       |                                       dropped.  */
 3825|      0|                                    size_t nzeroes =
 3826|      0|                                      (flags & FLAG_ALT ? 0 : precision - 1);
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (3826:40): [True: 0, False: 0]
  ------------------
 3827|       |
 3828|      0|                                    --ndigits;
 3829|      0|                                    *p++ = '0';
 3830|      0|                                    if ((flags & FLAG_ALT) || ndigits > nzeroes)
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (3830:41): [True: 0, False: 0]
  |  Branch (3830:63): [True: 0, False: 0]
  ------------------
 3831|      0|                                      {
 3832|      0|                                        *p++ = decimal_point_char ();
 3833|      0|                                        while (ndigits > nzeroes)
  ------------------
  |  Branch (3833:48): [True: 0, False: 0]
  ------------------
 3834|      0|                                          {
 3835|      0|                                            --ndigits;
 3836|      0|                                            *p++ = '0';
 3837|      0|                                          }
 3838|      0|                                      }
 3839|      0|                                  }
 3840|      0|                                else
 3841|      0|                                  {
 3842|       |                                    /* arg > 0.0L.  */
 3843|      0|                                    int exponent;
 3844|      0|                                    int adjusted;
 3845|      0|                                    char *digits;
 3846|      0|                                    size_t ndigits;
 3847|      0|                                    size_t nzeroes;
 3848|       |
 3849|      0|                                    exponent = floorlog10l (arg);
 3850|      0|                                    adjusted = 0;
 3851|      0|                                    for (;;)
 3852|      0|                                      {
 3853|      0|                                        digits =
 3854|      0|                                          scale10_round_decimal_long_double (arg,
 3855|      0|                                                                             (int)(precision - 1) - exponent);
 3856|      0|                                        if (digits == NULL)
  ------------------
  |  Branch (3856:45): [True: 0, False: 0]
  ------------------
 3857|      0|                                          {
 3858|      0|                                            END_LONG_DOUBLE_ROUNDING ();
  ------------------
  |  |   89|      0|  SET_FPUCW (oldcw)
  |  |  ------------------
  |  |  |  |   79|      0|  (void)({ fpucw_t _ncw = (word);                               \
  |  |  |  |   80|      0|           __asm__ __volatile__ ("fldcw %0" : : "m" (*&_ncw));  \
  |  |  |  |   81|      0|         })
  |  |  ------------------
  ------------------
 3859|      0|                                            goto out_of_memory;
 3860|      0|                                          }
 3861|      0|                                        ndigits = strlen (digits);
 3862|       |
 3863|      0|                                        if (ndigits == precision)
  ------------------
  |  Branch (3863:45): [True: 0, False: 0]
  ------------------
 3864|      0|                                          break;
 3865|      0|                                        if (ndigits < precision - 1
  ------------------
  |  Branch (3865:45): [True: 0, False: 0]
  ------------------
 3866|      0|                                            || ndigits > precision + 1)
  ------------------
  |  Branch (3866:48): [True: 0, False: 0]
  ------------------
 3867|       |                                          /* The exponent was not guessed
 3868|       |                                             precisely enough.  */
 3869|      0|                                          abort ();
 3870|      0|                                        if (adjusted)
  ------------------
  |  Branch (3870:45): [True: 0, False: 0]
  ------------------
 3871|       |                                          /* None of two values of exponent is
 3872|       |                                             the right one.  Prevent an endless
 3873|       |                                             loop.  */
 3874|      0|                                          abort ();
 3875|      0|                                        free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 3876|      0|                                        if (ndigits < precision)
  ------------------
  |  Branch (3876:45): [True: 0, False: 0]
  ------------------
 3877|      0|                                          exponent -= 1;
 3878|      0|                                        else
 3879|      0|                                          exponent += 1;
 3880|      0|                                        adjusted = 1;
 3881|      0|                                      }
 3882|       |                                    /* Here ndigits = precision.  */
 3883|      0|                                    if (is_borderline (digits, precision - 1))
  ------------------
  |  Branch (3883:41): [True: 0, False: 0]
  ------------------
 3884|      0|                                      {
 3885|       |                                        /* Maybe the exponent guess was too high
 3886|       |                                           and a smaller exponent can be reached
 3887|       |                                           by turning a 10...0 into 9...9x.  */
 3888|      0|                                        char *digits2 =
 3889|      0|                                          scale10_round_decimal_long_double (arg,
 3890|      0|                                                                             (int)(precision - 1) - exponent + 1);
 3891|      0|                                        if (digits2 == NULL)
  ------------------
  |  Branch (3891:45): [True: 0, False: 0]
  ------------------
 3892|      0|                                          {
 3893|      0|                                            free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 3894|      0|                                            END_LONG_DOUBLE_ROUNDING ();
  ------------------
  |  |   89|      0|  SET_FPUCW (oldcw)
  |  |  ------------------
  |  |  |  |   79|      0|  (void)({ fpucw_t _ncw = (word);                               \
  |  |  |  |   80|      0|           __asm__ __volatile__ ("fldcw %0" : : "m" (*&_ncw));  \
  |  |  |  |   81|      0|         })
  |  |  ------------------
  ------------------
 3895|      0|                                            goto out_of_memory;
 3896|      0|                                          }
 3897|      0|                                        if (strlen (digits2) == precision)
  ------------------
  |  Branch (3897:45): [True: 0, False: 0]
  ------------------
 3898|      0|                                          {
 3899|      0|                                            free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 3900|      0|                                            digits = digits2;
 3901|      0|                                            exponent -= 1;
 3902|      0|                                          }
 3903|      0|                                        else
 3904|      0|                                          free (digits2);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 3905|      0|                                      }
 3906|       |                                    /* Here ndigits = precision.  */
 3907|       |
 3908|       |                                    /* Determine the number of trailing zeroes
 3909|       |                                       that have to be dropped.  */
 3910|      0|                                    nzeroes = 0;
 3911|      0|                                    if ((flags & FLAG_ALT) == 0)
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (3911:41): [True: 0, False: 0]
  ------------------
 3912|      0|                                      while (nzeroes < ndigits
  ------------------
  |  Branch (3912:46): [True: 0, False: 0]
  ------------------
 3913|      0|                                             && digits[nzeroes] == '0')
  ------------------
  |  Branch (3913:49): [True: 0, False: 0]
  ------------------
 3914|      0|                                        nzeroes++;
 3915|       |
 3916|       |                                    /* The exponent is now determined.  */
 3917|      0|                                    if (exponent >= -4
  ------------------
  |  Branch (3917:41): [True: 0, False: 0]
  ------------------
 3918|      0|                                        && exponent < (long)precision)
  ------------------
  |  Branch (3918:44): [True: 0, False: 0]
  ------------------
 3919|      0|                                      {
 3920|       |                                        /* Fixed-point notation:
 3921|       |                                           max(exponent,0)+1 digits, then the
 3922|       |                                           decimal point, then the remaining
 3923|       |                                           digits without trailing zeroes.  */
 3924|      0|                                        if (exponent >= 0)
  ------------------
  |  Branch (3924:45): [True: 0, False: 0]
  ------------------
 3925|      0|                                          {
 3926|      0|                                            size_t ecount = exponent + 1;
 3927|       |                                            /* Note: count <= precision = ndigits.  */
 3928|      0|                                            for (; ecount > 0; ecount--)
  ------------------
  |  Branch (3928:52): [True: 0, False: 0]
  ------------------
 3929|      0|                                              *p++ = digits[--ndigits];
 3930|      0|                                            if ((flags & FLAG_ALT) || ndigits > nzeroes)
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (3930:49): [True: 0, False: 0]
  |  Branch (3930:71): [True: 0, False: 0]
  ------------------
 3931|      0|                                              {
 3932|      0|                                                *p++ = decimal_point_char ();
 3933|      0|                                                while (ndigits > nzeroes)
  ------------------
  |  Branch (3933:56): [True: 0, False: 0]
  ------------------
 3934|      0|                                                  {
 3935|      0|                                                    --ndigits;
 3936|      0|                                                    *p++ = digits[ndigits];
 3937|      0|                                                  }
 3938|      0|                                              }
 3939|      0|                                          }
 3940|      0|                                        else
 3941|      0|                                          {
 3942|      0|                                            size_t ecount = -exponent - 1;
 3943|      0|                                            *p++ = '0';
 3944|      0|                                            *p++ = decimal_point_char ();
 3945|      0|                                            for (; ecount > 0; ecount--)
  ------------------
  |  Branch (3945:52): [True: 0, False: 0]
  ------------------
 3946|      0|                                              *p++ = '0';
 3947|      0|                                            while (ndigits > nzeroes)
  ------------------
  |  Branch (3947:52): [True: 0, False: 0]
  ------------------
 3948|      0|                                              {
 3949|      0|                                                --ndigits;
 3950|      0|                                                *p++ = digits[ndigits];
 3951|      0|                                              }
 3952|      0|                                          }
 3953|      0|                                      }
 3954|      0|                                    else
 3955|      0|                                      {
 3956|       |                                        /* Exponential notation.  */
 3957|      0|                                        *p++ = digits[--ndigits];
 3958|      0|                                        if ((flags & FLAG_ALT) || ndigits > nzeroes)
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (3958:45): [True: 0, False: 0]
  |  Branch (3958:67): [True: 0, False: 0]
  ------------------
 3959|      0|                                          {
 3960|      0|                                            *p++ = decimal_point_char ();
 3961|      0|                                            while (ndigits > nzeroes)
  ------------------
  |  Branch (3961:52): [True: 0, False: 0]
  ------------------
 3962|      0|                                              {
 3963|      0|                                                --ndigits;
 3964|      0|                                                *p++ = digits[ndigits];
 3965|      0|                                              }
 3966|      0|                                          }
 3967|      0|                                        *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */
 3968|       |#   if WIDE_CHAR_VERSION
 3969|       |                                        {
 3970|       |                                          static const wchar_t decimal_format[] =
 3971|       |                                            { '%', '+', '.', '2', 'd', '\0' };
 3972|       |                                          SNPRINTF (p, 6 + 1, decimal_format, exponent);
 3973|       |                                        }
 3974|       |                                        while (*p != '\0')
 3975|       |                                          p++;
 3976|       |#   else
 3977|      0|                                        if (sizeof (DCHAR_T) == 1)
  ------------------
  |  Branch (3977:45): [True: 0, Folded]
  ------------------
 3978|      0|                                          {
 3979|      0|                                            sprintf ((char *) p, "%+.2d", exponent);
 3980|      0|                                            while (*p != '\0')
  ------------------
  |  Branch (3980:52): [True: 0, False: 0]
  ------------------
 3981|      0|                                              p++;
 3982|      0|                                          }
 3983|      0|                                        else
 3984|      0|                                          {
 3985|      0|                                            char expbuf[6 + 1];
 3986|      0|                                            const char *ep;
 3987|      0|                                            sprintf (expbuf, "%+.2d", exponent);
 3988|      0|                                            for (ep = expbuf; (*p = *ep) != '\0'; ep++)
  ------------------
  |  Branch (3988:63): [True: 0, False: 0]
  ------------------
 3989|      0|                                              p++;
 3990|      0|                                          }
 3991|      0|#   endif
 3992|      0|                                      }
 3993|       |
 3994|      0|                                    free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 3995|      0|                                  }
 3996|      0|                              }
 3997|      0|                            else
 3998|      0|                              abort ();
 3999|       |#  else
 4000|       |                            /* arg is finite.  */
 4001|       |                            if (!(arg == 0.0L))
 4002|       |                              abort ();
 4003|       |
 4004|       |                            pad_ptr = p;
 4005|       |
 4006|       |                            if (dp->conversion == 'f' || dp->conversion == 'F')
 4007|       |                              {
 4008|       |                                *p++ = '0';
 4009|       |                                if ((flags & FLAG_ALT) || precision > 0)
 4010|       |                                  {
 4011|       |                                    *p++ = decimal_point_char ();
 4012|       |                                    for (; precision > 0; precision--)
 4013|       |                                      *p++ = '0';
 4014|       |                                  }
 4015|       |                              }
 4016|       |                            else if (dp->conversion == 'e' || dp->conversion == 'E')
 4017|       |                              {
 4018|       |                                *p++ = '0';
 4019|       |                                if ((flags & FLAG_ALT) || precision > 0)
 4020|       |                                  {
 4021|       |                                    *p++ = decimal_point_char ();
 4022|       |                                    for (; precision > 0; precision--)
 4023|       |                                      *p++ = '0';
 4024|       |                                  }
 4025|       |                                *p++ = dp->conversion; /* 'e' or 'E' */
 4026|       |                                *p++ = '+';
 4027|       |                                *p++ = '0';
 4028|       |                                *p++ = '0';
 4029|       |                              }
 4030|       |                            else if (dp->conversion == 'g' || dp->conversion == 'G')
 4031|       |                              {
 4032|       |                                *p++ = '0';
 4033|       |                                if (flags & FLAG_ALT)
 4034|       |                                  {
 4035|       |                                    size_t ndigits =
 4036|       |                                      (precision > 0 ? precision - 1 : 0);
 4037|       |                                    *p++ = decimal_point_char ();
 4038|       |                                    for (; ndigits > 0; --ndigits)
 4039|       |                                      *p++ = '0';
 4040|       |                                  }
 4041|       |                              }
 4042|       |                            else if (dp->conversion == 'a' || dp->conversion == 'A')
 4043|       |                              {
 4044|       |                                *p++ = '0';
 4045|       |                                *p++ = dp->conversion - 'A' + 'X';
 4046|       |                                pad_ptr = p;
 4047|       |                                *p++ = '0';
 4048|       |                                if ((flags & FLAG_ALT) || precision > 0)
 4049|       |                                  {
 4050|       |                                    *p++ = decimal_point_char ();
 4051|       |                                    for (; precision > 0; precision--)
 4052|       |                                      *p++ = '0';
 4053|       |                                  }
 4054|       |                                *p++ = dp->conversion - 'A' + 'P';
 4055|       |                                *p++ = '+';
 4056|       |                                *p++ = '0';
 4057|       |                              }
 4058|       |                            else
 4059|       |                              abort ();
 4060|       |#  endif
 4061|      0|                          }
 4062|       |
 4063|      0|                        END_LONG_DOUBLE_ROUNDING ();
  ------------------
  |  |   89|      0|  SET_FPUCW (oldcw)
  |  |  ------------------
  |  |  |  |   79|      0|  (void)({ fpucw_t _ncw = (word);                               \
  |  |  |  |   80|      0|           __asm__ __volatile__ ("fldcw %0" : : "m" (*&_ncw));  \
  |  |  |  |   81|      0|         })
  |  |  ------------------
  ------------------
 4064|      0|                      }
 4065|      0|                  }
 4066|      0|#  if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
 4067|      0|                else
 4068|      0|#  endif
 4069|      0|# endif
 4070|      0|# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
 4071|      0|                  {
 4072|      0|                    double arg = a.arg[dp->arg_index].a.a_double;
 4073|       |
 4074|      0|                    if (isnand (arg))
  ------------------
  |  |   23|      0|#  define isnand(x) __builtin_isnan ((double)(x))
  |  |  ------------------
  |  |  |  Branch (23:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4075|      0|                      {
 4076|      0|                        if (dp->conversion >= 'A' && dp->conversion <= 'Z')
  ------------------
  |  Branch (4076:29): [True: 0, False: 0]
  |  Branch (4076:54): [True: 0, False: 0]
  ------------------
 4077|      0|                          {
 4078|      0|                            *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
 4079|      0|                          }
 4080|      0|                        else
 4081|      0|                          {
 4082|      0|                            *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
 4083|      0|                          }
 4084|      0|                      }
 4085|      0|                    else
 4086|      0|                      {
 4087|      0|                        int sign = 0;
 4088|       |
 4089|      0|                        if (signbit (arg)) /* arg < 0.0 or negative zero */
  ------------------
  |  Branch (4089:29): [True: 0, False: 0]
  ------------------
 4090|      0|                          {
 4091|      0|                            sign = -1;
 4092|      0|                            arg = -arg;
 4093|      0|                          }
 4094|       |
 4095|      0|                        if (sign < 0)
  ------------------
  |  Branch (4095:29): [True: 0, False: 0]
  ------------------
 4096|      0|                          *p++ = '-';
 4097|      0|                        else if (flags & FLAG_SHOWSIGN)
  ------------------
  |  |   35|      0|#define FLAG_SHOWSIGN    4      /* + flag */
  ------------------
  |  Branch (4097:34): [True: 0, False: 0]
  ------------------
 4098|      0|                          *p++ = '+';
 4099|      0|                        else if (flags & FLAG_SPACE)
  ------------------
  |  |   36|      0|#define FLAG_SPACE       8      /* space flag */
  ------------------
  |  Branch (4099:34): [True: 0, False: 0]
  ------------------
 4100|      0|                          *p++ = ' ';
 4101|       |
 4102|      0|                        if (arg > 0.0 && arg + arg == arg)
  ------------------
  |  Branch (4102:29): [True: 0, False: 0]
  |  Branch (4102:42): [True: 0, False: 0]
  ------------------
 4103|      0|                          {
 4104|      0|                            if (dp->conversion >= 'A' && dp->conversion <= 'Z')
  ------------------
  |  Branch (4104:33): [True: 0, False: 0]
  |  Branch (4104:58): [True: 0, False: 0]
  ------------------
 4105|      0|                              {
 4106|      0|                                *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
 4107|      0|                              }
 4108|      0|                            else
 4109|      0|                              {
 4110|      0|                                *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
 4111|      0|                              }
 4112|      0|                          }
 4113|      0|                        else
 4114|      0|                          {
 4115|      0|#  if NEED_PRINTF_DOUBLE
 4116|      0|                            pad_ptr = p;
 4117|       |
 4118|      0|                            if (dp->conversion == 'f' || dp->conversion == 'F')
  ------------------
  |  Branch (4118:33): [True: 0, False: 0]
  |  Branch (4118:58): [True: 0, False: 0]
  ------------------
 4119|      0|                              {
 4120|      0|                                char *digits;
 4121|      0|                                size_t ndigits;
 4122|       |
 4123|      0|                                digits =
 4124|      0|                                  scale10_round_decimal_double (arg, precision);
 4125|      0|                                if (digits == NULL)
  ------------------
  |  Branch (4125:37): [True: 0, False: 0]
  ------------------
 4126|      0|                                  goto out_of_memory;
 4127|      0|                                ndigits = strlen (digits);
 4128|       |
 4129|      0|                                if (ndigits > precision)
  ------------------
  |  Branch (4129:37): [True: 0, False: 0]
  ------------------
 4130|      0|                                  do
 4131|      0|                                    {
 4132|      0|                                      --ndigits;
 4133|      0|                                      *p++ = digits[ndigits];
 4134|      0|                                    }
 4135|      0|                                  while (ndigits > precision);
  ------------------
  |  Branch (4135:42): [True: 0, False: 0]
  ------------------
 4136|      0|                                else
 4137|      0|                                  *p++ = '0';
 4138|       |                                /* Here ndigits <= precision.  */
 4139|      0|                                if ((flags & FLAG_ALT) || precision > 0)
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (4139:37): [True: 0, False: 0]
  |  Branch (4139:59): [True: 0, False: 0]
  ------------------
 4140|      0|                                  {
 4141|      0|                                    *p++ = decimal_point_char ();
 4142|      0|                                    for (; precision > ndigits; precision--)
  ------------------
  |  Branch (4142:44): [True: 0, False: 0]
  ------------------
 4143|      0|                                      *p++ = '0';
 4144|      0|                                    while (ndigits > 0)
  ------------------
  |  Branch (4144:44): [True: 0, False: 0]
  ------------------
 4145|      0|                                      {
 4146|      0|                                        --ndigits;
 4147|      0|                                        *p++ = digits[ndigits];
 4148|      0|                                      }
 4149|      0|                                  }
 4150|       |
 4151|      0|                                free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 4152|      0|                              }
 4153|      0|                            else if (dp->conversion == 'e' || dp->conversion == 'E')
  ------------------
  |  Branch (4153:38): [True: 0, False: 0]
  |  Branch (4153:63): [True: 0, False: 0]
  ------------------
 4154|      0|                              {
 4155|      0|                                int exponent;
 4156|       |
 4157|      0|                                if (arg == 0.0)
  ------------------
  |  Branch (4157:37): [True: 0, False: 0]
  ------------------
 4158|      0|                                  {
 4159|      0|                                    exponent = 0;
 4160|      0|                                    *p++ = '0';
 4161|      0|                                    if ((flags & FLAG_ALT) || precision > 0)
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (4161:41): [True: 0, False: 0]
  |  Branch (4161:63): [True: 0, False: 0]
  ------------------
 4162|      0|                                      {
 4163|      0|                                        *p++ = decimal_point_char ();
 4164|      0|                                        for (; precision > 0; precision--)
  ------------------
  |  Branch (4164:48): [True: 0, False: 0]
  ------------------
 4165|      0|                                          *p++ = '0';
 4166|      0|                                      }
 4167|      0|                                  }
 4168|      0|                                else
 4169|      0|                                  {
 4170|       |                                    /* arg > 0.0.  */
 4171|      0|                                    int adjusted;
 4172|      0|                                    char *digits;
 4173|      0|                                    size_t ndigits;
 4174|       |
 4175|      0|                                    exponent = floorlog10 (arg);
 4176|      0|                                    adjusted = 0;
 4177|      0|                                    for (;;)
 4178|      0|                                      {
 4179|      0|                                        digits =
 4180|      0|                                          scale10_round_decimal_double (arg,
 4181|      0|                                                                        (int)precision - exponent);
 4182|      0|                                        if (digits == NULL)
  ------------------
  |  Branch (4182:45): [True: 0, False: 0]
  ------------------
 4183|      0|                                          goto out_of_memory;
 4184|      0|                                        ndigits = strlen (digits);
 4185|       |
 4186|      0|                                        if (ndigits == precision + 1)
  ------------------
  |  Branch (4186:45): [True: 0, False: 0]
  ------------------
 4187|      0|                                          break;
 4188|      0|                                        if (ndigits < precision
  ------------------
  |  Branch (4188:45): [True: 0, False: 0]
  ------------------
 4189|      0|                                            || ndigits > precision + 2)
  ------------------
  |  Branch (4189:48): [True: 0, False: 0]
  ------------------
 4190|       |                                          /* The exponent was not guessed
 4191|       |                                             precisely enough.  */
 4192|      0|                                          abort ();
 4193|      0|                                        if (adjusted)
  ------------------
  |  Branch (4193:45): [True: 0, False: 0]
  ------------------
 4194|       |                                          /* None of two values of exponent is
 4195|       |                                             the right one.  Prevent an endless
 4196|       |                                             loop.  */
 4197|      0|                                          abort ();
 4198|      0|                                        free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 4199|      0|                                        if (ndigits == precision)
  ------------------
  |  Branch (4199:45): [True: 0, False: 0]
  ------------------
 4200|      0|                                          exponent -= 1;
 4201|      0|                                        else
 4202|      0|                                          exponent += 1;
 4203|      0|                                        adjusted = 1;
 4204|      0|                                      }
 4205|       |                                    /* Here ndigits = precision+1.  */
 4206|      0|                                    if (is_borderline (digits, precision))
  ------------------
  |  Branch (4206:41): [True: 0, False: 0]
  ------------------
 4207|      0|                                      {
 4208|       |                                        /* Maybe the exponent guess was too high
 4209|       |                                           and a smaller exponent can be reached
 4210|       |                                           by turning a 10...0 into 9...9x.  */
 4211|      0|                                        char *digits2 =
 4212|      0|                                          scale10_round_decimal_double (arg,
 4213|      0|                                                                        (int)precision - exponent + 1);
 4214|      0|                                        if (digits2 == NULL)
  ------------------
  |  Branch (4214:45): [True: 0, False: 0]
  ------------------
 4215|      0|                                          {
 4216|      0|                                            free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 4217|      0|                                            goto out_of_memory;
 4218|      0|                                          }
 4219|      0|                                        if (strlen (digits2) == precision + 1)
  ------------------
  |  Branch (4219:45): [True: 0, False: 0]
  ------------------
 4220|      0|                                          {
 4221|      0|                                            free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 4222|      0|                                            digits = digits2;
 4223|      0|                                            exponent -= 1;
 4224|      0|                                          }
 4225|      0|                                        else
 4226|      0|                                          free (digits2);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 4227|      0|                                      }
 4228|       |                                    /* Here ndigits = precision+1.  */
 4229|       |
 4230|      0|                                    *p++ = digits[--ndigits];
 4231|      0|                                    if ((flags & FLAG_ALT) || precision > 0)
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (4231:41): [True: 0, False: 0]
  |  Branch (4231:63): [True: 0, False: 0]
  ------------------
 4232|      0|                                      {
 4233|      0|                                        *p++ = decimal_point_char ();
 4234|      0|                                        while (ndigits > 0)
  ------------------
  |  Branch (4234:48): [True: 0, False: 0]
  ------------------
 4235|      0|                                          {
 4236|      0|                                            --ndigits;
 4237|      0|                                            *p++ = digits[ndigits];
 4238|      0|                                          }
 4239|      0|                                      }
 4240|       |
 4241|      0|                                    free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 4242|      0|                                  }
 4243|       |
 4244|      0|                                *p++ = dp->conversion; /* 'e' or 'E' */
 4245|       |#   if WIDE_CHAR_VERSION
 4246|       |                                {
 4247|       |                                  static const wchar_t decimal_format[] =
 4248|       |                                    /* Produce the same number of exponent digits
 4249|       |                                       as the native printf implementation.  */
 4250|       |#    if (defined _WIN32 && FALSE) && ! defined __CYGWIN__
 4251|       |                                    { '%', '+', '.', '3', 'd', '\0' };
 4252|       |#    else
 4253|       |                                    { '%', '+', '.', '2', 'd', '\0' };
 4254|       |#    endif
 4255|       |                                  SNPRINTF (p, 6 + 1, decimal_format, exponent);
 4256|       |                                }
 4257|       |                                while (*p != '\0')
 4258|       |                                  p++;
 4259|       |#   else
 4260|      0|                                {
 4261|      0|                                  static const char decimal_format[] =
 4262|       |                                    /* Produce the same number of exponent digits
 4263|       |                                       as the native printf implementation.  */
 4264|       |#    if (defined _WIN32 && FALSE) && ! defined __CYGWIN__
 4265|       |                                    "%+.3d";
 4266|       |#    else
 4267|      0|                                    "%+.2d";
 4268|      0|#    endif
 4269|      0|                                  if (sizeof (DCHAR_T) == 1)
  ------------------
  |  Branch (4269:39): [True: 0, Folded]
  ------------------
 4270|      0|                                    {
 4271|      0|                                      sprintf ((char *) p, decimal_format, exponent);
 4272|      0|                                      while (*p != '\0')
  ------------------
  |  Branch (4272:46): [True: 0, False: 0]
  ------------------
 4273|      0|                                        p++;
 4274|      0|                                    }
 4275|      0|                                  else
 4276|      0|                                    {
 4277|      0|                                      char expbuf[6 + 1];
 4278|      0|                                      const char *ep;
 4279|      0|                                      sprintf (expbuf, decimal_format, exponent);
 4280|      0|                                      for (ep = expbuf; (*p = *ep) != '\0'; ep++)
  ------------------
  |  Branch (4280:57): [True: 0, False: 0]
  ------------------
 4281|      0|                                        p++;
 4282|      0|                                    }
 4283|      0|                                }
 4284|      0|#   endif
 4285|      0|                              }
 4286|      0|                            else if (dp->conversion == 'g' || dp->conversion == 'G')
  ------------------
  |  Branch (4286:38): [True: 0, False: 0]
  |  Branch (4286:63): [True: 0, False: 0]
  ------------------
 4287|      0|                              {
 4288|      0|                                if (precision == 0)
  ------------------
  |  Branch (4288:37): [True: 0, False: 0]
  ------------------
 4289|      0|                                  precision = 1;
 4290|       |                                /* precision >= 1.  */
 4291|       |
 4292|      0|                                if (arg == 0.0)
  ------------------
  |  Branch (4292:37): [True: 0, False: 0]
  ------------------
 4293|       |                                  /* The exponent is 0, >= -4, < precision.
 4294|       |                                     Use fixed-point notation.  */
 4295|      0|                                  {
 4296|      0|                                    size_t ndigits = precision;
 4297|       |                                    /* Number of trailing zeroes that have to be
 4298|       |                                       dropped.  */
 4299|      0|                                    size_t nzeroes =
 4300|      0|                                      (flags & FLAG_ALT ? 0 : precision - 1);
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (4300:40): [True: 0, False: 0]
  ------------------
 4301|       |
 4302|      0|                                    --ndigits;
 4303|      0|                                    *p++ = '0';
 4304|      0|                                    if ((flags & FLAG_ALT) || ndigits > nzeroes)
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (4304:41): [True: 0, False: 0]
  |  Branch (4304:63): [True: 0, False: 0]
  ------------------
 4305|      0|                                      {
 4306|      0|                                        *p++ = decimal_point_char ();
 4307|      0|                                        while (ndigits > nzeroes)
  ------------------
  |  Branch (4307:48): [True: 0, False: 0]
  ------------------
 4308|      0|                                          {
 4309|      0|                                            --ndigits;
 4310|      0|                                            *p++ = '0';
 4311|      0|                                          }
 4312|      0|                                      }
 4313|      0|                                  }
 4314|      0|                                else
 4315|      0|                                  {
 4316|       |                                    /* arg > 0.0.  */
 4317|      0|                                    int exponent;
 4318|      0|                                    int adjusted;
 4319|      0|                                    char *digits;
 4320|      0|                                    size_t ndigits;
 4321|      0|                                    size_t nzeroes;
 4322|       |
 4323|      0|                                    exponent = floorlog10 (arg);
 4324|      0|                                    adjusted = 0;
 4325|      0|                                    for (;;)
 4326|      0|                                      {
 4327|      0|                                        digits =
 4328|      0|                                          scale10_round_decimal_double (arg,
 4329|      0|                                                                        (int)(precision - 1) - exponent);
 4330|      0|                                        if (digits == NULL)
  ------------------
  |  Branch (4330:45): [True: 0, False: 0]
  ------------------
 4331|      0|                                          goto out_of_memory;
 4332|      0|                                        ndigits = strlen (digits);
 4333|       |
 4334|      0|                                        if (ndigits == precision)
  ------------------
  |  Branch (4334:45): [True: 0, False: 0]
  ------------------
 4335|      0|                                          break;
 4336|      0|                                        if (ndigits < precision - 1
  ------------------
  |  Branch (4336:45): [True: 0, False: 0]
  ------------------
 4337|      0|                                            || ndigits > precision + 1)
  ------------------
  |  Branch (4337:48): [True: 0, False: 0]
  ------------------
 4338|       |                                          /* The exponent was not guessed
 4339|       |                                             precisely enough.  */
 4340|      0|                                          abort ();
 4341|      0|                                        if (adjusted)
  ------------------
  |  Branch (4341:45): [True: 0, False: 0]
  ------------------
 4342|       |                                          /* None of two values of exponent is
 4343|       |                                             the right one.  Prevent an endless
 4344|       |                                             loop.  */
 4345|      0|                                          abort ();
 4346|      0|                                        free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 4347|      0|                                        if (ndigits < precision)
  ------------------
  |  Branch (4347:45): [True: 0, False: 0]
  ------------------
 4348|      0|                                          exponent -= 1;
 4349|      0|                                        else
 4350|      0|                                          exponent += 1;
 4351|      0|                                        adjusted = 1;
 4352|      0|                                      }
 4353|       |                                    /* Here ndigits = precision.  */
 4354|      0|                                    if (is_borderline (digits, precision - 1))
  ------------------
  |  Branch (4354:41): [True: 0, False: 0]
  ------------------
 4355|      0|                                      {
 4356|       |                                        /* Maybe the exponent guess was too high
 4357|       |                                           and a smaller exponent can be reached
 4358|       |                                           by turning a 10...0 into 9...9x.  */
 4359|      0|                                        char *digits2 =
 4360|      0|                                          scale10_round_decimal_double (arg,
 4361|      0|                                                                        (int)(precision - 1) - exponent + 1);
 4362|      0|                                        if (digits2 == NULL)
  ------------------
  |  Branch (4362:45): [True: 0, False: 0]
  ------------------
 4363|      0|                                          {
 4364|      0|                                            free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 4365|      0|                                            goto out_of_memory;
 4366|      0|                                          }
 4367|      0|                                        if (strlen (digits2) == precision)
  ------------------
  |  Branch (4367:45): [True: 0, False: 0]
  ------------------
 4368|      0|                                          {
 4369|      0|                                            free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 4370|      0|                                            digits = digits2;
 4371|      0|                                            exponent -= 1;
 4372|      0|                                          }
 4373|      0|                                        else
 4374|      0|                                          free (digits2);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 4375|      0|                                      }
 4376|       |                                    /* Here ndigits = precision.  */
 4377|       |
 4378|       |                                    /* Determine the number of trailing zeroes
 4379|       |                                       that have to be dropped.  */
 4380|      0|                                    nzeroes = 0;
 4381|      0|                                    if ((flags & FLAG_ALT) == 0)
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (4381:41): [True: 0, False: 0]
  ------------------
 4382|      0|                                      while (nzeroes < ndigits
  ------------------
  |  Branch (4382:46): [True: 0, False: 0]
  ------------------
 4383|      0|                                             && digits[nzeroes] == '0')
  ------------------
  |  Branch (4383:49): [True: 0, False: 0]
  ------------------
 4384|      0|                                        nzeroes++;
 4385|       |
 4386|       |                                    /* The exponent is now determined.  */
 4387|      0|                                    if (exponent >= -4
  ------------------
  |  Branch (4387:41): [True: 0, False: 0]
  ------------------
 4388|      0|                                        && exponent < (long)precision)
  ------------------
  |  Branch (4388:44): [True: 0, False: 0]
  ------------------
 4389|      0|                                      {
 4390|       |                                        /* Fixed-point notation:
 4391|       |                                           max(exponent,0)+1 digits, then the
 4392|       |                                           decimal point, then the remaining
 4393|       |                                           digits without trailing zeroes.  */
 4394|      0|                                        if (exponent >= 0)
  ------------------
  |  Branch (4394:45): [True: 0, False: 0]
  ------------------
 4395|      0|                                          {
 4396|      0|                                            size_t ecount = exponent + 1;
 4397|       |                                            /* Note: ecount <= precision = ndigits.  */
 4398|      0|                                            for (; ecount > 0; ecount--)
  ------------------
  |  Branch (4398:52): [True: 0, False: 0]
  ------------------
 4399|      0|                                              *p++ = digits[--ndigits];
 4400|      0|                                            if ((flags & FLAG_ALT) || ndigits > nzeroes)
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (4400:49): [True: 0, False: 0]
  |  Branch (4400:71): [True: 0, False: 0]
  ------------------
 4401|      0|                                              {
 4402|      0|                                                *p++ = decimal_point_char ();
 4403|      0|                                                while (ndigits > nzeroes)
  ------------------
  |  Branch (4403:56): [True: 0, False: 0]
  ------------------
 4404|      0|                                                  {
 4405|      0|                                                    --ndigits;
 4406|      0|                                                    *p++ = digits[ndigits];
 4407|      0|                                                  }
 4408|      0|                                              }
 4409|      0|                                          }
 4410|      0|                                        else
 4411|      0|                                          {
 4412|      0|                                            size_t ecount = -exponent - 1;
 4413|      0|                                            *p++ = '0';
 4414|      0|                                            *p++ = decimal_point_char ();
 4415|      0|                                            for (; ecount > 0; ecount--)
  ------------------
  |  Branch (4415:52): [True: 0, False: 0]
  ------------------
 4416|      0|                                              *p++ = '0';
 4417|      0|                                            while (ndigits > nzeroes)
  ------------------
  |  Branch (4417:52): [True: 0, False: 0]
  ------------------
 4418|      0|                                              {
 4419|      0|                                                --ndigits;
 4420|      0|                                                *p++ = digits[ndigits];
 4421|      0|                                              }
 4422|      0|                                          }
 4423|      0|                                      }
 4424|      0|                                    else
 4425|      0|                                      {
 4426|       |                                        /* Exponential notation.  */
 4427|      0|                                        *p++ = digits[--ndigits];
 4428|      0|                                        if ((flags & FLAG_ALT) || ndigits > nzeroes)
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (4428:45): [True: 0, False: 0]
  |  Branch (4428:67): [True: 0, False: 0]
  ------------------
 4429|      0|                                          {
 4430|      0|                                            *p++ = decimal_point_char ();
 4431|      0|                                            while (ndigits > nzeroes)
  ------------------
  |  Branch (4431:52): [True: 0, False: 0]
  ------------------
 4432|      0|                                              {
 4433|      0|                                                --ndigits;
 4434|      0|                                                *p++ = digits[ndigits];
 4435|      0|                                              }
 4436|      0|                                          }
 4437|      0|                                        *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */
 4438|       |#   if WIDE_CHAR_VERSION
 4439|       |                                        {
 4440|       |                                          static const wchar_t decimal_format[] =
 4441|       |                                            /* Produce the same number of exponent digits
 4442|       |                                               as the native printf implementation.  */
 4443|       |#    if (defined _WIN32 && FALSE) && ! defined __CYGWIN__
 4444|       |                                            { '%', '+', '.', '3', 'd', '\0' };
 4445|       |#    else
 4446|       |                                            { '%', '+', '.', '2', 'd', '\0' };
 4447|       |#    endif
 4448|       |                                          SNPRINTF (p, 6 + 1, decimal_format, exponent);
 4449|       |                                        }
 4450|       |                                        while (*p != '\0')
 4451|       |                                          p++;
 4452|       |#   else
 4453|      0|                                        {
 4454|      0|                                          static const char decimal_format[] =
 4455|       |                                            /* Produce the same number of exponent digits
 4456|       |                                               as the native printf implementation.  */
 4457|       |#    if (defined _WIN32 && FALSE) && ! defined __CYGWIN__
 4458|       |                                            "%+.3d";
 4459|       |#    else
 4460|      0|                                            "%+.2d";
 4461|      0|#    endif
 4462|      0|                                          if (sizeof (DCHAR_T) == 1)
  ------------------
  |  Branch (4462:47): [True: 0, Folded]
  ------------------
 4463|      0|                                            {
 4464|      0|                                              sprintf ((char *) p, decimal_format, exponent);
 4465|      0|                                              while (*p != '\0')
  ------------------
  |  Branch (4465:54): [True: 0, False: 0]
  ------------------
 4466|      0|                                                p++;
 4467|      0|                                            }
 4468|      0|                                          else
 4469|      0|                                            {
 4470|      0|                                              char expbuf[6 + 1];
 4471|      0|                                              const char *ep;
 4472|      0|                                              sprintf (expbuf, decimal_format, exponent);
 4473|      0|                                              for (ep = expbuf; (*p = *ep) != '\0'; ep++)
  ------------------
  |  Branch (4473:65): [True: 0, False: 0]
  ------------------
 4474|      0|                                                p++;
 4475|      0|                                            }
 4476|      0|                                        }
 4477|      0|#   endif
 4478|      0|                                      }
 4479|       |
 4480|      0|                                    free (digits);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 4481|      0|                                  }
 4482|      0|                              }
 4483|      0|                            else
 4484|      0|                              abort ();
 4485|       |#  else
 4486|       |                            /* arg is finite.  */
 4487|       |                            if (!(arg == 0.0))
 4488|       |                              abort ();
 4489|       |
 4490|       |                            pad_ptr = p;
 4491|       |
 4492|       |                            if (dp->conversion == 'f' || dp->conversion == 'F')
 4493|       |                              {
 4494|       |                                *p++ = '0';
 4495|       |                                if ((flags & FLAG_ALT) || precision > 0)
 4496|       |                                  {
 4497|       |                                    *p++ = decimal_point_char ();
 4498|       |                                    for (; precision > 0; precision--)
 4499|       |                                      *p++ = '0';
 4500|       |                                  }
 4501|       |                              }
 4502|       |                            else if (dp->conversion == 'e' || dp->conversion == 'E')
 4503|       |                              {
 4504|       |                                *p++ = '0';
 4505|       |                                if ((flags & FLAG_ALT) || precision > 0)
 4506|       |                                  {
 4507|       |                                    *p++ = decimal_point_char ();
 4508|       |                                    for (; precision > 0; precision--)
 4509|       |                                      *p++ = '0';
 4510|       |                                  }
 4511|       |                                *p++ = dp->conversion; /* 'e' or 'E' */
 4512|       |                                *p++ = '+';
 4513|       |                                /* Produce the same number of exponent digits as
 4514|       |                                   the native printf implementation.  */
 4515|       |#   if (defined _WIN32 && FALSE) && ! defined __CYGWIN__
 4516|       |                                *p++ = '0';
 4517|       |#   endif
 4518|       |                                *p++ = '0';
 4519|       |                                *p++ = '0';
 4520|       |                              }
 4521|       |                            else if (dp->conversion == 'g' || dp->conversion == 'G')
 4522|       |                              {
 4523|       |                                *p++ = '0';
 4524|       |                                if (flags & FLAG_ALT)
 4525|       |                                  {
 4526|       |                                    size_t ndigits =
 4527|       |                                      (precision > 0 ? precision - 1 : 0);
 4528|       |                                    *p++ = decimal_point_char ();
 4529|       |                                    for (; ndigits > 0; --ndigits)
 4530|       |                                      *p++ = '0';
 4531|       |                                  }
 4532|       |                              }
 4533|       |                            else
 4534|       |                              abort ();
 4535|       |#  endif
 4536|      0|                          }
 4537|      0|                      }
 4538|      0|                  }
 4539|      0|# endif
 4540|       |
 4541|       |                /* The generated string now extends from tmp to p, with the
 4542|       |                   zero padding insertion point being at pad_ptr.  */
 4543|      0|                count = p - tmp;
 4544|       |
 4545|      0|                if (count < width)
  ------------------
  |  Branch (4545:21): [True: 0, False: 0]
  ------------------
 4546|      0|                  {
 4547|      0|                    size_t pad = width - count;
 4548|      0|                    DCHAR_T *end = p + pad;
  ------------------
  |  |  147|      0|#  define DCHAR_T char
  ------------------
 4549|       |
 4550|      0|                    if (flags & FLAG_LEFT)
  ------------------
  |  |   34|      0|#define FLAG_LEFT        2      /* - flag */
  ------------------
  |  Branch (4550:25): [True: 0, False: 0]
  ------------------
 4551|      0|                      {
 4552|       |                        /* Pad with spaces on the right.  */
 4553|      0|                        for (; pad > 0; pad--)
  ------------------
  |  Branch (4553:32): [True: 0, False: 0]
  ------------------
 4554|      0|                          *p++ = ' ';
 4555|      0|                      }
 4556|      0|                    else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
  ------------------
  |  |   38|      0|#define FLAG_ZERO       32
  ------------------
  |  Branch (4556:30): [True: 0, False: 0]
  |  Branch (4556:53): [True: 0, False: 0]
  ------------------
 4557|      0|                      {
 4558|       |                        /* Pad with zeroes.  */
 4559|      0|                        DCHAR_T *q = end;
  ------------------
  |  |  147|      0|#  define DCHAR_T char
  ------------------
 4560|       |
 4561|      0|                        while (p > pad_ptr)
  ------------------
  |  Branch (4561:32): [True: 0, False: 0]
  ------------------
 4562|      0|                          *--q = *--p;
 4563|      0|                        for (; pad > 0; pad--)
  ------------------
  |  Branch (4563:32): [True: 0, False: 0]
  ------------------
 4564|      0|                          *p++ = '0';
 4565|      0|                      }
 4566|      0|                    else
 4567|      0|                      {
 4568|       |                        /* Pad with spaces on the left.  */
 4569|      0|                        DCHAR_T *q = end;
  ------------------
  |  |  147|      0|#  define DCHAR_T char
  ------------------
 4570|       |
 4571|      0|                        while (p > tmp)
  ------------------
  |  Branch (4571:32): [True: 0, False: 0]
  ------------------
 4572|      0|                          *--q = *--p;
 4573|      0|                        for (; pad > 0; pad--)
  ------------------
  |  Branch (4573:32): [True: 0, False: 0]
  ------------------
 4574|      0|                          *p++ = ' ';
 4575|      0|                      }
 4576|       |
 4577|      0|                    p = end;
 4578|      0|                  }
 4579|       |
 4580|      0|                count = p - tmp;
 4581|       |
 4582|      0|                if (count >= tmp_length)
  ------------------
  |  Branch (4582:21): [True: 0, False: 0]
  ------------------
 4583|       |                  /* tmp_length was incorrectly calculated - fix the
 4584|       |                     code above!  */
 4585|      0|                  abort ();
 4586|       |
 4587|       |                /* Make room for the result.  */
 4588|      0|                if (count >= allocated - length)
  ------------------
  |  Branch (4588:21): [True: 0, False: 0]
  ------------------
 4589|      0|                  {
 4590|      0|                    size_t n = xsum (length, count);
 4591|       |
 4592|      0|                    ENSURE_ALLOCATION (n);
  ------------------
  |  | 1863|      0|    if ((needed) > allocated)                                                \
  |  |  ------------------
  |  |  |  Branch (1863:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1864|      0|      {                                                                      \
  |  | 1865|      0|        size_t memory_size;                                                  \
  |  | 1866|      0|        DCHAR_T *memory;                                                     \
  |  |  ------------------
  |  |  |  |  147|      0|#  define DCHAR_T char
  |  |  ------------------
  |  | 1867|      0|                                                                             \
  |  | 1868|      0|        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1868:22): [True: 0, False: 0]
  |  |  ------------------
  |  | 1869|      0|        if ((needed) > allocated)                                            \
  |  |  ------------------
  |  |  |  Branch (1869:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1870|      0|          allocated = (needed);                                              \
  |  | 1871|      0|        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
  |  |  ------------------
  |  |  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1872|      0|        if (size_overflow_p (memory_size))                                   \
  |  |  ------------------
  |  |  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1873|      0|          goto out_of_memory;                                                \
  |  | 1874|      0|        if (result == resultbuf || result == NULL)                           \
  |  |  ------------------
  |  |  |  Branch (1874:13): [True: 0, False: 0]
  |  |  |  Branch (1874:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 1875|      0|          memory = (DCHAR_T *) malloc (memory_size);                         \
  |  |  ------------------
  |  |  |  |   33|      0|#define malloc  g_malloc
  |  |  ------------------
  |  | 1876|      0|        else                                                                 \
  |  | 1877|      0|          memory = (DCHAR_T *) realloc (result, memory_size);                \
  |  |  ------------------
  |  |  |  |   34|      0|#define realloc g_realloc
  |  |  ------------------
  |  | 1878|      0|        if (memory == NULL)                                                  \
  |  |  ------------------
  |  |  |  Branch (1878:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1879|      0|          goto out_of_memory;                                                \
  |  | 1880|      0|        if (result == resultbuf && length > 0)                               \
  |  |  ------------------
  |  |  |  Branch (1880:13): [True: 0, False: 0]
  |  |  |  Branch (1880:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 1881|      0|          DCHAR_CPY (memory, result, length);                                \
  |  |  ------------------
  |  |  |  |  153|      0|#  define DCHAR_CPY memcpy
  |  |  ------------------
  |  | 1882|      0|        result = memory;                                                     \
  |  | 1883|      0|      }
  ------------------
 4593|      0|                  }
 4594|       |
 4595|       |                /* Append the result.  */
 4596|      0|                memcpy (result + length, tmp, count * sizeof (DCHAR_T));
 4597|      0|                if (tmp != tmpbuf)
  ------------------
  |  Branch (4597:21): [True: 0, False: 0]
  ------------------
 4598|      0|                  free (tmp);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 4599|      0|                length += count;
 4600|      0|              }
 4601|   392k|#endif
 4602|   392k|            else
 4603|   392k|              {
 4604|   392k|                arg_type type = a.arg[dp->arg_index].type;
 4605|   392k|                int flags = dp->flags;
 4606|       |#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
 4607|       |                int has_width;
 4608|       |#endif
 4609|   392k|#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
 4610|   392k|                size_t width;
 4611|   392k|#endif
 4612|   392k|#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION
 4613|   392k|                int has_precision;
 4614|   392k|                size_t precision;
 4615|   392k|#endif
 4616|       |#if NEED_PRINTF_UNBOUNDED_PRECISION
 4617|       |                int prec_ourselves;
 4618|       |#else
 4619|   392k|#               define prec_ourselves 0
 4620|   392k|#endif
 4621|       |#if NEED_PRINTF_FLAG_LEFTADJUST
 4622|       |#               define pad_ourselves 1
 4623|       |#elif !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
 4624|       |                int pad_ourselves;
 4625|       |#else
 4626|   392k|#               define pad_ourselves 0
 4627|   392k|#endif
 4628|   392k|                TCHAR_T *fbp;
  ------------------
  |  |  148|   392k|#  define TCHAR_T char
  ------------------
 4629|   392k|                unsigned int prefix_count;
 4630|   392k|                int prefixes[2] IF_LINT (= { 0 });
  ------------------
  |  |  212|   392k|# define IF_LINT(Code) Code
  ------------------
 4631|   392k|                int orig_errno;
 4632|   392k|#if !USE_SNPRINTF
 4633|   392k|                size_t tmp_length;
 4634|   392k|                TCHAR_T tmpbuf[700];
  ------------------
  |  |  148|   392k|#  define TCHAR_T char
  ------------------
 4635|   392k|                TCHAR_T *tmp;
  ------------------
  |  |  148|   392k|#  define TCHAR_T char
  ------------------
 4636|   392k|#endif
 4637|       |
 4638|       |#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
 4639|       |                has_width = 0;
 4640|       |#endif
 4641|   392k|#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
 4642|   392k|                width = 0;
 4643|   392k|                if (dp->width_start != dp->width_end)
  ------------------
  |  Branch (4643:21): [True: 3.01k, False: 389k]
  ------------------
 4644|  3.01k|                  {
 4645|  3.01k|                    if (dp->width_arg_index != ARG_NONE)
  ------------------
  |  |   44|  3.01k|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (4645:25): [True: 0, False: 3.01k]
  ------------------
 4646|      0|                      {
 4647|      0|                        int arg;
 4648|       |
 4649|      0|                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
  ------------------
  |  Branch (4649:29): [True: 0, False: 0]
  ------------------
 4650|      0|                          abort ();
 4651|      0|                        arg = a.arg[dp->width_arg_index].a.a_int;
 4652|      0|                        width = arg;
 4653|      0|                        if (arg < 0)
  ------------------
  |  Branch (4653:29): [True: 0, False: 0]
  ------------------
 4654|      0|                          {
 4655|       |                            /* "A negative field width is taken as a '-' flag
 4656|       |                                followed by a positive field width."  */
 4657|      0|                            flags |= FLAG_LEFT;
  ------------------
  |  |   34|      0|#define FLAG_LEFT        2      /* - flag */
  ------------------
 4658|      0|                            width = -width;
 4659|      0|                          }
 4660|      0|                      }
 4661|  3.01k|                    else
 4662|  3.01k|                      {
 4663|  3.01k|                        const FCHAR_T *digitp = dp->width_start;
 4664|       |
 4665|  3.01k|                        do
 4666|  3.01k|                          width = xsum (xtimes (width, 10), *digitp++ - '0');
  ------------------
  |  |  108|  3.01k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|  3.01k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|  3.01k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|  3.01k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|  3.01k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 3.01k, False: 0]
  |  |  ------------------
  ------------------
 4667|  3.01k|                        while (digitp != dp->width_end);
  ------------------
  |  Branch (4667:32): [True: 0, False: 3.01k]
  ------------------
 4668|  3.01k|                      }
 4669|       |#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
 4670|       |                    has_width = 1;
 4671|       |#endif
 4672|  3.01k|                  }
 4673|   392k|#endif
 4674|       |
 4675|   392k|#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION
 4676|   392k|                has_precision = 0;
 4677|   392k|                precision = 6;
 4678|   392k|                if (dp->precision_start != dp->precision_end)
  ------------------
  |  Branch (4678:21): [True: 0, False: 392k]
  ------------------
 4679|      0|                  {
 4680|      0|                    if (dp->precision_arg_index != ARG_NONE)
  ------------------
  |  |   44|      0|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (4680:25): [True: 0, False: 0]
  ------------------
 4681|      0|                      {
 4682|      0|                        int arg;
 4683|       |
 4684|      0|                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
  ------------------
  |  Branch (4684:29): [True: 0, False: 0]
  ------------------
 4685|      0|                          abort ();
 4686|      0|                        arg = a.arg[dp->precision_arg_index].a.a_int;
 4687|       |                        /* "A negative precision is taken as if the precision
 4688|       |                            were omitted."  */
 4689|      0|                        if (arg >= 0)
  ------------------
  |  Branch (4689:29): [True: 0, False: 0]
  ------------------
 4690|      0|                          {
 4691|      0|                            precision = arg;
 4692|      0|                            has_precision = 1;
 4693|      0|                          }
 4694|      0|                      }
 4695|      0|                    else
 4696|      0|                      {
 4697|      0|                        const FCHAR_T *digitp = dp->precision_start + 1;
 4698|       |
 4699|      0|                        precision = 0;
 4700|      0|                        while (digitp != dp->precision_end)
  ------------------
  |  Branch (4700:32): [True: 0, False: 0]
  ------------------
 4701|      0|                          precision = xsum (xtimes (precision, 10), *digitp++ - '0');
  ------------------
  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4702|      0|                        has_precision = 1;
 4703|      0|                      }
 4704|      0|                  }
 4705|   392k|#endif
 4706|       |
 4707|       |                /* Decide whether to handle the precision ourselves.  */
 4708|       |#if NEED_PRINTF_UNBOUNDED_PRECISION
 4709|       |                switch (dp->conversion)
 4710|       |                  {
 4711|       |                  case 'd': case 'i': case 'u':
 4712|       |                  case 'o':
 4713|       |                  case 'x': case 'X': case 'p':
 4714|       |                    prec_ourselves = has_precision && (precision > 0);
 4715|       |                    break;
 4716|       |                  default:
 4717|       |                    prec_ourselves = 0;
 4718|       |                    break;
 4719|       |                  }
 4720|       |#endif
 4721|       |
 4722|       |                /* Decide whether to perform the padding ourselves.  */
 4723|       |#if !NEED_PRINTF_FLAG_LEFTADJUST && (!DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION)
 4724|       |                switch (dp->conversion)
 4725|       |                  {
 4726|       |# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO
 4727|       |                  /* If we need conversion from TCHAR_T[] to DCHAR_T[], we need
 4728|       |                     to perform the padding after this conversion.  Functions
 4729|       |                     with unistdio extensions perform the padding based on
 4730|       |                     character count rather than element count.  */
 4731|       |                  case 'c': case 's':
 4732|       |# endif
 4733|       |# if NEED_PRINTF_FLAG_ZERO
 4734|       |                  case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
 4735|       |                  case 'a': case 'A':
 4736|       |# endif
 4737|       |                    pad_ourselves = 1;
 4738|       |                    break;
 4739|       |                  default:
 4740|       |                    pad_ourselves = prec_ourselves;
 4741|       |                    break;
 4742|       |                  }
 4743|       |#endif
 4744|       |
 4745|   392k|#if !USE_SNPRINTF
 4746|       |                /* Allocate a temporary buffer of sufficient size for calling
 4747|       |                   sprintf.  */
 4748|   392k|                tmp_length =
 4749|   392k|                  MAX_ROOM_NEEDED (&a, dp->arg_index, dp->conversion, type,
  ------------------
  |  | 1543|   392k|#  define MAX_ROOM_NEEDED max_room_needed
  ------------------
 4750|   392k|                                   flags, width, has_precision, precision,
 4751|   392k|                                   pad_ourselves);
  ------------------
  |  | 4626|   392k|#               define pad_ourselves 0
  ------------------
 4752|       |
 4753|   392k|                if (tmp_length <= sizeof (tmpbuf) / sizeof (TCHAR_T))
  ------------------
  |  Branch (4753:21): [True: 392k, False: 0]
  ------------------
 4754|   392k|                  tmp = tmpbuf;
 4755|      0|                else
 4756|      0|                  {
 4757|      0|                    size_t tmp_memsize = xtimes (tmp_length, sizeof (TCHAR_T));
  ------------------
  |  |  108|      0|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4758|       |
 4759|      0|                    if (size_overflow_p (tmp_memsize))
  ------------------
  |  |  112|      0|  ((SIZE) == G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (112:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4760|       |                      /* Overflow, would lead to out of memory.  */
 4761|      0|                      goto out_of_memory;
 4762|      0|                    tmp = (TCHAR_T *) malloc (tmp_memsize);
  ------------------
  |  |   33|      0|#define malloc  g_malloc
  ------------------
 4763|      0|                    if (tmp == NULL)
  ------------------
  |  Branch (4763:25): [True: 0, False: 0]
  ------------------
 4764|       |                      /* Out of memory.  */
 4765|      0|                      goto out_of_memory;
 4766|      0|                  }
 4767|   392k|#endif
 4768|       |
 4769|       |                /* Construct the format string for calling snprintf or
 4770|       |                   sprintf.  */
 4771|   392k|                fbp = buf;
 4772|   392k|                *fbp++ = '%';
 4773|       |#if NEED_PRINTF_FLAG_GROUPING
 4774|       |                /* The underlying implementation doesn't support the ' flag.
 4775|       |                   Produce no grouping characters in this case; this is
 4776|       |                   acceptable because the grouping is locale dependent.  */
 4777|       |#else
 4778|   392k|                if (flags & FLAG_GROUP)
  ------------------
  |  |   33|   392k|#define FLAG_GROUP       1      /* ' flag */
  ------------------
  |  Branch (4778:21): [True: 0, False: 392k]
  ------------------
 4779|      0|                  *fbp++ = '\'';
 4780|   392k|#endif
 4781|   392k|                if (flags & FLAG_LEFT)
  ------------------
  |  |   34|   392k|#define FLAG_LEFT        2      /* - flag */
  ------------------
  |  Branch (4781:21): [True: 0, False: 392k]
  ------------------
 4782|      0|                  *fbp++ = '-';
 4783|   392k|                if (flags & FLAG_SHOWSIGN)
  ------------------
  |  |   35|   392k|#define FLAG_SHOWSIGN    4      /* + flag */
  ------------------
  |  Branch (4783:21): [True: 0, False: 392k]
  ------------------
 4784|      0|                  *fbp++ = '+';
 4785|   392k|                if (flags & FLAG_SPACE)
  ------------------
  |  |   36|   392k|#define FLAG_SPACE       8      /* space flag */
  ------------------
  |  Branch (4785:21): [True: 0, False: 392k]
  ------------------
 4786|      0|                  *fbp++ = ' ';
 4787|   392k|                if (flags & FLAG_ALT)
  ------------------
  |  |   37|   392k|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (4787:21): [True: 0, False: 392k]
  ------------------
 4788|      0|                  *fbp++ = '#';
 4789|   392k|#if __GLIBC__ >= 2 && !defined __UCLIBC__
 4790|   392k|                if (flags & FLAG_LOCALIZED)
  ------------------
  |  |   40|   392k|# define FLAG_LOCALIZED 64      /* I flag, uses localized digits */
  ------------------
  |  Branch (4790:21): [True: 0, False: 392k]
  ------------------
 4791|      0|                  *fbp++ = 'I';
 4792|   392k|#endif
 4793|   392k|                if (!pad_ourselves)
  ------------------
  |  | 4626|   392k|#               define pad_ourselves 0
  ------------------
  |  Branch (4793:21): [True: 392k, Folded]
  ------------------
 4794|   392k|                  {
 4795|   392k|                    if (flags & FLAG_ZERO)
  ------------------
  |  |   38|   392k|#define FLAG_ZERO       32
  ------------------
  |  Branch (4795:25): [True: 3.01k, False: 389k]
  ------------------
 4796|  3.01k|                      *fbp++ = '0';
 4797|   392k|                    if (dp->width_start != dp->width_end)
  ------------------
  |  Branch (4797:25): [True: 3.01k, False: 389k]
  ------------------
 4798|  3.01k|                      {
 4799|  3.01k|                        size_t n = dp->width_end - dp->width_start;
 4800|       |                        /* The width specification is known to consist only
 4801|       |                           of standard ASCII characters.  */
 4802|  3.01k|                        if (sizeof (FCHAR_T) == sizeof (TCHAR_T))
  ------------------
  |  Branch (4802:29): [True: 3.01k, Folded]
  ------------------
 4803|  3.01k|                          {
 4804|  3.01k|                            memcpy (fbp, dp->width_start, n * sizeof (TCHAR_T));
 4805|  3.01k|                            fbp += n;
 4806|  3.01k|                          }
 4807|      0|                        else
 4808|      0|                          {
 4809|      0|                            const FCHAR_T *mp = dp->width_start;
 4810|      0|                            do
 4811|      0|                              *fbp++ = *mp++;
 4812|      0|                            while (--n > 0);
  ------------------
  |  Branch (4812:36): [True: 0, False: 0]
  ------------------
 4813|      0|                          }
 4814|  3.01k|                      }
 4815|   392k|                  }
 4816|   392k|                if (!prec_ourselves)
  ------------------
  |  | 4619|   392k|#               define prec_ourselves 0
  ------------------
  |  Branch (4816:21): [True: 392k, Folded]
  ------------------
 4817|   392k|                  {
 4818|   392k|                    if (dp->precision_start != dp->precision_end)
  ------------------
  |  Branch (4818:25): [True: 0, False: 392k]
  ------------------
 4819|      0|                      {
 4820|      0|                        size_t n = dp->precision_end - dp->precision_start;
 4821|       |                        /* The precision specification is known to consist only
 4822|       |                           of standard ASCII characters.  */
 4823|      0|                        if (sizeof (FCHAR_T) == sizeof (TCHAR_T))
  ------------------
  |  Branch (4823:29): [True: 0, Folded]
  ------------------
 4824|      0|                          {
 4825|      0|                            memcpy (fbp, dp->precision_start, n * sizeof (TCHAR_T));
 4826|      0|                            fbp += n;
 4827|      0|                          }
 4828|      0|                        else
 4829|      0|                          {
 4830|      0|                            const FCHAR_T *mp = dp->precision_start;
 4831|      0|                            do
 4832|      0|                              *fbp++ = *mp++;
 4833|      0|                            while (--n > 0);
  ------------------
  |  Branch (4833:36): [True: 0, False: 0]
  ------------------
 4834|      0|                          }
 4835|      0|                      }
 4836|   392k|                  }
 4837|       |
 4838|   392k|                switch (type)
 4839|   392k|                  {
 4840|      0|#if HAVE_LONG_LONG
 4841|      0|                  case TYPE_LONGLONGINT:
  ------------------
  |  Branch (4841:19): [True: 0, False: 392k]
  ------------------
 4842|      0|                  case TYPE_ULONGLONGINT:
  ------------------
  |  Branch (4842:19): [True: 0, False: 392k]
  ------------------
 4843|       |# if (defined _WIN32 && FALSE) && ! defined __CYGWIN__
 4844|       |                    *fbp++ = 'I';
 4845|       |                    *fbp++ = '6';
 4846|       |                    *fbp++ = '4';
 4847|       |                    break;
 4848|       |# else
 4849|      0|                    *fbp++ = 'l';
 4850|      0|# endif
 4851|      0|#endif
 4852|      0|                    FALLTHROUGH;
  ------------------
  |  |  125|      0|#  define FALLTHROUGH ((void) 0)
  ------------------
 4853|      0|                  case TYPE_LONGINT:
  ------------------
  |  Branch (4853:19): [True: 0, False: 392k]
  ------------------
 4854|      0|                  case TYPE_ULONGINT:
  ------------------
  |  Branch (4854:19): [True: 0, False: 392k]
  ------------------
 4855|      0|#if HAVE_WINT_T
 4856|      0|                  case TYPE_WIDE_CHAR:
  ------------------
  |  Branch (4856:19): [True: 0, False: 392k]
  ------------------
 4857|      0|#endif
 4858|      0|#if HAVE_WCHAR_T
 4859|      0|                  case TYPE_WIDE_STRING:
  ------------------
  |  Branch (4859:19): [True: 0, False: 392k]
  ------------------
 4860|      0|#endif
 4861|      0|                    *fbp++ = 'l';
 4862|      0|                    break;
 4863|      0|                  case TYPE_LONGDOUBLE:
  ------------------
  |  Branch (4863:19): [True: 0, False: 392k]
  ------------------
 4864|      0|                    *fbp++ = 'L';
 4865|      0|                    break;
 4866|   392k|                  default:
  ------------------
  |  Branch (4866:19): [True: 392k, False: 0]
  ------------------
 4867|   392k|                    break;
 4868|   392k|                  }
 4869|       |#if NEED_PRINTF_DIRECTIVE_F
 4870|       |                if (dp->conversion == 'F')
 4871|       |                  *fbp = 'f';
 4872|       |                else
 4873|       |#endif
 4874|   392k|                  *fbp = dp->conversion;
 4875|       |#if USE_SNPRINTF
 4876|       |# if ! (((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3))        \
 4877|       |         && !defined __UCLIBC__)                                            \
 4878|       |        || (defined __APPLE__ && defined __MACH__)                          \
 4879|       |        || defined __ANDROID__                                              \
 4880|       |        || (defined _WIN32 && ! defined __CYGWIN__))
 4881|       |                fbp[1] = '%';
 4882|       |                fbp[2] = 'n';
 4883|       |                fbp[3] = '\0';
 4884|       |# else
 4885|       |                /* On glibc2 systems from glibc >= 2.3 - probably also older
 4886|       |                   ones - we know that snprintf's return value conforms to
 4887|       |                   ISO C 99: the tests gl_SNPRINTF_RETVAL_C99 and
 4888|       |                   gl_SNPRINTF_TRUNCATION_C99 pass.
 4889|       |                   Therefore we can avoid using %n in this situation.
 4890|       |                   On glibc2 systems from 2004-10-18 or newer, the use of %n
 4891|       |                   in format strings in writable memory may crash the program
 4892|       |                   (if compiled with _FORTIFY_SOURCE=2), so we should avoid it
 4893|       |                   in this situation.  */
 4894|       |                /* On Mac OS X 10.3 or newer, we know that snprintf's return
 4895|       |                   value conforms to ISO C 99: the tests gl_SNPRINTF_RETVAL_C99
 4896|       |                   and gl_SNPRINTF_TRUNCATION_C99 pass.
 4897|       |                   Therefore we can avoid using %n in this situation.
 4898|       |                   On Mac OS X 10.13 or newer, the use of %n in format strings
 4899|       |                   in writable memory by default crashes the program, so we
 4900|       |                   should avoid it in this situation.  */
 4901|       |                /* On Android, we know that snprintf's return value conforms to
 4902|       |                   ISO C 99: the tests gl_SNPRINTF_RETVAL_C99 and
 4903|       |                   gl_SNPRINTF_TRUNCATION_C99 pass.
 4904|       |                   Therefore we can avoid using %n in this situation.
 4905|       |                   Starting on 2018-03-07, the use of %n in format strings
 4906|       |                   produces a fatal error (see
 4907|       |                   <https://android.googlesource.com/platform/bionic/+/41398d03b7e8e0dfb951660ae713e682e9fc0336>),
 4908|       |                   so we should avoid it.  */
 4909|       |                /* On native Windows systems (such as mingw), we can avoid using
 4910|       |                   %n because:
 4911|       |                     - Although the gl_SNPRINTF_TRUNCATION_C99 test fails,
 4912|       |                       snprintf does not write more than the specified number
 4913|       |                       of bytes. (snprintf (buf, 3, "%d %d", 4567, 89) writes
 4914|       |                       '4', '5', '6' into buf, not '4', '5', '\0'.)
 4915|       |                     - Although the gl_SNPRINTF_RETVAL_C99 test fails, snprintf
 4916|       |                       allows us to recognize the case of an insufficient
 4917|       |                       buffer size: it returns -1 in this case.
 4918|       |                   On native Windows systems (such as mingw) where the OS is
 4919|       |                   Windows Vista, the use of %n in format strings by default
 4920|       |                   crashes the program. See
 4921|       |                     <https://gcc.gnu.org/ml/gcc/2007-06/msg00122.html> and
 4922|       |                     <https://msdn.microsoft.com/en-us/library/ms175782.aspx>
 4923|       |                   So we should avoid %n in this situation.  */
 4924|       |                fbp[1] = '\0';
 4925|       |# endif
 4926|       |#else
 4927|   392k|                fbp[1] = '\0';
 4928|   392k|#endif
 4929|       |
 4930|       |                /* Construct the arguments for calling snprintf or sprintf.  */
 4931|   392k|                prefix_count = 0;
 4932|   392k|                if (!pad_ourselves && dp->width_arg_index != ARG_NONE)
  ------------------
  |  | 4626|   784k|#               define pad_ourselves 0
  ------------------
                              if (!pad_ourselves && dp->width_arg_index != ARG_NONE)
  ------------------
  |  |   44|   392k|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (4932:21): [True: 392k, Folded]
  |  Branch (4932:39): [True: 0, False: 392k]
  ------------------
 4933|      0|                  {
 4934|      0|                    if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
  ------------------
  |  Branch (4934:25): [True: 0, False: 0]
  ------------------
 4935|      0|                      abort ();
 4936|      0|                    prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int;
 4937|      0|                  }
 4938|   392k|                if (!prec_ourselves && dp->precision_arg_index != ARG_NONE)
  ------------------
  |  | 4619|   784k|#               define prec_ourselves 0
  ------------------
                              if (!prec_ourselves && dp->precision_arg_index != ARG_NONE)
  ------------------
  |  |   44|   392k|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (4938:21): [True: 392k, Folded]
  |  Branch (4938:40): [True: 0, False: 392k]
  ------------------
 4939|      0|                  {
 4940|      0|                    if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
  ------------------
  |  Branch (4940:25): [True: 0, False: 0]
  ------------------
 4941|      0|                      abort ();
 4942|      0|                    prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int;
 4943|      0|                  }
 4944|       |
 4945|       |#if USE_SNPRINTF
 4946|       |                /* The SNPRINTF result is appended after result[0..length].
 4947|       |                   The latter is an array of DCHAR_T; SNPRINTF appends an
 4948|       |                   array of TCHAR_T to it.  This is possible because
 4949|       |                   sizeof (TCHAR_T) divides sizeof (DCHAR_T) and
 4950|       |                   alignof (TCHAR_T) <= alignof (DCHAR_T).  */
 4951|       |# define TCHARS_PER_DCHAR (sizeof (DCHAR_T) / sizeof (TCHAR_T))
 4952|       |                /* Ensure that maxlen below will be >= 2.  Needed on BeOS,
 4953|       |                   where an snprintf() with maxlen==1 acts like sprintf().  */
 4954|       |                ENSURE_ALLOCATION (xsum (length,
 4955|       |                                         (2 + TCHARS_PER_DCHAR - 1)
 4956|       |                                         / TCHARS_PER_DCHAR));
 4957|       |                /* Prepare checking whether snprintf returns the count
 4958|       |                   via %n.  */
 4959|       |                *(TCHAR_T *) (result + length) = '\0';
 4960|       |#endif
 4961|       |
 4962|   392k|                orig_errno = errno;
 4963|       |
 4964|   392k|                for (;;)
 4965|   392k|                  {
 4966|   392k|                    int count = -1;
 4967|       |
 4968|       |#if USE_SNPRINTF
 4969|       |                    int retcount = 0;
 4970|       |                    size_t maxlen = allocated - length;
 4971|       |                    /* SNPRINTF can fail if its second argument is
 4972|       |                       > INT_MAX.  */
 4973|       |                    if (maxlen > INT_MAX / TCHARS_PER_DCHAR)
 4974|       |                      maxlen = INT_MAX / TCHARS_PER_DCHAR;
 4975|       |                    maxlen = maxlen * TCHARS_PER_DCHAR;
 4976|       |# define SNPRINTF_BUF(arg) \
 4977|       |                    switch (prefix_count)                                   \
 4978|       |                      {                                                     \
 4979|       |                      case 0:                                               \
 4980|       |                        retcount = SNPRINTF ((TCHAR_T *) (result + length), \
 4981|       |                                             maxlen, buf,                   \
 4982|       |                                             arg, &count);                  \
 4983|       |                        break;                                              \
 4984|       |                      case 1:                                               \
 4985|       |                        retcount = SNPRINTF ((TCHAR_T *) (result + length), \
 4986|       |                                             maxlen, buf,                   \
 4987|       |                                             prefixes[0], arg, &count);     \
 4988|       |                        break;                                              \
 4989|       |                      case 2:                                               \
 4990|       |                        retcount = SNPRINTF ((TCHAR_T *) (result + length), \
 4991|       |                                             maxlen, buf,                   \
 4992|       |                                             prefixes[0], prefixes[1], arg, \
 4993|       |                                             &count);                       \
 4994|       |                        break;                                              \
 4995|       |                      default:                                              \
 4996|       |                        abort ();                                           \
 4997|       |                      }
 4998|       |#else
 4999|   392k|# define SNPRINTF_BUF(arg) \
 5000|   392k|                    switch (prefix_count)                                   \
 5001|   392k|                      {                                                     \
 5002|   392k|                      case 0:                                               \
 5003|   392k|                        count = sprintf (tmp, buf, arg);                    \
 5004|   392k|                        break;                                              \
 5005|   392k|                      case 1:                                               \
 5006|   392k|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
 5007|   392k|                        break;                                              \
 5008|   392k|                      case 2:                                               \
 5009|   392k|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
 5010|   392k|                                         arg);                              \
 5011|   392k|                        break;                                              \
 5012|   392k|                      default:                                              \
 5013|   392k|                        abort ();                                           \
 5014|   392k|                      }
 5015|   392k|#endif
 5016|       |
 5017|   392k|                    errno = 0;
 5018|   392k|                    switch (type)
 5019|   392k|                      {
 5020|      0|                      case TYPE_SCHAR:
  ------------------
  |  Branch (5020:23): [True: 0, False: 392k]
  ------------------
 5021|      0|                        {
 5022|      0|                          int arg = a.arg[dp->arg_index].a.a_schar;
 5023|      0|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|      0|                    switch (prefix_count)                                   \
  |  | 5001|      0|                      {                                                     \
  |  | 5002|      0|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5003|      0|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|      0|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|      0|                      }
  ------------------
 5024|      0|                        }
 5025|      0|                        break;
 5026|      0|                      case TYPE_UCHAR:
  ------------------
  |  Branch (5026:23): [True: 0, False: 392k]
  ------------------
 5027|      0|                        {
 5028|      0|                          unsigned int arg = a.arg[dp->arg_index].a.a_uchar;
 5029|      0|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|      0|                    switch (prefix_count)                                   \
  |  | 5001|      0|                      {                                                     \
  |  | 5002|      0|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5003|      0|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|      0|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|      0|                      }
  ------------------
 5030|      0|                        }
 5031|      0|                        break;
 5032|      0|                      case TYPE_SHORT:
  ------------------
  |  Branch (5032:23): [True: 0, False: 392k]
  ------------------
 5033|      0|                        {
 5034|      0|                          int arg = a.arg[dp->arg_index].a.a_short;
 5035|      0|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|      0|                    switch (prefix_count)                                   \
  |  | 5001|      0|                      {                                                     \
  |  | 5002|      0|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5003|      0|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|      0|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|      0|                      }
  ------------------
 5036|      0|                        }
 5037|      0|                        break;
 5038|      0|                      case TYPE_USHORT:
  ------------------
  |  Branch (5038:23): [True: 0, False: 392k]
  ------------------
 5039|      0|                        {
 5040|      0|                          unsigned int arg = a.arg[dp->arg_index].a.a_ushort;
 5041|      0|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|      0|                    switch (prefix_count)                                   \
  |  | 5001|      0|                      {                                                     \
  |  | 5002|      0|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5003|      0|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|      0|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|      0|                      }
  ------------------
 5042|      0|                        }
 5043|      0|                        break;
 5044|      0|                      case TYPE_INT:
  ------------------
  |  Branch (5044:23): [True: 0, False: 392k]
  ------------------
 5045|      0|                        {
 5046|      0|                          int arg = a.arg[dp->arg_index].a.a_int;
 5047|      0|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|      0|                    switch (prefix_count)                                   \
  |  | 5001|      0|                      {                                                     \
  |  | 5002|      0|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5003|      0|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|      0|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|      0|                      }
  ------------------
 5048|      0|                        }
 5049|      0|                        break;
 5050|   204k|                      case TYPE_UINT:
  ------------------
  |  Branch (5050:23): [True: 204k, False: 187k]
  ------------------
 5051|   204k|                        {
 5052|   204k|                          unsigned int arg = a.arg[dp->arg_index].a.a_uint;
 5053|   204k|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|   204k|                    switch (prefix_count)                                   \
  |  | 5001|   204k|                      {                                                     \
  |  | 5002|   204k|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 204k, False: 0]
  |  |  ------------------
  |  | 5003|   204k|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|   204k|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 204k]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 204k]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 204k]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|   204k|                      }
  ------------------
 5054|   204k|                        }
 5055|      0|                        break;
 5056|      0|                      case TYPE_LONGINT:
  ------------------
  |  Branch (5056:23): [True: 0, False: 392k]
  ------------------
 5057|      0|                        {
 5058|      0|                          long int arg = a.arg[dp->arg_index].a.a_longint;
 5059|      0|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|      0|                    switch (prefix_count)                                   \
  |  | 5001|      0|                      {                                                     \
  |  | 5002|      0|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5003|      0|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|      0|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|      0|                      }
  ------------------
 5060|      0|                        }
 5061|      0|                        break;
 5062|      0|                      case TYPE_ULONGINT:
  ------------------
  |  Branch (5062:23): [True: 0, False: 392k]
  ------------------
 5063|      0|                        {
 5064|      0|                          unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint;
 5065|      0|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|      0|                    switch (prefix_count)                                   \
  |  | 5001|      0|                      {                                                     \
  |  | 5002|      0|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5003|      0|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|      0|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|      0|                      }
  ------------------
 5066|      0|                        }
 5067|      0|                        break;
 5068|      0|#if HAVE_LONG_LONG
 5069|      0|                      case TYPE_LONGLONGINT:
  ------------------
  |  Branch (5069:23): [True: 0, False: 392k]
  ------------------
 5070|      0|                        {
 5071|      0|                          long long int arg = a.arg[dp->arg_index].a.a_longlongint;
 5072|      0|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|      0|                    switch (prefix_count)                                   \
  |  | 5001|      0|                      {                                                     \
  |  | 5002|      0|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5003|      0|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|      0|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|      0|                      }
  ------------------
 5073|      0|                        }
 5074|      0|                        break;
 5075|      0|                      case TYPE_ULONGLONGINT:
  ------------------
  |  Branch (5075:23): [True: 0, False: 392k]
  ------------------
 5076|      0|                        {
 5077|      0|                          unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint;
 5078|      0|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|      0|                    switch (prefix_count)                                   \
  |  | 5001|      0|                      {                                                     \
  |  | 5002|      0|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5003|      0|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|      0|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|      0|                      }
  ------------------
 5079|      0|                        }
 5080|      0|                        break;
 5081|      0|#endif
 5082|      0|                      case TYPE_DOUBLE:
  ------------------
  |  Branch (5082:23): [True: 0, False: 392k]
  ------------------
 5083|      0|                        {
 5084|      0|                          double arg = a.arg[dp->arg_index].a.a_double;
 5085|      0|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|      0|                    switch (prefix_count)                                   \
  |  | 5001|      0|                      {                                                     \
  |  | 5002|      0|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5003|      0|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|      0|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|      0|                      }
  ------------------
 5086|      0|                        }
 5087|      0|                        break;
 5088|      0|                      case TYPE_LONGDOUBLE:
  ------------------
  |  Branch (5088:23): [True: 0, False: 392k]
  ------------------
 5089|      0|                        {
 5090|      0|                          long double arg = a.arg[dp->arg_index].a.a_longdouble;
 5091|      0|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|      0|                    switch (prefix_count)                                   \
  |  | 5001|      0|                      {                                                     \
  |  | 5002|      0|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5003|      0|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|      0|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|      0|                      }
  ------------------
 5092|      0|                        }
 5093|      0|                        break;
 5094|      0|                      case TYPE_CHAR:
  ------------------
  |  Branch (5094:23): [True: 0, False: 392k]
  ------------------
 5095|      0|                        {
 5096|      0|                          int arg = a.arg[dp->arg_index].a.a_char;
 5097|      0|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|      0|                    switch (prefix_count)                                   \
  |  | 5001|      0|                      {                                                     \
  |  | 5002|      0|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5003|      0|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|      0|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|      0|                      }
  ------------------
 5098|      0|                        }
 5099|      0|                        break;
 5100|      0|#if HAVE_WINT_T
 5101|      0|                      case TYPE_WIDE_CHAR:
  ------------------
  |  Branch (5101:23): [True: 0, False: 392k]
  ------------------
 5102|      0|                        {
 5103|      0|                          wint_t arg = a.arg[dp->arg_index].a.a_wide_char;
 5104|      0|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|      0|                    switch (prefix_count)                                   \
  |  | 5001|      0|                      {                                                     \
  |  | 5002|      0|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5003|      0|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|      0|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|      0|                      }
  ------------------
 5105|      0|                        }
 5106|      0|                        break;
 5107|      0|#endif
 5108|   187k|                      case TYPE_STRING:
  ------------------
  |  Branch (5108:23): [True: 187k, False: 204k]
  ------------------
 5109|   187k|                        {
 5110|   187k|                          const char *arg = a.arg[dp->arg_index].a.a_string;
 5111|   187k|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|   187k|                    switch (prefix_count)                                   \
  |  | 5001|   187k|                      {                                                     \
  |  | 5002|   187k|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 187k, False: 0]
  |  |  ------------------
  |  | 5003|   187k|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|   187k|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 187k]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 187k]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 187k]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|   187k|                      }
  ------------------
 5112|   187k|                        }
 5113|      0|                        break;
 5114|      0|#if HAVE_WCHAR_T
 5115|      0|                      case TYPE_WIDE_STRING:
  ------------------
  |  Branch (5115:23): [True: 0, False: 392k]
  ------------------
 5116|      0|                        {
 5117|      0|                          const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string;
 5118|      0|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|      0|                    switch (prefix_count)                                   \
  |  | 5001|      0|                      {                                                     \
  |  | 5002|      0|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5003|      0|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|      0|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|      0|                      }
  ------------------
 5119|      0|                        }
 5120|      0|                        break;
 5121|      0|#endif
 5122|      0|                      case TYPE_POINTER:
  ------------------
  |  Branch (5122:23): [True: 0, False: 392k]
  ------------------
 5123|      0|                        {
 5124|      0|                          void *arg = a.arg[dp->arg_index].a.a_pointer;
 5125|      0|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|      0|                    switch (prefix_count)                                   \
  |  | 5001|      0|                      {                                                     \
  |  | 5002|      0|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5003|      0|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|      0|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5009|      0|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
  |  | 5010|      0|                                         arg);                              \
  |  | 5011|      0|                        break;                                              \
  |  | 5012|      0|                      default:                                              \
  |  |  ------------------
  |  |  |  Branch (5012:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|      0|                      }
  ------------------
 5126|      0|                        }
 5127|      0|                        break;
 5128|      0|                      default:
  ------------------
  |  Branch (5128:23): [True: 0, False: 392k]
  ------------------
 5129|      0|                        abort ();
 5130|   392k|                      }
 5131|       |
 5132|       |#if USE_SNPRINTF
 5133|       |                    /* Portability: Not all implementations of snprintf()
 5134|       |                       are ISO C 99 compliant.  Determine the number of
 5135|       |                       bytes that snprintf() has produced or would have
 5136|       |                       produced.  */
 5137|       |                    if (count >= 0)
 5138|       |                      {
 5139|       |                        /* Verify that snprintf() has NUL-terminated its
 5140|       |                           result.  */
 5141|       |                        if ((unsigned int) count < maxlen
 5142|       |                            && ((TCHAR_T *) (result + length)) [count] != '\0')
 5143|       |                          abort ();
 5144|       |                        /* Portability hack.  */
 5145|       |                        if (retcount > count)
 5146|       |                          count = retcount;
 5147|       |                      }
 5148|       |                    else
 5149|       |                      {
 5150|       |                        /* snprintf() doesn't understand the '%n'
 5151|       |                           directive.  */
 5152|       |                        if (fbp[1] != '\0')
 5153|       |                          {
 5154|       |                            /* Don't use the '%n' directive; instead, look
 5155|       |                               at the snprintf() return value.  */
 5156|       |                            fbp[1] = '\0';
 5157|       |                            continue;
 5158|       |                          }
 5159|       |                        else
 5160|       |                          {
 5161|       |                            /* Look at the snprintf() return value.  */
 5162|       |                            if (retcount < 0)
 5163|       |                              {
 5164|       |# if !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF
 5165|       |                                /* HP-UX 10.20 snprintf() is doubly deficient:
 5166|       |                                   It doesn't understand the '%n' directive,
 5167|       |                                   *and* it returns -1 (rather than the length
 5168|       |                                   that would have been required) when the
 5169|       |                                   buffer is too small.
 5170|       |                                   But a failure at this point can also come
 5171|       |                                   from other reasons than a too small buffer,
 5172|       |                                   such as an invalid wide string argument to
 5173|       |                                   the %ls directive, or possibly an invalid
 5174|       |                                   floating-point argument.  */
 5175|       |                                size_t tmp_length =
 5176|       |                                  MAX_ROOM_NEEDED (&a, dp->arg_index,
 5177|       |                                                   dp->conversion, type, flags,
 5178|       |                                                   width,
 5179|       |                                                   has_precision,
 5180|       |                                                   precision, pad_ourselves);
 5181|       |
 5182|       |                                if (maxlen < tmp_length)
 5183|       |                                  {
 5184|       |                                    /* Make more room.  But try to do through
 5185|       |                                       this reallocation only once.  */
 5186|       |                                    size_t bigger_need =
 5187|       |                                      xsum (length,
 5188|       |                                            xsum (tmp_length,
 5189|       |                                                  TCHARS_PER_DCHAR - 1)
 5190|       |                                            / TCHARS_PER_DCHAR);
 5191|       |                                    /* And always grow proportionally.
 5192|       |                                       (There may be several arguments, each
 5193|       |                                       needing a little more room than the
 5194|       |                                       previous one.)  */
 5195|       |                                    size_t bigger_need2 =
 5196|       |                                      xsum (xtimes (allocated, 2), 12);
 5197|       |                                    if (bigger_need < bigger_need2)
 5198|       |                                      bigger_need = bigger_need2;
 5199|       |                                    ENSURE_ALLOCATION (bigger_need);
 5200|       |                                    continue;
 5201|       |                                  }
 5202|       |# endif
 5203|       |                              }
 5204|       |                            else
 5205|       |                              count = retcount;
 5206|       |                          }
 5207|       |                      }
 5208|       |#endif
 5209|       |
 5210|       |                    /* Attempt to handle failure.  */
 5211|   392k|                    if (count < 0)
  ------------------
  |  Branch (5211:25): [True: 0, False: 392k]
  ------------------
 5212|      0|                      {
 5213|       |                        /* SNPRINTF or sprintf failed.  Save and use the errno
 5214|       |                           that it has set, if any.  */
 5215|      0|                        int saved_errno = errno;
 5216|      0|                        if (saved_errno == 0)
  ------------------
  |  Branch (5216:29): [True: 0, False: 0]
  ------------------
 5217|      0|                          {
 5218|      0|                            if (dp->conversion == 'c' || dp->conversion == 's')
  ------------------
  |  Branch (5218:33): [True: 0, False: 0]
  |  Branch (5218:58): [True: 0, False: 0]
  ------------------
 5219|      0|                              saved_errno = EILSEQ;
 5220|      0|                            else
 5221|      0|                              saved_errno = EINVAL;
 5222|      0|                          }
 5223|       |
 5224|      0|                        if (!(result == resultbuf || result == NULL))
  ------------------
  |  Branch (5224:31): [True: 0, False: 0]
  |  Branch (5224:54): [True: 0, False: 0]
  ------------------
 5225|      0|                          free (result);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 5226|      0|                        if (buf_malloced != NULL)
  ------------------
  |  Branch (5226:29): [True: 0, False: 0]
  ------------------
 5227|      0|                          free (buf_malloced);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 5228|      0|                        CLEANUP ();
  ------------------
  |  | 1799|      0|  if (d.dir != d.direct_alloc_dir)                                      \
  |  |  ------------------
  |  |  |  Branch (1799:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1800|      0|    free (d.dir);                                                       \
  |  |  ------------------
  |  |  |  |   35|      0|#define free    g_free
  |  |  ------------------
  |  | 1801|      0|  if (a.arg != a.direct_alloc_arg)                                      \
  |  |  ------------------
  |  |  |  Branch (1801:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1802|      0|    free (a.arg);
  |  |  ------------------
  |  |  |  |   35|      0|#define free    g_free
  |  |  ------------------
  ------------------
 5229|       |
 5230|      0|                        errno = saved_errno;
 5231|      0|                        return NULL;
 5232|      0|                      }
 5233|       |
 5234|       |#if USE_SNPRINTF
 5235|       |                    /* Handle overflow of the allocated buffer.
 5236|       |                       If such an overflow occurs, a C99 compliant snprintf()
 5237|       |                       returns a count >= maxlen.  However, a non-compliant
 5238|       |                       snprintf() function returns only count = maxlen - 1.  To
 5239|       |                       cover both cases, test whether count >= maxlen - 1.  */
 5240|       |                    if ((unsigned int) count + 1 >= maxlen)
 5241|       |                      {
 5242|       |                        /* If maxlen already has attained its allowed maximum,
 5243|       |                           allocating more memory will not increase maxlen.
 5244|       |                           Instead of looping, bail out.  */
 5245|       |                        if (maxlen == INT_MAX / TCHARS_PER_DCHAR)
 5246|       |                          goto overflow;
 5247|       |                        else
 5248|       |                          {
 5249|       |                            /* Need at least (count + 1) * sizeof (TCHAR_T)
 5250|       |                               bytes.  (The +1 is for the trailing NUL.)
 5251|       |                               But ask for (count + 2) * sizeof (TCHAR_T)
 5252|       |                               bytes, so that in the next round, we likely get
 5253|       |                                 maxlen > (unsigned int) count + 1
 5254|       |                               and so we don't get here again.
 5255|       |                               And allocate proportionally, to avoid looping
 5256|       |                               eternally if snprintf() reports a too small
 5257|       |                               count.  */
 5258|       |                            size_t n =
 5259|       |                              xmax (xsum (length,
 5260|       |                                          ((unsigned int) count + 2
 5261|       |                                           + TCHARS_PER_DCHAR - 1)
 5262|       |                                          / TCHARS_PER_DCHAR),
 5263|       |                                    xtimes (allocated, 2));
 5264|       |
 5265|       |                            ENSURE_ALLOCATION (n);
 5266|       |                            continue;
 5267|       |                          }
 5268|       |                      }
 5269|       |#endif
 5270|       |
 5271|       |#if NEED_PRINTF_UNBOUNDED_PRECISION
 5272|       |                    if (prec_ourselves)
 5273|       |                      {
 5274|       |                        /* Handle the precision.  */
 5275|       |                        TCHAR_T *prec_ptr =
 5276|       |# if USE_SNPRINTF
 5277|       |                          (TCHAR_T *) (result + length);
 5278|       |# else
 5279|       |                          tmp;
 5280|       |# endif
 5281|       |                        size_t prefix_count;
 5282|       |                        size_t move;
 5283|       |
 5284|       |                        prefix_count = 0;
 5285|       |                        /* Put the additional zeroes after the sign.  */
 5286|       |                        if (count >= 1
 5287|       |                            && (*prec_ptr == '-' || *prec_ptr == '+'
 5288|       |                                || *prec_ptr == ' '))
 5289|       |                          prefix_count = 1;
 5290|       |                        /* Put the additional zeroes after the 0x prefix if
 5291|       |                           (flags & FLAG_ALT) || (dp->conversion == 'p').  */
 5292|       |                        else if (count >= 2
 5293|       |                                 && prec_ptr[0] == '0'
 5294|       |                                 && (prec_ptr[1] == 'x' || prec_ptr[1] == 'X'))
 5295|       |                          prefix_count = 2;
 5296|       |
 5297|       |                        move = count - prefix_count;
 5298|       |                        if (precision > move)
 5299|       |                          {
 5300|       |                            /* Insert zeroes.  */
 5301|       |                            size_t insert = precision - move;
 5302|       |                            TCHAR_T *prec_end;
 5303|       |
 5304|       |# if USE_SNPRINTF
 5305|       |                            size_t n =
 5306|       |                              xsum (length,
 5307|       |                                    (count + insert + TCHARS_PER_DCHAR - 1)
 5308|       |                                    / TCHARS_PER_DCHAR);
 5309|       |                            length += (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR;
 5310|       |                            ENSURE_ALLOCATION (n);
 5311|       |                            length -= (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR;
 5312|       |                            prec_ptr = (TCHAR_T *) (result + length);
 5313|       |# endif
 5314|       |
 5315|       |                            prec_end = prec_ptr + count;
 5316|       |                            prec_ptr += prefix_count;
 5317|       |
 5318|       |                            while (prec_end > prec_ptr)
 5319|       |                              {
 5320|       |                                prec_end--;
 5321|       |                                prec_end[insert] = prec_end[0];
 5322|       |                              }
 5323|       |
 5324|       |                            prec_end += insert;
 5325|       |                            do
 5326|       |                              *--prec_end = '0';
 5327|       |                            while (prec_end > prec_ptr);
 5328|       |
 5329|       |                            count += insert;
 5330|       |                          }
 5331|       |                      }
 5332|       |#endif
 5333|       |
 5334|   392k|#if !USE_SNPRINTF
 5335|   392k|                    if (count >= tmp_length)
  ------------------
  |  Branch (5335:25): [True: 0, False: 392k]
  ------------------
 5336|       |                      /* tmp_length was incorrectly calculated - fix the
 5337|       |                         code above!  */
 5338|      0|                      abort ();
 5339|   392k|#endif
 5340|       |
 5341|       |#if !DCHAR_IS_TCHAR
 5342|       |                    /* Convert from TCHAR_T[] to DCHAR_T[].  */
 5343|       |                    if (dp->conversion == 'c' || dp->conversion == 's')
 5344|       |                      {
 5345|       |                        /* type = TYPE_CHAR or TYPE_WIDE_CHAR or TYPE_STRING
 5346|       |                           TYPE_WIDE_STRING.
 5347|       |                           The result string is not certainly ASCII.  */
 5348|       |                        const TCHAR_T *tmpsrc;
 5349|       |                        DCHAR_T *tmpdst;
 5350|       |                        size_t tmpdst_len;
 5351|       |                        /* This code assumes that TCHAR_T is 'char'.  */
 5352|       |                        verify (sizeof (TCHAR_T) == 1);
 5353|       |# if USE_SNPRINTF
 5354|       |                        tmpsrc = (TCHAR_T *) (result + length);
 5355|       |# else
 5356|       |                        tmpsrc = tmp;
 5357|       |# endif
 5358|       |                        tmpdst =
 5359|       |                          DCHAR_CONV_FROM_ENCODING (locale_charset (),
 5360|       |                                                    iconveh_question_mark,
 5361|       |                                                    tmpsrc, count,
 5362|       |                                                    NULL,
 5363|       |                                                    NULL, &tmpdst_len);
 5364|       |                        if (tmpdst == NULL)
 5365|       |                          {
 5366|       |                            int saved_errno = errno;
 5367|       |                            if (!(result == resultbuf || result == NULL))
 5368|       |                              free (result);
 5369|       |                            if (buf_malloced != NULL)
 5370|       |                              free (buf_malloced);
 5371|       |                            CLEANUP ();
 5372|       |                            errno = saved_errno;
 5373|       |                            return NULL;
 5374|       |                          }
 5375|       |                        ENSURE_ALLOCATION (xsum (length, tmpdst_len));
 5376|       |                        DCHAR_CPY (result + length, tmpdst, tmpdst_len);
 5377|       |                        free (tmpdst);
 5378|       |                        count = tmpdst_len;
 5379|       |                      }
 5380|       |                    else
 5381|       |                      {
 5382|       |                        /* The result string is ASCII.
 5383|       |                           Simple 1:1 conversion.  */
 5384|       |# if USE_SNPRINTF
 5385|       |                        /* If sizeof (DCHAR_T) == sizeof (TCHAR_T), it's a
 5386|       |                           no-op conversion, in-place on the array starting
 5387|       |                           at (result + length).  */
 5388|       |                        if (sizeof (DCHAR_T) != sizeof (TCHAR_T))
 5389|       |# endif
 5390|       |                          {
 5391|       |                            const TCHAR_T *tmpsrc;
 5392|       |                            DCHAR_T *tmpdst;
 5393|       |                            size_t n;
 5394|       |
 5395|       |# if USE_SNPRINTF
 5396|       |                            if (result == resultbuf)
 5397|       |                              {
 5398|       |                                tmpsrc = (TCHAR_T *) (result + length);
 5399|       |                                /* ENSURE_ALLOCATION will not move tmpsrc
 5400|       |                                   (because it's part of resultbuf).  */
 5401|       |                                ENSURE_ALLOCATION (xsum (length, count));
 5402|       |                              }
 5403|       |                            else
 5404|       |                              {
 5405|       |                                /* ENSURE_ALLOCATION will move the array
 5406|       |                                   (because it uses realloc().  */
 5407|       |                                ENSURE_ALLOCATION (xsum (length, count));
 5408|       |                                tmpsrc = (TCHAR_T *) (result + length);
 5409|       |                              }
 5410|       |# else
 5411|       |                            tmpsrc = tmp;
 5412|       |                            ENSURE_ALLOCATION (xsum (length, count));
 5413|       |# endif
 5414|       |                            tmpdst = result + length;
 5415|       |                            /* Copy backwards, because of overlapping.  */
 5416|       |                            tmpsrc += count;
 5417|       |                            tmpdst += count;
 5418|       |                            for (n = count; n > 0; n--)
 5419|       |                              *--tmpdst = *--tmpsrc;
 5420|       |                          }
 5421|       |                      }
 5422|       |#endif
 5423|       |
 5424|   392k|#if DCHAR_IS_TCHAR && !USE_SNPRINTF
 5425|       |                    /* Make room for the result.  */
 5426|   392k|                    if (count > allocated - length)
  ------------------
  |  Branch (5426:25): [True: 191k, False: 200k]
  ------------------
 5427|   191k|                      {
 5428|       |                        /* Need at least count elements.  But allocate
 5429|       |                           proportionally.  */
 5430|   191k|                        size_t n =
 5431|   191k|                          xmax (xsum (length, count), xtimes (allocated, 2));
  ------------------
  |  |  108|   191k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|   191k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|   191k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|   191k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|   191k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 191k, False: 0]
  |  |  ------------------
  ------------------
 5432|       |
 5433|   191k|                        ENSURE_ALLOCATION (n);
  ------------------
  |  | 1863|   191k|    if ((needed) > allocated)                                                \
  |  |  ------------------
  |  |  |  Branch (1863:9): [True: 191k, False: 0]
  |  |  ------------------
  |  | 1864|   191k|      {                                                                      \
  |  | 1865|   191k|        size_t memory_size;                                                  \
  |  | 1866|   191k|        DCHAR_T *memory;                                                     \
  |  |  ------------------
  |  |  |  |  147|   191k|#  define DCHAR_T char
  |  |  ------------------
  |  | 1867|   191k|                                                                             \
  |  | 1868|   191k|        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
  |  |  ------------------
  |  |  |  |  108|   188k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   188k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   188k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   188k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   188k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 188k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1868:22): [True: 188k, False: 2.74k]
  |  |  ------------------
  |  | 1869|   191k|        if ((needed) > allocated)                                            \
  |  |  ------------------
  |  |  |  Branch (1869:13): [True: 0, False: 191k]
  |  |  ------------------
  |  | 1870|   191k|          allocated = (needed);                                              \
  |  | 1871|   191k|        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
  |  |  ------------------
  |  |  |  |  108|   191k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   191k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   191k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   191k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   191k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 191k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1872|   191k|        if (size_overflow_p (memory_size))                                   \
  |  |  ------------------
  |  |  |  |  112|   191k|  ((SIZE) == G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   191k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   191k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:3): [True: 0, False: 191k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1873|   191k|          goto out_of_memory;                                                \
  |  | 1874|   191k|        if (result == resultbuf || result == NULL)                           \
  |  |  ------------------
  |  |  |  Branch (1874:13): [True: 2.74k, False: 188k]
  |  |  |  Branch (1874:36): [True: 0, False: 188k]
  |  |  ------------------
  |  | 1875|   191k|          memory = (DCHAR_T *) malloc (memory_size);                         \
  |  |  ------------------
  |  |  |  |   33|  2.74k|#define malloc  g_malloc
  |  |  ------------------
  |  | 1876|   191k|        else                                                                 \
  |  | 1877|   191k|          memory = (DCHAR_T *) realloc (result, memory_size);                \
  |  |  ------------------
  |  |  |  |   34|   188k|#define realloc g_realloc
  |  |  ------------------
  |  | 1878|   191k|        if (memory == NULL)                                                  \
  |  |  ------------------
  |  |  |  Branch (1878:13): [True: 0, False: 191k]
  |  |  ------------------
  |  | 1879|   191k|          goto out_of_memory;                                                \
  |  | 1880|   191k|        if (result == resultbuf && length > 0)                               \
  |  |  ------------------
  |  |  |  Branch (1880:13): [True: 2.74k, False: 188k]
  |  |  |  Branch (1880:36): [True: 0, False: 2.74k]
  |  |  ------------------
  |  | 1881|   191k|          DCHAR_CPY (memory, result, length);                                \
  |  |  ------------------
  |  |  |  |  153|      0|#  define DCHAR_CPY memcpy
  |  |  ------------------
  |  | 1882|   191k|        result = memory;                                                     \
  |  | 1883|   191k|      }
  ------------------
 5434|   191k|                      }
 5435|   392k|#endif
 5436|       |
 5437|       |                    /* Here count <= allocated - length.  */
 5438|       |
 5439|       |                    /* Perform padding.  */
 5440|       |#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
 5441|       |                    if (pad_ourselves && has_width)
 5442|       |                      {
 5443|       |                        size_t w;
 5444|       |# if ENABLE_UNISTDIO
 5445|       |                        /* Outside POSIX, it's preferable to compare the width
 5446|       |                           against the number of _characters_ of the converted
 5447|       |                           value.  */
 5448|       |                        w = DCHAR_MBSNLEN (result + length, count);
 5449|       |# else
 5450|       |                        /* The width is compared against the number of _bytes_
 5451|       |                           of the converted value, says POSIX.  */
 5452|       |                        w = count;
 5453|       |# endif
 5454|       |                        if (w < width)
 5455|       |                          {
 5456|       |                            size_t pad = width - w;
 5457|       |
 5458|       |                            /* Make room for the result.  */
 5459|       |                            if (xsum (count, pad) > allocated - length)
 5460|       |                              {
 5461|       |                                /* Need at least count + pad elements.  But
 5462|       |                                   allocate proportionally.  */
 5463|       |                                size_t n =
 5464|       |                                  xmax (xsum3 (length, count, pad),
 5465|       |                                        xtimes (allocated, 2));
 5466|       |
 5467|       |# if USE_SNPRINTF
 5468|       |                                length += count;
 5469|       |                                ENSURE_ALLOCATION (n);
 5470|       |                                length -= count;
 5471|       |# else
 5472|       |                                ENSURE_ALLOCATION (n);
 5473|       |# endif
 5474|       |                              }
 5475|       |                            /* Here count + pad <= allocated - length.  */
 5476|       |
 5477|       |                            {
 5478|       |# if !DCHAR_IS_TCHAR || USE_SNPRINTF
 5479|       |                              DCHAR_T * const rp = result + length;
 5480|       |# else
 5481|       |                              DCHAR_T * const rp = tmp;
 5482|       |# endif
 5483|       |                              DCHAR_T *p = rp + count;
 5484|       |                              DCHAR_T *end = p + pad;
 5485|       |                              DCHAR_T *pad_ptr;
 5486|       |# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO
 5487|       |                              if (dp->conversion == 'c'
 5488|       |                                  || dp->conversion == 's')
 5489|       |                                /* No zero-padding for string directives.  */
 5490|       |                                pad_ptr = NULL;
 5491|       |                              else
 5492|       |# endif
 5493|       |                                {
 5494|       |                                  pad_ptr = (*rp == '-' ? rp + 1 : rp);
 5495|       |                                  /* No zero-padding of "inf" and "nan".  */
 5496|       |                                  if ((*pad_ptr >= 'A' && *pad_ptr <= 'Z')
 5497|       |                                      || (*pad_ptr >= 'a' && *pad_ptr <= 'z'))
 5498|       |                                    pad_ptr = NULL;
 5499|       |                                }
 5500|       |                              /* The generated string now extends from rp to p,
 5501|       |                                 with the zero padding insertion point being at
 5502|       |                                 pad_ptr.  */
 5503|       |
 5504|       |                              count = count + pad; /* = end - rp */
 5505|       |
 5506|       |                              if (flags & FLAG_LEFT)
 5507|       |                                {
 5508|       |                                  /* Pad with spaces on the right.  */
 5509|       |                                  for (; pad > 0; pad--)
 5510|       |                                    *p++ = ' ';
 5511|       |                                }
 5512|       |                              else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
 5513|       |                                {
 5514|       |                                  /* Pad with zeroes.  */
 5515|       |                                  DCHAR_T *q = end;
 5516|       |
 5517|       |                                  while (p > pad_ptr)
 5518|       |                                    *--q = *--p;
 5519|       |                                  for (; pad > 0; pad--)
 5520|       |                                    *p++ = '0';
 5521|       |                                }
 5522|       |                              else
 5523|       |                                {
 5524|       |                                  /* Pad with spaces on the left.  */
 5525|       |                                  DCHAR_T *q = end;
 5526|       |
 5527|       |                                  while (p > rp)
 5528|       |                                    *--q = *--p;
 5529|       |                                  for (; pad > 0; pad--)
 5530|       |                                    *p++ = ' ';
 5531|       |                                }
 5532|       |                            }
 5533|       |                          }
 5534|       |                      }
 5535|       |#endif
 5536|       |
 5537|       |                    /* Here still count <= allocated - length.  */
 5538|       |
 5539|       |#if !DCHAR_IS_TCHAR || USE_SNPRINTF
 5540|       |                    /* The snprintf() result did fit.  */
 5541|       |#else
 5542|       |                    /* Append the sprintf() result.  */
 5543|   392k|                    memcpy (result + length, tmp, count * sizeof (DCHAR_T));
 5544|   392k|#endif
 5545|   392k|#if !USE_SNPRINTF
 5546|   392k|                    if (tmp != tmpbuf)
  ------------------
  |  Branch (5546:25): [True: 0, False: 392k]
  ------------------
 5547|      0|                      free (tmp);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 5548|   392k|#endif
 5549|       |
 5550|       |#if NEED_PRINTF_DIRECTIVE_F
 5551|       |                    if (dp->conversion == 'F')
 5552|       |                      {
 5553|       |                        /* Convert the %f result to upper case for %F.  */
 5554|       |                        DCHAR_T *rp = result + length;
 5555|       |                        size_t rc;
 5556|       |                        for (rc = count; rc > 0; rc--, rp++)
 5557|       |                          if (*rp >= 'a' && *rp <= 'z')
 5558|       |                            *rp = *rp - 'a' + 'A';
 5559|       |                      }
 5560|       |#endif
 5561|       |
 5562|   392k|                    length += count;
 5563|   392k|                    break;
 5564|   392k|                  }
 5565|   392k|                errno = orig_errno;
 5566|   392k|#undef pad_ourselves
 5567|   392k|#undef prec_ourselves
 5568|   392k|              }
 5569|   392k|          }
 5570|   392k|      }
 5571|       |
 5572|       |    /* Add the final NUL.  */
 5573|   205k|    ENSURE_ALLOCATION (xsum (length, 1));
  ------------------
  |  | 1863|   205k|    if ((needed) > allocated)                                                \
  |  |  ------------------
  |  |  |  Branch (1863:9): [True: 15.3k, False: 189k]
  |  |  ------------------
  |  | 1864|   205k|      {                                                                      \
  |  | 1865|  15.3k|        size_t memory_size;                                                  \
  |  | 1866|  15.3k|        DCHAR_T *memory;                                                     \
  |  |  ------------------
  |  |  |  |  147|  15.3k|#  define DCHAR_T char
  |  |  ------------------
  |  | 1867|  15.3k|                                                                             \
  |  | 1868|  15.3k|        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
  |  |  ------------------
  |  |  |  |  108|  15.3k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  15.3k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  15.3k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  15.3k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  15.3k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 15.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1868:22): [True: 15.3k, False: 0]
  |  |  ------------------
  |  | 1869|  15.3k|        if ((needed) > allocated)                                            \
  |  |  ------------------
  |  |  |  Branch (1869:13): [True: 0, False: 15.3k]
  |  |  ------------------
  |  | 1870|  15.3k|          allocated = (needed);                                              \
  |  | 1871|  15.3k|        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
  |  |  ------------------
  |  |  |  |  108|  15.3k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  15.3k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  15.3k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  15.3k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  15.3k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 15.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1872|  15.3k|        if (size_overflow_p (memory_size))                                   \
  |  |  ------------------
  |  |  |  |  112|  15.3k|  ((SIZE) == G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  15.3k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  15.3k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:3): [True: 0, False: 15.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1873|  15.3k|          goto out_of_memory;                                                \
  |  | 1874|  15.3k|        if (result == resultbuf || result == NULL)                           \
  |  |  ------------------
  |  |  |  Branch (1874:13): [True: 0, False: 15.3k]
  |  |  |  Branch (1874:36): [True: 0, False: 15.3k]
  |  |  ------------------
  |  | 1875|  15.3k|          memory = (DCHAR_T *) malloc (memory_size);                         \
  |  |  ------------------
  |  |  |  |   33|      0|#define malloc  g_malloc
  |  |  ------------------
  |  | 1876|  15.3k|        else                                                                 \
  |  | 1877|  15.3k|          memory = (DCHAR_T *) realloc (result, memory_size);                \
  |  |  ------------------
  |  |  |  |   34|  15.3k|#define realloc g_realloc
  |  |  ------------------
  |  | 1878|  15.3k|        if (memory == NULL)                                                  \
  |  |  ------------------
  |  |  |  Branch (1878:13): [True: 0, False: 15.3k]
  |  |  ------------------
  |  | 1879|  15.3k|          goto out_of_memory;                                                \
  |  | 1880|  15.3k|        if (result == resultbuf && length > 0)                               \
  |  |  ------------------
  |  |  |  Branch (1880:13): [True: 0, False: 15.3k]
  |  |  |  Branch (1880:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 1881|  15.3k|          DCHAR_CPY (memory, result, length);                                \
  |  |  ------------------
  |  |  |  |  153|      0|#  define DCHAR_CPY memcpy
  |  |  ------------------
  |  | 1882|  15.3k|        result = memory;                                                     \
  |  | 1883|  15.3k|      }
  ------------------
 5574|   205k|    result[length] = '\0';
 5575|       |
 5576|   205k|    if (result != resultbuf && length + 1 < allocated)
  ------------------
  |  Branch (5576:9): [True: 205k, False: 0]
  |  Branch (5576:32): [True: 205k, False: 253]
  ------------------
 5577|   205k|      {
 5578|       |        /* Shrink the allocated memory if possible.  */
 5579|   205k|        DCHAR_T *memory;
  ------------------
  |  |  147|   205k|#  define DCHAR_T char
  ------------------
 5580|       |
 5581|   205k|        memory = (DCHAR_T *) realloc (result, (length + 1) * sizeof (DCHAR_T));
  ------------------
  |  |   34|   205k|#define realloc g_realloc
  ------------------
 5582|   205k|        if (memory != NULL)
  ------------------
  |  Branch (5582:13): [True: 205k, False: 0]
  ------------------
 5583|   205k|          result = memory;
 5584|   205k|      }
 5585|       |
 5586|   205k|    if (buf_malloced != NULL)
  ------------------
  |  Branch (5586:9): [True: 205k, False: 0]
  ------------------
 5587|   205k|      free (buf_malloced);
  ------------------
  |  |   35|   205k|#define free    g_free
  ------------------
 5588|   205k|    CLEANUP ();
  ------------------
  |  | 1799|   205k|  if (d.dir != d.direct_alloc_dir)                                      \
  |  |  ------------------
  |  |  |  Branch (1799:7): [True: 0, False: 205k]
  |  |  ------------------
  |  | 1800|   205k|    free (d.dir);                                                       \
  |  |  ------------------
  |  |  |  |   35|      0|#define free    g_free
  |  |  ------------------
  |  | 1801|   205k|  if (a.arg != a.direct_alloc_arg)                                      \
  |  |  ------------------
  |  |  |  Branch (1801:7): [True: 0, False: 205k]
  |  |  ------------------
  |  | 1802|   205k|    free (a.arg);
  |  |  ------------------
  |  |  |  |   35|      0|#define free    g_free
  |  |  ------------------
  ------------------
 5589|   205k|    *lengthp = length;
 5590|       |    /* Note that we can produce a big string of a length > INT_MAX.  POSIX
 5591|       |       says that snprintf() fails with errno = EOVERFLOW in this case, but
 5592|       |       that's only because snprintf() returns an 'int'.  This function does
 5593|       |       not have this limitation.  */
 5594|   205k|    return result;
 5595|       |
 5596|       |#if USE_SNPRINTF
 5597|       |  overflow:
 5598|       |    if (!(result == resultbuf || result == NULL))
 5599|       |      free (result);
 5600|       |    if (buf_malloced != NULL)
 5601|       |      free (buf_malloced);
 5602|       |    CLEANUP ();
 5603|       |    errno = EOVERFLOW;
 5604|       |    return NULL;
 5605|       |#endif
 5606|       |
 5607|      0|  out_of_memory:
 5608|      0|    if (!(result == resultbuf || result == NULL))
  ------------------
  |  Branch (5608:11): [True: 0, False: 0]
  |  Branch (5608:34): [True: 0, False: 0]
  ------------------
 5609|      0|      free (result);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 5610|      0|    if (buf_malloced != NULL)
  ------------------
  |  Branch (5610:9): [True: 0, False: 0]
  ------------------
 5611|      0|      free (buf_malloced);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 5612|      0|  out_of_memory_1:
 5613|      0|    CLEANUP ();
  ------------------
  |  | 1799|      0|  if (d.dir != d.direct_alloc_dir)                                      \
  |  |  ------------------
  |  |  |  Branch (1799:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1800|      0|    free (d.dir);                                                       \
  |  |  ------------------
  |  |  |  |   35|      0|#define free    g_free
  |  |  ------------------
  |  | 1801|      0|  if (a.arg != a.direct_alloc_arg)                                      \
  |  |  ------------------
  |  |  |  Branch (1801:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1802|      0|    free (a.arg);
  |  |  ------------------
  |  |  |  |   35|      0|#define free    g_free
  |  |  ------------------
  ------------------
 5614|      0|    errno = ENOMEM;
 5615|       |    return NULL;
 5616|      0|  }
 5617|      0|}
vasnprintf.c:max_room_needed:
 1552|   392k|{
 1553|   392k|  size_t tmp_length;
 1554|       |
 1555|   392k|  switch (conversion)
 1556|   392k|    {
 1557|      0|    case 'd': case 'i': case 'u':
  ------------------
  |  Branch (1557:5): [True: 0, False: 392k]
  |  Branch (1557:15): [True: 0, False: 392k]
  |  Branch (1557:25): [True: 0, False: 392k]
  ------------------
 1558|      0|# if HAVE_LONG_LONG
 1559|      0|      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
  ------------------
  |  Branch (1559:11): [True: 0, False: 0]
  |  Branch (1559:39): [True: 0, False: 0]
  ------------------
 1560|      0|        tmp_length =
 1561|      0|          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
 1562|      0|                          * 0.30103 /* binary -> decimal */
 1563|      0|                         )
 1564|      0|          + 1; /* turn floor into ceil */
 1565|      0|      else
 1566|      0|# endif
 1567|      0|      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
  ------------------
  |  Branch (1567:11): [True: 0, False: 0]
  |  Branch (1567:35): [True: 0, False: 0]
  ------------------
 1568|      0|        tmp_length =
 1569|      0|          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
 1570|      0|                          * 0.30103 /* binary -> decimal */
 1571|      0|                         )
 1572|      0|          + 1; /* turn floor into ceil */
 1573|      0|      else
 1574|      0|        tmp_length =
 1575|      0|          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
 1576|      0|                          * 0.30103 /* binary -> decimal */
 1577|      0|                         )
 1578|      0|          + 1; /* turn floor into ceil */
 1579|      0|      if (tmp_length < precision)
  ------------------
  |  Branch (1579:11): [True: 0, False: 0]
  ------------------
 1580|      0|        tmp_length = precision;
 1581|       |      /* Multiply by 2, as an estimate for FLAG_GROUP.  */
 1582|      0|      tmp_length = xsum (tmp_length, tmp_length);
 1583|       |      /* Add 1, to account for a leading sign.  */
 1584|      0|      tmp_length = xsum (tmp_length, 1);
 1585|      0|      break;
 1586|       |
 1587|      0|    case 'o':
  ------------------
  |  Branch (1587:5): [True: 0, False: 392k]
  ------------------
 1588|      0|# if HAVE_LONG_LONG
 1589|      0|      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
  ------------------
  |  Branch (1589:11): [True: 0, False: 0]
  |  Branch (1589:39): [True: 0, False: 0]
  ------------------
 1590|      0|        tmp_length =
 1591|      0|          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
 1592|      0|                          * 0.333334 /* binary -> octal */
 1593|      0|                         )
 1594|      0|          + 1; /* turn floor into ceil */
 1595|      0|      else
 1596|      0|# endif
 1597|      0|      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
  ------------------
  |  Branch (1597:11): [True: 0, False: 0]
  |  Branch (1597:35): [True: 0, False: 0]
  ------------------
 1598|      0|        tmp_length =
 1599|      0|          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
 1600|      0|                          * 0.333334 /* binary -> octal */
 1601|      0|                         )
 1602|      0|          + 1; /* turn floor into ceil */
 1603|      0|      else
 1604|      0|        tmp_length =
 1605|      0|          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
 1606|      0|                          * 0.333334 /* binary -> octal */
 1607|      0|                         )
 1608|      0|          + 1; /* turn floor into ceil */
 1609|      0|      if (tmp_length < precision)
  ------------------
  |  Branch (1609:11): [True: 0, False: 0]
  ------------------
 1610|      0|        tmp_length = precision;
 1611|       |      /* Add 1, to account for a leading sign.  */
 1612|      0|      tmp_length = xsum (tmp_length, 1);
 1613|      0|      break;
 1614|       |
 1615|   204k|    case 'x': case 'X':
  ------------------
  |  Branch (1615:5): [True: 202k, False: 190k]
  |  Branch (1615:15): [True: 2.74k, False: 389k]
  ------------------
 1616|   204k|# if HAVE_LONG_LONG
 1617|   204k|      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
  ------------------
  |  Branch (1617:11): [True: 0, False: 204k]
  |  Branch (1617:39): [True: 0, False: 204k]
  ------------------
 1618|      0|        tmp_length =
 1619|      0|          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
 1620|      0|                          * 0.25 /* binary -> hexadecimal */
 1621|      0|                         )
 1622|      0|          + 1; /* turn floor into ceil */
 1623|   204k|      else
 1624|   204k|# endif
 1625|   204k|      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
  ------------------
  |  Branch (1625:11): [True: 0, False: 204k]
  |  Branch (1625:35): [True: 0, False: 204k]
  ------------------
 1626|      0|        tmp_length =
 1627|      0|          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
 1628|      0|                          * 0.25 /* binary -> hexadecimal */
 1629|      0|                         )
 1630|      0|          + 1; /* turn floor into ceil */
 1631|   204k|      else
 1632|   204k|        tmp_length =
 1633|   204k|          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
 1634|   204k|                          * 0.25 /* binary -> hexadecimal */
 1635|   204k|                         )
 1636|   204k|          + 1; /* turn floor into ceil */
 1637|   204k|      if (tmp_length < precision)
  ------------------
  |  Branch (1637:11): [True: 0, False: 204k]
  ------------------
 1638|      0|        tmp_length = precision;
 1639|       |      /* Add 2, to account for a leading sign or alternate form.  */
 1640|   204k|      tmp_length = xsum (tmp_length, 2);
 1641|   204k|      break;
 1642|       |
 1643|      0|    case 'f': case 'F':
  ------------------
  |  Branch (1643:5): [True: 0, False: 392k]
  |  Branch (1643:15): [True: 0, False: 392k]
  ------------------
 1644|      0|      if (type == TYPE_LONGDOUBLE)
  ------------------
  |  Branch (1644:11): [True: 0, False: 0]
  ------------------
 1645|      0|        tmp_length =
 1646|      0|          (unsigned int) (LDBL_MAX_EXP
 1647|      0|                          * 0.30103 /* binary -> decimal */
 1648|      0|                          * 2 /* estimate for FLAG_GROUP */
 1649|      0|                         )
 1650|      0|          + 1 /* turn floor into ceil */
 1651|      0|          + 10; /* sign, decimal point etc. */
 1652|      0|      else
 1653|      0|        tmp_length =
 1654|      0|          (unsigned int) (DBL_MAX_EXP
 1655|      0|                          * 0.30103 /* binary -> decimal */
 1656|      0|                          * 2 /* estimate for FLAG_GROUP */
 1657|      0|                         )
 1658|      0|          + 1 /* turn floor into ceil */
 1659|      0|          + 10; /* sign, decimal point etc. */
 1660|      0|      tmp_length = xsum (tmp_length, precision);
 1661|      0|      break;
 1662|       |
 1663|      0|    case 'e': case 'E': case 'g': case 'G':
  ------------------
  |  Branch (1663:5): [True: 0, False: 392k]
  |  Branch (1663:15): [True: 0, False: 392k]
  |  Branch (1663:25): [True: 0, False: 392k]
  |  Branch (1663:35): [True: 0, False: 392k]
  ------------------
 1664|      0|      tmp_length =
 1665|      0|        12; /* sign, decimal point, exponent etc. */
 1666|      0|      tmp_length = xsum (tmp_length, precision);
 1667|      0|      break;
 1668|       |
 1669|      0|    case 'a': case 'A':
  ------------------
  |  Branch (1669:5): [True: 0, False: 392k]
  |  Branch (1669:15): [True: 0, False: 392k]
  ------------------
 1670|      0|      if (type == TYPE_LONGDOUBLE)
  ------------------
  |  Branch (1670:11): [True: 0, False: 0]
  ------------------
 1671|      0|        tmp_length =
 1672|      0|          (unsigned int) (LDBL_DIG
 1673|      0|                          * 0.831 /* decimal -> hexadecimal */
 1674|      0|                         )
 1675|      0|          + 1; /* turn floor into ceil */
 1676|      0|      else
 1677|      0|        tmp_length =
 1678|      0|          (unsigned int) (DBL_DIG
 1679|      0|                          * 0.831 /* decimal -> hexadecimal */
 1680|      0|                         )
 1681|      0|          + 1; /* turn floor into ceil */
 1682|      0|      if (tmp_length < precision)
  ------------------
  |  Branch (1682:11): [True: 0, False: 0]
  ------------------
 1683|      0|        tmp_length = precision;
 1684|       |      /* Account for sign, decimal point etc. */
 1685|      0|      tmp_length = xsum (tmp_length, 12);
 1686|      0|      break;
 1687|       |
 1688|      0|    case 'c':
  ------------------
  |  Branch (1688:5): [True: 0, False: 392k]
  ------------------
 1689|      0|# if HAVE_WINT_T && !WIDE_CHAR_VERSION
 1690|      0|      if (type == TYPE_WIDE_CHAR)
  ------------------
  |  Branch (1690:11): [True: 0, False: 0]
  ------------------
 1691|      0|        tmp_length = MB_CUR_MAX;
 1692|      0|      else
 1693|      0|# endif
 1694|      0|        tmp_length = 1;
 1695|      0|      break;
 1696|       |
 1697|   187k|    case 's':
  ------------------
  |  Branch (1697:5): [True: 187k, False: 204k]
  ------------------
 1698|   187k|# if HAVE_WCHAR_T
 1699|   187k|      if (type == TYPE_WIDE_STRING)
  ------------------
  |  Branch (1699:11): [True: 0, False: 187k]
  ------------------
 1700|      0|        {
 1701|       |#  if WIDE_CHAR_VERSION
 1702|       |          /* ISO C says about %ls in fwprintf:
 1703|       |               "If the precision is not specified or is greater than the size
 1704|       |                of the array, the array shall contain a null wide character."
 1705|       |             So if there is a precision, we must not use wcslen.  */
 1706|       |          const wchar_t *arg = ap->arg[arg_index].a.a_wide_string;
 1707|       |
 1708|       |          if (has_precision)
 1709|       |            tmp_length = local_wcsnlen (arg, precision);
 1710|       |          else
 1711|       |            tmp_length = local_wcslen (arg);
 1712|       |#  else
 1713|       |          /* ISO C says about %ls in fprintf:
 1714|       |               "If a precision is specified, no more than that many bytes are
 1715|       |                written (including shift sequences, if any), and the array
 1716|       |                shall contain a null wide character if, to equal the multibyte
 1717|       |                character sequence length given by the precision, the function
 1718|       |                would need to access a wide character one past the end of the
 1719|       |                array."
 1720|       |             So if there is a precision, we must not use wcslen.  */
 1721|       |          /* This case has already been handled separately in VASNPRINTF.  */
 1722|      0|          abort ();
 1723|      0|#  endif
 1724|      0|        }
 1725|   187k|      else
 1726|   187k|# endif
 1727|   187k|        {
 1728|       |# if WIDE_CHAR_VERSION
 1729|       |          /* ISO C says about %s in fwprintf:
 1730|       |               "If the precision is not specified or is greater than the size
 1731|       |                of the converted array, the converted array shall contain a
 1732|       |                null wide character."
 1733|       |             So if there is a precision, we must not use strlen.  */
 1734|       |          /* This case has already been handled separately in VASNPRINTF.  */
 1735|       |          abort ();
 1736|       |# else
 1737|       |          /* ISO C says about %s in fprintf:
 1738|       |               "If the precision is not specified or greater than the size of
 1739|       |                the array, the array shall contain a null character."
 1740|       |             So if there is a precision, we must not use strlen.  */
 1741|   187k|          const char *arg = ap->arg[arg_index].a.a_string;
 1742|       |
 1743|   187k|          if (has_precision)
  ------------------
  |  Branch (1743:15): [True: 0, False: 187k]
  ------------------
 1744|      0|            tmp_length = local_strnlen (arg, precision);
  ------------------
  |  |  226|      0|#  define local_strnlen strnlen
  ------------------
 1745|   187k|          else
 1746|   187k|            tmp_length = strlen (arg);
 1747|   187k|# endif
 1748|   187k|        }
 1749|   187k|      break;
 1750|       |
 1751|   187k|    case 'p':
  ------------------
  |  Branch (1751:5): [True: 0, False: 392k]
  ------------------
 1752|      0|      tmp_length =
 1753|      0|        (unsigned int) (sizeof (void *) * CHAR_BIT
 1754|      0|                        * 0.25 /* binary -> hexadecimal */
 1755|      0|                       )
 1756|      0|          + 1 /* turn floor into ceil */
 1757|      0|          + 2; /* account for leading 0x */
 1758|      0|      break;
 1759|       |
 1760|      0|    default:
  ------------------
  |  Branch (1760:5): [True: 0, False: 392k]
  ------------------
 1761|      0|      abort ();
 1762|   392k|    }
 1763|       |
 1764|   392k|  if (!pad_ourselves)
  ------------------
  |  Branch (1764:7): [True: 392k, False: 0]
  ------------------
 1765|   392k|    {
 1766|       |# if ENABLE_UNISTDIO
 1767|       |      /* Padding considers the number of characters, therefore the number of
 1768|       |         elements after padding may be
 1769|       |           > max (tmp_length, width)
 1770|       |         but is certainly
 1771|       |           <= tmp_length + width.  */
 1772|       |      tmp_length = xsum (tmp_length, width);
 1773|       |# else
 1774|       |      /* Padding considers the number of elements, says POSIX.  */
 1775|   392k|      if (tmp_length < width)
  ------------------
  |  Branch (1775:11): [True: 0, False: 392k]
  ------------------
 1776|      0|        tmp_length = width;
 1777|   392k|# endif
 1778|   392k|    }
 1779|       |
 1780|   392k|  tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
 1781|       |
 1782|   392k|  return tmp_length;
 1783|   392k|}

xsum4:
   87|   205k|{
   88|   205k|  return xsum (xsum (xsum (size1, size2), size3), size4);
   89|   205k|}
xsum:
   66|  2.21M|{
   67|  2.21M|  size_t sum = size1 + size2;
   68|  2.21M|  return (sum >= size1 ? sum : G_MAXSIZE);
  ------------------
  |  |   84|  2.21M|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|  2.21M|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  |  Branch (68:11): [True: 2.21M, False: 0]
  ------------------
   69|  2.21M|}
xmax:
   97|   191k|{
   98|       |  /* No explicit check is needed here, because for any n:
   99|       |     max (G_MAXSIZE, n) == G_MAXSIZE and max (n, G_MAXSIZE) == G_MAXSIZE.  */
  100|   191k|  return (size1 >= size2 ? size1 : size2);
  ------------------
  |  Branch (100:11): [True: 2.74k, False: 188k]
  ------------------
  101|   191k|}

g_vasprintf:
  323|   205k|{
  324|   205k|  gint len;
  325|   205k|  g_return_val_if_fail (string != NULL, -1);
  ------------------
  |  |  643|   205k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   205k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   205k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   205k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   205k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   205k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   205k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   205k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 205k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   205k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   205k|   else                                         \
  |  |  |  |  |  | 1021|   205k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   205k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   205k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 205k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   205k|      { } \
  |  |  646|   205k|    else \
  |  |  647|   205k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   205k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   205k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 205k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  326|       |
  327|   205k|#if !defined(USE_SYSTEM_PRINTF)
  328|       |
  329|   205k|  len = _g_gnulib_vasprintf (string, format, args);
  330|   205k|  if (len < 0)
  ------------------
  |  Branch (330:7): [True: 0, False: 205k]
  ------------------
  331|      0|    *string = NULL;
  332|       |
  333|       |#elif defined (HAVE_VASPRINTF)
  334|       |
  335|       |  {
  336|       |    int saved_errno;
  337|       |    len = vasprintf (string, format, args);
  338|       |    saved_errno = errno;
  339|       |    if (len < 0)
  340|       |      {
  341|       |        if (saved_errno == ENOMEM)
  342|       |          g_error ("%s: failed to allocate memory", G_STRLOC);
  343|       |        else
  344|       |          *string = NULL;
  345|       |      }
  346|       |  }
  347|       |
  348|       |#else
  349|       |
  350|       |  {
  351|       |    va_list args2;
  352|       |
  353|       |    G_VA_COPY (args2, args);
  354|       |
  355|       |    *string = g_new (gchar, g_printf_string_upper_bound (format, args));
  356|       |
  357|       |    len = _g_vsprintf (*string, format, args2);
  358|       |    va_end (args2);
  359|       |  }
  360|       |#endif
  361|       |
  362|   205k|  return len;
  363|   205k|}

g_quark_init:
   59|      2|{
   60|      2|  g_assert (quark_seq_id == 0);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   61|      2|  quark_ht = g_hash_table_new (g_str_hash, g_str_equal);
   62|      2|  quarks = g_new (gchar*, QUARK_BLOCK_SIZE);
  ------------------
  |  |  290|      2|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      2|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      2|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      2|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      2|	  gpointer __p;						\
  |  |  |  |  239|      2|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  240|      2|	    __p = g_##func (__n);				\
  |  |  |  |  241|      2|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      2|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      2|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      2|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 2]
  |  |  |  |  |  Branch (242:26): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      2|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      2|	  else							\
  |  |  |  |  245|      2|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      2|	  __p;							\
  |  |  |  |  247|      2|	}))
  |  |  ------------------
  ------------------
   63|       |  quarks[0] = NULL;
   64|      2|  quark_seq_id = 1;
   65|      2|}
g_quark_try_string:
  137|  3.33k|{
  138|  3.33k|  GQuark quark = 0;
  139|       |
  140|  3.33k|  if (string == NULL)
  ------------------
  |  Branch (140:7): [True: 0, False: 3.33k]
  ------------------
  141|      0|    return 0;
  142|       |
  143|  3.33k|  G_LOCK (quark_global);
  ------------------
  |  |  135|  3.33k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  3.33k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  144|  3.33k|  quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string));
  ------------------
  |  |   99|  3.33k|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
  145|  3.33k|  G_UNLOCK (quark_global);
  ------------------
  |  |  136|  3.33k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  3.33k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  146|       |
  147|  3.33k|  return quark;
  148|  3.33k|}
g_quark_from_string:
  228|  5.97k|{
  229|  5.97k|  return quark_from_string_locked (string, TRUE);
  ------------------
  |  |  818|  5.97k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  5.97k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  230|  5.97k|}
g_quark_from_static_string:
  257|  45.7k|{
  258|  45.7k|  return quark_from_string_locked (string, FALSE);
  ------------------
  |  |  814|  45.7k|#define	FALSE	(0)
  ------------------
  259|  45.7k|}
g_quark_to_string:
  271|    160|{
  272|    160|  gchar* result = NULL;
  273|    160|  gchar **strings;
  274|    160|  guint seq_id;
  275|       |
  276|    160|  seq_id = (guint) g_atomic_int_get (&quark_seq_id);
  ------------------
  |  |   96|    160|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|    160|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|    160|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|    160|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|    160|    gint gaig_temp;                                                          \
  |  |   99|    160|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 160]
  |  |  ------------------
  |  |  100|    160|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|    160|    (gint) gaig_temp;                                                        \
  |  |  102|    160|  }))
  ------------------
  277|    160|  strings = g_atomic_pointer_get (&quarks);
  ------------------
  |  |  113|    160|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|    160|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|    160|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|    160|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|    160|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|    160|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|    160|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|    160|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|    160|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|    160|    gapg_temp_newval;                                                      \
  |  |  119|    160|  }))
  ------------------
  278|       |
  279|    160|  if (quark < seq_id)
  ------------------
  |  Branch (279:7): [True: 160, False: 0]
  ------------------
  280|    160|    result = strings[quark];
  281|       |
  282|    160|  return result;
  283|    160|}
g_intern_string:
  349|      5|{
  350|      5|  return quark_intern_string_locked (string, TRUE);
  ------------------
  |  |  818|      5|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      5|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  351|      5|}
g_intern_static_string:
  372|    150|{
  373|    150|  return quark_intern_string_locked (string, FALSE);
  ------------------
  |  |  814|    150|#define	FALSE	(0)
  ------------------
  374|    150|}
gquark.c:quark_from_string_locked:
  199|  51.7k|{
  200|  51.7k|  GQuark quark = 0;
  201|       |
  202|  51.7k|  if (!string)
  ------------------
  |  Branch (202:7): [True: 0, False: 51.7k]
  ------------------
  203|      0|    return 0;
  204|       |
  205|  51.7k|  G_LOCK (quark_global);
  ------------------
  |  |  135|  51.7k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  51.7k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  206|  51.7k|  quark = quark_from_string (string, duplicate);
  207|  51.7k|  G_UNLOCK (quark_global);
  ------------------
  |  |  136|  51.7k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  51.7k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  208|       |
  209|  51.7k|  return quark;
  210|  51.7k|}
gquark.c:quark_from_string:
  182|  51.9k|{
  183|  51.9k|  GQuark quark = 0;
  184|       |
  185|  51.9k|  quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string));
  ------------------
  |  |   99|  51.9k|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
  186|       |
  187|  51.9k|  if (!quark)
  ------------------
  |  Branch (187:7): [True: 225, False: 51.6k]
  ------------------
  188|    225|    {
  189|    225|      quark = quark_new (duplicate ? quark_strdup (string) : (gchar *)string);
  ------------------
  |  Branch (189:26): [True: 6, False: 219]
  ------------------
  190|    225|      TRACE(GLIB_QUARK_NEW(string, quark));
  191|    225|    }
  192|       |
  193|  51.9k|  return quark;
  194|  51.9k|}
gquark.c:quark_new:
  288|    225|{
  289|    225|  GQuark quark;
  290|    225|  gchar **quarks_new;
  291|       |
  292|    225|  if (quark_seq_id % QUARK_BLOCK_SIZE == 0)
  ------------------
  |  |   45|    225|#define QUARK_BLOCK_SIZE         2048
  ------------------
  |  Branch (292:7): [True: 0, False: 225]
  ------------------
  293|      0|    {
  294|      0|      quarks_new = g_new (gchar*, quark_seq_id + QUARK_BLOCK_SIZE);
  ------------------
  |  |  290|      0|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      0|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      0|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      0|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      0|	  gpointer __p;						\
  |  |  |  |  239|      0|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|      0|	    __p = g_##func (__n);				\
  |  |  |  |  241|      0|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      0|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      0|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      0|	  else							\
  |  |  |  |  245|      0|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      0|	  __p;							\
  |  |  |  |  247|      0|	}))
  |  |  ------------------
  ------------------
  295|      0|      if (quark_seq_id != 0)
  ------------------
  |  Branch (295:11): [True: 0, False: 0]
  ------------------
  296|      0|        memcpy (quarks_new, quarks, sizeof (char *) * quark_seq_id);
  297|      0|      memset (quarks_new + quark_seq_id, 0, sizeof (char *) * QUARK_BLOCK_SIZE);
  ------------------
  |  |   45|      0|#define QUARK_BLOCK_SIZE         2048
  ------------------
  298|       |      /* This leaks the old quarks array. Its unfortunate, but it allows
  299|       |       * us to do lockless lookup of the arrays, and there shouldn't be that
  300|       |       * many quarks in an app
  301|       |       */
  302|      0|      g_atomic_pointer_set (&quarks, quarks_new);
  ------------------
  |  |  121|      0|  (G_GNUC_EXTENSION ({                                                      \
  |  |  ------------------
  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  122|      0|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                \
  |  |  ------------------
  |  |  |  |  765|      0|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  123|      0|    glib_typeof ((atomic)) gaps_temp_atomic = (atomic);                     \
  |  |  ------------------
  |  |  |  |  238|      0|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  124|      0|    glib_typeof (*(atomic)) gaps_temp_newval = (newval);                    \
  |  |  ------------------
  |  |  |  |  238|      0|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  125|      0|    (void) (0 ? (gpointer) * (atomic) : NULL);                              \
  |  |  ------------------
  |  |  |  Branch (125:13): [Folded, False: 0]
  |  |  ------------------
  |  |  126|      0|    __atomic_store (gaps_temp_atomic, &gaps_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  127|      0|  }))
  ------------------
  303|      0|    }
  304|       |
  305|    225|  quark = quark_seq_id;
  306|    225|  g_atomic_pointer_set (&quarks[quark], string);
  ------------------
  |  |  121|    225|  (G_GNUC_EXTENSION ({                                                      \
  |  |  ------------------
  |  |  |  |   54|    225|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  122|    225|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                \
  |  |  ------------------
  |  |  |  |  765|    225|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  123|    225|    glib_typeof ((atomic)) gaps_temp_atomic = (atomic);                     \
  |  |  ------------------
  |  |  |  |  238|    225|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  124|    225|    glib_typeof (*(atomic)) gaps_temp_newval = (newval);                    \
  |  |  ------------------
  |  |  |  |  238|    225|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  125|    225|    (void) (0 ? (gpointer) * (atomic) : NULL);                              \
  |  |  ------------------
  |  |  |  Branch (125:13): [Folded, False: 225]
  |  |  ------------------
  |  |  126|    225|    __atomic_store (gaps_temp_atomic, &gaps_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  127|    225|  }))
  ------------------
  307|    225|  g_hash_table_insert (quark_ht, string, GUINT_TO_POINTER (quark));
  ------------------
  |  |  102|    225|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  308|    225|  g_atomic_int_inc (&quark_seq_id);
  ------------------
  |  |  148|    225|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|    225|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|    225|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|    225|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|    225|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 225]
  |  |  ------------------
  |  |  151|    225|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|    225|  }))
  ------------------
  309|       |
  310|    225|  return quark;
  311|    225|}
gquark.c:quark_strdup:
  153|      6|{
  154|      6|  gchar *copy;
  155|      6|  gsize len;
  156|       |
  157|      6|  len = strlen (string) + 1;
  158|       |
  159|       |  /* For strings longer than half the block size, fall back
  160|       |     to strdup so that we fill our blocks at least 50%. */
  161|      6|  if (len > QUARK_STRING_BLOCK_SIZE / 2)
  ------------------
  |  |   46|      6|#define QUARK_STRING_BLOCK_SIZE (4096 - sizeof (gsize))
  ------------------
  |  Branch (161:7): [True: 0, False: 6]
  ------------------
  162|      0|    return g_strdup (string);
  163|       |
  164|      6|  if (quark_block == NULL ||
  ------------------
  |  Branch (164:7): [True: 1, False: 5]
  ------------------
  165|      5|      QUARK_STRING_BLOCK_SIZE - quark_block_offset < len)
  ------------------
  |  |   46|      5|#define QUARK_STRING_BLOCK_SIZE (4096 - sizeof (gsize))
  ------------------
  |  Branch (165:7): [True: 0, False: 5]
  ------------------
  166|      1|    {
  167|      1|      quark_block = g_malloc (QUARK_STRING_BLOCK_SIZE);
  ------------------
  |  |   46|      1|#define QUARK_STRING_BLOCK_SIZE (4096 - sizeof (gsize))
  ------------------
  168|      1|      quark_block_offset = 0;
  169|      1|    }
  170|       |
  171|      6|  copy = quark_block + quark_block_offset;
  172|      6|  memcpy (copy, string, len);
  173|      6|  quark_block_offset += len;
  174|       |
  175|      6|  return copy;
  176|      6|}
gquark.c:quark_intern_string_locked:
  316|    155|{
  317|    155|  const gchar *result;
  318|    155|  GQuark quark;
  319|       |
  320|    155|  if (!string)
  ------------------
  |  Branch (320:7): [True: 0, False: 155]
  ------------------
  321|      0|    return NULL;
  322|       |
  323|    155|  G_LOCK (quark_global);
  ------------------
  |  |  135|    155|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|    155|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  324|    155|  quark = quark_from_string (string, duplicate);
  325|    155|  result = quarks[quark];
  326|    155|  G_UNLOCK (quark_global);
  ------------------
  |  |  136|    155|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|    155|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  327|       |
  328|    155|  return result;
  329|    155|}

g_atomic_ref_count_init:
  208|  1.89M|{
  209|  1.89M|  g_return_if_fail (arc != NULL);
  ------------------
  |  |  630|  1.89M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.89M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.89M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.89M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.89M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.89M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.89M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.89M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.89M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.89M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.89M|   else                                         \
  |  |  |  |  |  | 1021|  1.89M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.89M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.89M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.89M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.89M|      { } \
  |  |  633|  1.89M|    else \
  |  |  634|  1.89M|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  1.89M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.89M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.89M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  210|       |
  211|       |  /* Atomic refcounting is implemented using the positive range
  212|       |   * of signed integers:
  213|       |   *
  214|       |   * G_MININT                 Z¯< 0 > Z⁺                G_MAXINT
  215|       |   * |----------------------------|----------------------------|
  216|       |   *
  217|       |   * Acquiring a reference moves us towards MAXINT, and releasing a
  218|       |   * reference moves us towards 0.
  219|       |   */
  220|  1.89M|  *arc = 1;
  221|  1.89M|}
g_atomic_ref_count_inc:
  233|   576k|{
  234|   576k|  g_return_if_fail (arc != NULL);
  ------------------
  |  |  630|   576k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   576k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   576k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   576k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   576k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   576k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   576k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   576k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 576k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   576k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   576k|   else                                         \
  |  |  |  |  |  | 1021|   576k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   576k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   576k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 576k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   576k|      { } \
  |  |  633|   576k|    else \
  |  |  634|   576k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   576k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   576k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 576k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  235|   576k|  g_return_if_fail (g_atomic_int_get (arc) > 0);
  ------------------
  |  |  630|   576k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   576k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   576k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   576k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   576k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   576k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   576k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.73M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 576k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 576k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   576k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   576k|   else                                         \
  |  |  |  |  |  | 1021|   576k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   576k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   576k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 576k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   576k|      { } \
  |  |  633|   576k|    else \
  |  |  634|   576k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   576k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   576k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 576k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  236|       |
  237|   576k|  if (g_atomic_int_get (arc) == G_MAXINT)
  ------------------
  |  |   96|   576k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|   576k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|   576k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|   576k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|   576k|    gint gaig_temp;                                                          \
  |  |   99|   576k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 576k]
  |  |  ------------------
  |  |  100|   576k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|   576k|    (gint) gaig_temp;                                                        \
  |  |  102|   576k|  }))
  ------------------
                if (g_atomic_int_get (arc) == G_MAXINT)
  ------------------
  |  |   34|   576k|#define G_MAXINT	INT_MAX
  ------------------
  |  Branch (237:7): [True: 0, False: 576k]
  ------------------
  238|      0|    {
  239|      0|      g_critical ("Reference count has reached saturation");
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
  240|      0|      return;
  241|      0|    }
  242|       |
  243|   576k|  g_atomic_int_inc (arc);
  ------------------
  |  |  148|   576k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|   576k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|   576k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|   576k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|   576k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 576k]
  |  |  ------------------
  |  |  151|   576k|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|   576k|  }))
  ------------------
  244|   576k|}
g_atomic_ref_count_dec:
  258|  2.47M|{
  259|  2.47M|  g_return_val_if_fail (arc != NULL, FALSE);
  ------------------
  |  |  643|  2.47M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.47M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.47M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.47M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.47M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.47M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.47M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.47M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.47M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.47M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.47M|   else                                         \
  |  |  |  |  |  | 1021|  2.47M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.47M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.47M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.47M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.47M|      { } \
  |  |  646|  2.47M|    else \
  |  |  647|  2.47M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  2.47M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.47M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.47M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  260|  2.47M|  g_return_val_if_fail (g_atomic_int_get (arc) > 0, FALSE);
  ------------------
  |  |  643|  2.47M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.47M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.47M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.47M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.47M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.47M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.47M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  7.42M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 2.47M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.47M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.47M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.47M|   else                                         \
  |  |  |  |  |  | 1021|  2.47M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.47M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.47M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.47M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.47M|      { } \
  |  |  646|  2.47M|    else \
  |  |  647|  2.47M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  2.47M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.47M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.47M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  261|       |
  262|  2.47M|  return g_atomic_int_dec_and_test (arc);
  ------------------
  |  |  154|  2.47M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  2.47M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  155|  2.47M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  2.47M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  156|  2.47M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (156:13): [Folded, False: 2.47M]
  |  |  ------------------
  |  |  157|  2.47M|    __atomic_fetch_sub ((atomic), 1, __ATOMIC_SEQ_CST) == 1;                 \
  |  |  158|  2.47M|  }))
  ------------------
  263|  2.47M|}

g_slice_alloc:
 1035|  4.49M|{
 1036|  4.49M|  ThreadMemory *tmem;
 1037|  4.49M|  gsize chunk_size;
 1038|  4.49M|  gpointer mem;
 1039|  4.49M|  guint acat;
 1040|       |
 1041|       |  /* This gets the private structure for this thread.  If the private
 1042|       |   * structure does not yet exist, it is created.
 1043|       |   *
 1044|       |   * This has a side effect of causing GSlice to be initialised, so it
 1045|       |   * must come first.
 1046|       |   */
 1047|  4.49M|  tmem = thread_memory_from_self ();
 1048|       |
 1049|  4.49M|  chunk_size = P2ALIGN (mem_size);
  ------------------
  |  |  207|  4.49M|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  ------------------
 1050|  4.49M|  acat = allocator_categorize (chunk_size);
 1051|  4.49M|  if (G_LIKELY (acat == 1))     /* allocate through magazine layer */
  ------------------
  |  | 1024|  4.49M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  4.49M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.49M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  4.49M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  4.49M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 4.49M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  4.49M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  4.49M|   else                                         \
  |  |  |  | 1021|  4.49M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  4.49M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  4.49M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 4.49M, False: 0]
  |  |  ------------------
  ------------------
 1052|  4.49M|    {
 1053|  4.49M|      guint ix = SLAB_INDEX (allocator, chunk_size);
  ------------------
  |  |  199|  4.49M|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  ------------------
  |  |  |  |  190|  4.49M|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1054|  4.49M|      if (G_UNLIKELY (thread_memory_magazine1_is_empty (tmem, ix)))
  ------------------
  |  | 1025|  4.49M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  4.49M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.49M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  4.49M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  4.49M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 306k, False: 4.18M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  4.49M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  4.49M|   else                                         \
  |  |  |  | 1021|  4.49M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  4.49M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  4.49M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 306k, False: 4.18M]
  |  |  ------------------
  ------------------
 1055|   306k|        {
 1056|   306k|          thread_memory_swap_magazines (tmem, ix);
 1057|   306k|          if (G_UNLIKELY (thread_memory_magazine1_is_empty (tmem, ix)))
  ------------------
  |  | 1025|   306k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   306k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   306k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   306k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   306k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 76.2k, False: 230k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   306k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   306k|   else                                         \
  |  |  |  | 1021|   306k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   306k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   306k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 76.2k, False: 230k]
  |  |  ------------------
  ------------------
 1058|  76.2k|            thread_memory_magazine1_reload (tmem, ix);
 1059|   306k|        }
 1060|  4.49M|      mem = thread_memory_magazine1_alloc (tmem, ix);
 1061|  4.49M|    }
 1062|      0|  else if (acat == 2)           /* allocate through slab allocator */
  ------------------
  |  Branch (1062:12): [True: 0, False: 0]
  ------------------
 1063|      0|    {
 1064|      0|      g_mutex_lock (&allocator->slab_mutex);
 1065|      0|      mem = slab_allocator_alloc_chunk (chunk_size);
 1066|      0|      g_mutex_unlock (&allocator->slab_mutex);
 1067|      0|    }
 1068|      0|  else                          /* delegate to system malloc */
 1069|      0|    mem = g_malloc (mem_size);
 1070|  4.49M|  if (G_UNLIKELY (allocator->config.debug_blocks))
  ------------------
  |  | 1025|  4.49M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  4.49M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.49M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  4.49M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  4.49M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 4.49M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  4.49M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  4.49M|   else                                         \
  |  |  |  | 1021|  4.49M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  4.49M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  4.49M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 4.49M]
  |  |  ------------------
  ------------------
 1071|      0|    smc_notify_alloc (mem, mem_size);
 1072|       |
 1073|  4.49M|  TRACE (GLIB_SLICE_ALLOC((void*)mem, mem_size));
 1074|       |
 1075|  4.49M|  return mem;
 1076|  4.49M|}
g_slice_alloc0:
 1094|  1.29M|{
 1095|  1.29M|  gpointer mem = g_slice_alloc (mem_size);
 1096|  1.29M|  if (mem)
  ------------------
  |  Branch (1096:7): [True: 1.29M, False: 0]
  ------------------
 1097|  1.29M|    memset (mem, 0, mem_size);
 1098|  1.29M|  return mem;
 1099|  1.29M|}
g_slice_free1:
 1146|  3.62M|{
 1147|  3.62M|  gsize chunk_size = P2ALIGN (mem_size);
  ------------------
  |  |  207|  3.62M|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  ------------------
 1148|  3.62M|  guint acat = allocator_categorize (chunk_size);
 1149|  3.62M|  if (G_UNLIKELY (!mem_block))
  ------------------
  |  | 1025|  3.62M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.62M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.62M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.62M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.62M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.62M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.62M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.62M|   else                                         \
  |  |  |  | 1021|  3.62M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.62M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.62M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 3.62M]
  |  |  ------------------
  ------------------
 1150|      0|    return;
 1151|  3.62M|  if (G_UNLIKELY (allocator->config.debug_blocks) &&
  ------------------
  |  | 1025|  7.24M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.62M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.62M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.62M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.62M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.62M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.62M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.62M|   else                                         \
  |  |  |  | 1021|  3.62M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.62M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.62M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 3.62M]
  |  |  ------------------
  ------------------
 1152|      0|      !smc_notify_free (mem_block, mem_size))
  ------------------
  |  Branch (1152:7): [True: 0, False: 0]
  ------------------
 1153|      0|    abort();
 1154|  3.62M|  if (G_LIKELY (acat == 1))             /* allocate through magazine layer */
  ------------------
  |  | 1024|  3.62M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  3.62M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.62M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.62M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.62M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 3.62M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.62M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.62M|   else                                         \
  |  |  |  | 1021|  3.62M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.62M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.62M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 3.62M, False: 0]
  |  |  ------------------
  ------------------
 1155|  3.62M|    {
 1156|  3.62M|      ThreadMemory *tmem = thread_memory_from_self();
 1157|  3.62M|      guint ix = SLAB_INDEX (allocator, chunk_size);
  ------------------
  |  |  199|  3.62M|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  ------------------
  |  |  |  |  190|  3.62M|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1158|  3.62M|      if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix)))
  ------------------
  |  | 1025|  3.62M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.62M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.62M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.62M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.62M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 118k, False: 3.50M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.62M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.62M|   else                                         \
  |  |  |  | 1021|  3.62M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.62M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.62M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 118k, False: 3.50M]
  |  |  ------------------
  ------------------
 1159|   118k|        {
 1160|   118k|          thread_memory_swap_magazines (tmem, ix);
 1161|   118k|          if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix)))
  ------------------
  |  | 1025|   118k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   118k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   118k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   118k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   118k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 76.2k, False: 42.3k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   118k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   118k|   else                                         \
  |  |  |  | 1021|   118k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   118k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   118k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 76.2k, False: 42.3k]
  |  |  ------------------
  ------------------
 1162|  76.2k|            thread_memory_magazine2_unload (tmem, ix);
 1163|   118k|        }
 1164|  3.62M|      if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|  3.62M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.62M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.62M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.62M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.62M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.62M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.62M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.62M|   else                                         \
  |  |  |  | 1021|  3.62M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.62M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.62M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 3.62M]
  |  |  ------------------
  ------------------
 1165|      0|        memset (mem_block, 0, chunk_size);
 1166|  3.62M|      thread_memory_magazine2_free (tmem, ix, mem_block);
 1167|  3.62M|    }
 1168|      0|  else if (acat == 2)                   /* allocate through slab allocator */
  ------------------
  |  Branch (1168:12): [True: 0, False: 0]
  ------------------
 1169|      0|    {
 1170|      0|      if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|      0|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      0|   else                                         \
  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  | 1023|      0|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1171|      0|        memset (mem_block, 0, chunk_size);
 1172|      0|      g_mutex_lock (&allocator->slab_mutex);
 1173|      0|      slab_allocator_free_chunk (chunk_size, mem_block);
 1174|      0|      g_mutex_unlock (&allocator->slab_mutex);
 1175|      0|    }
 1176|      0|  else                                  /* delegate to system malloc */
 1177|      0|    {
 1178|      0|      if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|      0|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      0|   else                                         \
  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  | 1023|      0|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1179|      0|        memset (mem_block, 0, mem_size);
 1180|      0|      g_free (mem_block);
 1181|      0|    }
 1182|  3.62M|  TRACE (GLIB_SLICE_FREE((void*)mem_block, mem_size));
 1183|  3.62M|}
g_slice_free_chain_with_offset:
 1209|   862k|{
 1210|   862k|  gpointer slice = mem_chain;
 1211|       |  /* while the thread magazines and the magazine cache are implemented so that
 1212|       |   * they can easily be extended to allow for free lists containing more free
 1213|       |   * lists for the first level nodes, which would allow O(1) freeing in this
 1214|       |   * function, the benefit of such an extension is questionable, because:
 1215|       |   * - the magazine size counts will become mere lower bounds which confuses
 1216|       |   *   the code adapting to lock contention;
 1217|       |   * - freeing a single node to the thread magazines is very fast, so this
 1218|       |   *   O(list_length) operation is multiplied by a fairly small factor;
 1219|       |   * - memory usage histograms on larger applications seem to indicate that
 1220|       |   *   the amount of released multi node lists is negligible in comparison
 1221|       |   *   to single node releases.
 1222|       |   * - the major performance bottle neck, namely g_private_get() or
 1223|       |   *   g_mutex_lock()/g_mutex_unlock() has already been moved out of the
 1224|       |   *   inner loop for freeing chained slices.
 1225|       |   */
 1226|   862k|  gsize chunk_size = P2ALIGN (mem_size);
  ------------------
  |  |  207|   862k|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  ------------------
 1227|   862k|  guint acat = allocator_categorize (chunk_size);
 1228|   862k|  if (G_LIKELY (acat == 1))             /* allocate through magazine layer */
  ------------------
  |  | 1024|   862k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|   862k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   862k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   862k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   862k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 862k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|   862k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   862k|   else                                         \
  |  |  |  | 1021|   862k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   862k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   862k|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 862k, False: 0]
  |  |  ------------------
  ------------------
 1229|   862k|    {
 1230|   862k|      ThreadMemory *tmem = thread_memory_from_self();
 1231|   862k|      guint ix = SLAB_INDEX (allocator, chunk_size);
  ------------------
  |  |  199|   862k|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  ------------------
  |  |  |  |  190|   862k|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1232|  1.72M|      while (slice)
  ------------------
  |  Branch (1232:14): [True: 866k, False: 862k]
  ------------------
 1233|   866k|        {
 1234|   866k|          guint8 *current = slice;
 1235|   866k|          slice = *(gpointer*) (current + next_offset);
 1236|   866k|          if (G_UNLIKELY (allocator->config.debug_blocks) &&
  ------------------
  |  | 1025|  1.73M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   866k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   866k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   866k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   866k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 866k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   866k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   866k|   else                                         \
  |  |  |  | 1021|   866k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   866k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   866k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 866k]
  |  |  ------------------
  ------------------
 1237|      0|              !smc_notify_free (current, mem_size))
  ------------------
  |  Branch (1237:15): [True: 0, False: 0]
  ------------------
 1238|      0|            abort();
 1239|   866k|          if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix)))
  ------------------
  |  | 1025|   866k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   866k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   866k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   866k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   866k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 866k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   866k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   866k|   else                                         \
  |  |  |  | 1021|   866k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   866k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   866k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 866k]
  |  |  ------------------
  ------------------
 1240|      0|            {
 1241|      0|              thread_memory_swap_magazines (tmem, ix);
 1242|      0|              if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix)))
  ------------------
  |  | 1025|      0|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      0|   else                                         \
  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  | 1023|      0|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1243|      0|                thread_memory_magazine2_unload (tmem, ix);
 1244|      0|            }
 1245|   866k|          if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|   866k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   866k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   866k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   866k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   866k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 866k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   866k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   866k|   else                                         \
  |  |  |  | 1021|   866k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   866k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   866k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 866k]
  |  |  ------------------
  ------------------
 1246|      0|            memset (current, 0, chunk_size);
 1247|   866k|          thread_memory_magazine2_free (tmem, ix, current);
 1248|   866k|        }
 1249|   862k|    }
 1250|      0|  else if (acat == 2)                   /* allocate through slab allocator */
  ------------------
  |  Branch (1250:12): [True: 0, False: 0]
  ------------------
 1251|      0|    {
 1252|      0|      g_mutex_lock (&allocator->slab_mutex);
 1253|      0|      while (slice)
  ------------------
  |  Branch (1253:14): [True: 0, False: 0]
  ------------------
 1254|      0|        {
 1255|      0|          guint8 *current = slice;
 1256|      0|          slice = *(gpointer*) (current + next_offset);
 1257|      0|          if (G_UNLIKELY (allocator->config.debug_blocks) &&
  ------------------
  |  | 1025|      0|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      0|   else                                         \
  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  | 1023|      0|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1258|      0|              !smc_notify_free (current, mem_size))
  ------------------
  |  Branch (1258:15): [True: 0, False: 0]
  ------------------
 1259|      0|            abort();
 1260|      0|          if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|      0|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      0|   else                                         \
  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  | 1023|      0|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1261|      0|            memset (current, 0, chunk_size);
 1262|      0|          slab_allocator_free_chunk (chunk_size, current);
 1263|      0|        }
 1264|      0|      g_mutex_unlock (&allocator->slab_mutex);
 1265|      0|    }
 1266|      0|  else                                  /* delegate to system malloc */
 1267|      0|    while (slice)
  ------------------
  |  Branch (1267:12): [True: 0, False: 0]
  ------------------
 1268|      0|      {
 1269|      0|        guint8 *current = slice;
 1270|      0|        slice = *(gpointer*) (current + next_offset);
 1271|      0|        if (G_UNLIKELY (allocator->config.debug_blocks) &&
  ------------------
  |  | 1025|      0|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      0|   else                                         \
  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  | 1023|      0|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1272|      0|            !smc_notify_free (current, mem_size))
  ------------------
  |  Branch (1272:13): [True: 0, False: 0]
  ------------------
 1273|      0|          abort();
 1274|      0|        if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|      0|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      0|   else                                         \
  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  | 1023|      0|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1275|      0|          memset (current, 0, mem_size);
 1276|      0|        g_free (current);
 1277|      0|      }
 1278|   862k|}
gslice.c:allocator_get_magazine_threshold:
  615|  4.61M|{
  616|       |  /* the magazine size calculated here has a lower bound of MIN_MAGAZINE_SIZE,
  617|       |   * which is required by the implementation. also, for moderately sized chunks
  618|       |   * (say >= 64 bytes), magazine sizes shouldn't be much smaller then the number
  619|       |   * of chunks available per page/2 to avoid excessive traffic in the magazine
  620|       |   * cache for small to medium sized structures.
  621|       |   * the upper bound of the magazine size is effectively provided by
  622|       |   * MAX_MAGAZINE_SIZE. for larger chunks, this number is scaled down so that
  623|       |   * the content of a single magazine doesn't exceed ca. 16KB.
  624|       |   */
  625|  4.61M|  gsize chunk_size = SLAB_CHUNK_SIZE (allocator, ix);
  ------------------
  |  |  200|  4.61M|#define SLAB_CHUNK_SIZE(al, ix) (((ix) + 1) * P2ALIGNMENT)
  |  |  ------------------
  |  |  |  |  190|  4.61M|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
  626|  4.61M|  guint threshold = MAX (MIN_MAGAZINE_SIZE, allocator->max_page_size / MAX (5 * chunk_size, 5 * 32));
  ------------------
  |  |  822|  9.23M|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 833, False: 4.61M]
  |  |  |  Branch (822:29): [True: 2.79M, False: 1.82M]
  |  |  |  Branch (822:42): [True: 2.79M, False: 1.82M]
  |  |  ------------------
  ------------------
  627|  4.61M|  guint contention_counter = allocator->contention_counters[ix];
  628|  4.61M|  if (G_UNLIKELY (contention_counter))  /* single CPU bias */
  ------------------
  |  | 1025|  4.61M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  4.61M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.61M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  4.61M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  4.61M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 4.61M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  4.61M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  4.61M|   else                                         \
  |  |  |  | 1021|  4.61M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  4.61M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  4.61M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 4.61M]
  |  |  ------------------
  ------------------
  629|      0|    {
  630|       |      /* adapt contention counter thresholds to chunk sizes */
  631|      0|      contention_counter = contention_counter * 64 / chunk_size;
  632|      0|      threshold = MAX (threshold, contention_counter);
  ------------------
  |  |  822|      0|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  633|      0|    }
  634|  4.61M|  return threshold;
  635|  4.61M|}
gslice.c:thread_memory_from_self:
  551|  8.97M|{
  552|  8.97M|  ThreadMemory *tmem = g_private_get (&private_thread_memory);
  553|  8.97M|  if (G_UNLIKELY (!tmem))
  ------------------
  |  | 1025|  8.97M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  8.97M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  8.97M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  8.97M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  8.97M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 2, False: 8.97M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  8.97M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  8.97M|   else                                         \
  |  |  |  | 1021|  8.97M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  8.97M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  8.97M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 2, False: 8.97M]
  |  |  ------------------
  ------------------
  554|      2|    {
  555|      2|      static GMutex init_mutex;
  556|      2|      guint n_magazines;
  557|       |
  558|      2|      g_mutex_lock (&init_mutex);
  559|      2|      if G_UNLIKELY (sys_page_size == 0)
  ------------------
  |  | 1025|      2|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      2|   else                                         \
  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  | 1023|      2|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  560|      2|        g_slice_init_nomessage ();
  561|      2|      g_mutex_unlock (&init_mutex);
  562|       |
  563|      2|      n_magazines = MAX_SLAB_INDEX (allocator);
  ------------------
  |  |  198|      2|#define MAX_SLAB_INDEX(al)      (SLAB_INDEX (al, MAX_SLAB_CHUNK_SIZE (al)) + 1)
  |  |  ------------------
  |  |  |  |  199|      2|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  |  |  ------------------
  |  |  |  |  |  |  190|      2|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  564|      2|      tmem = g_private_set_alloc0 (&private_thread_memory, sizeof (ThreadMemory) + sizeof (Magazine) * 2 * n_magazines);
  565|      2|      tmem->magazine1 = (Magazine*) (tmem + 1);
  566|      2|      tmem->magazine2 = &tmem->magazine1[n_magazines];
  567|      2|    }
  568|  8.97M|  return tmem;
  569|  8.97M|}
gslice.c:magazine_cache_push_magazine:
  734|  76.2k|{
  735|  76.2k|  ChunkLink *current = magazine_chain_prepare_fields (magazine_chunks);
  736|  76.2k|  ChunkLink *next, *prev;
  737|  76.2k|  g_mutex_lock (&allocator->magazine_mutex);
  738|       |  /* add magazine at head */
  739|  76.2k|  next = allocator->magazines[ix];
  740|  76.2k|  if (next)
  ------------------
  |  Branch (740:7): [True: 75.8k, False: 423]
  ------------------
  741|  75.8k|    prev = magazine_chain_prev (next);
  ------------------
  |  |  672|  75.8k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  742|    423|  else
  743|    423|    next = prev = current;
  744|  76.2k|  magazine_chain_next (prev) = current;
  ------------------
  |  |  675|  76.2k|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  745|  76.2k|  magazine_chain_prev (next) = current;
  ------------------
  |  |  672|  76.2k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  746|  76.2k|  magazine_chain_prev (current) = prev;
  ------------------
  |  |  672|  76.2k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  747|  76.2k|  magazine_chain_next (current) = next;
  ------------------
  |  |  675|  76.2k|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  748|  76.2k|  magazine_chain_count (current) = (gpointer) count;
  ------------------
  |  |  676|  76.2k|#define magazine_chain_count(mc)        ((mc)->next->next->next->data)
  ------------------
  749|       |  /* stamp magazine */
  750|  76.2k|  magazine_cache_update_stamp();
  751|  76.2k|  magazine_chain_stamp (current) = GUINT_TO_POINTER (allocator->last_stamp);
  ------------------
  |  |  673|  76.2k|#define magazine_chain_stamp(mc)        ((mc)->next->data)
  ------------------
                magazine_chain_stamp (current) = GUINT_TO_POINTER (allocator->last_stamp);
  ------------------
  |  |  102|  76.2k|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  752|  76.2k|  allocator->magazines[ix] = current;
  753|       |  /* free old magazines beyond a certain threshold */
  754|  76.2k|  magazine_cache_trim (allocator, ix, allocator->last_stamp);
  755|       |  /* g_mutex_unlock (allocator->mutex); was done by magazine_cache_trim() */
  756|  76.2k|}
gslice.c:magazine_chain_prepare_fields:
  653|  76.2k|{
  654|  76.2k|  ChunkLink *chunk1;
  655|  76.2k|  ChunkLink *chunk2;
  656|  76.2k|  ChunkLink *chunk3;
  657|  76.2k|  ChunkLink *chunk4;
  658|       |  /* checked upon initialization: mem_assert (MIN_MAGAZINE_SIZE >= 4); */
  659|       |  /* ensure a magazine with at least 4 unused data pointers */
  660|  76.2k|  chunk1 = magazine_chain_pop_head (&magazine_chunks);
  661|  76.2k|  chunk2 = magazine_chain_pop_head (&magazine_chunks);
  662|  76.2k|  chunk3 = magazine_chain_pop_head (&magazine_chunks);
  663|  76.2k|  chunk4 = magazine_chain_pop_head (&magazine_chunks);
  664|  76.2k|  chunk4->next = magazine_chunks;
  665|  76.2k|  chunk3->next = chunk4;
  666|  76.2k|  chunk2->next = chunk3;
  667|  76.2k|  chunk1->next = chunk2;
  668|  76.2k|  return chunk1;
  669|  76.2k|}
gslice.c:magazine_cache_update_stamp:
  640|  76.2k|{
  641|  76.2k|  if (allocator->stamp_counter >= MAX_STAMP_COUNTER)
  ------------------
  |  |  196|  76.2k|#define MAX_STAMP_COUNTER       (7)                                             /* distributes the load of gettimeofday() */
  ------------------
  |  Branch (641:7): [True: 9.53k, False: 66.7k]
  ------------------
  642|  9.53k|    {
  643|  9.53k|      gint64 now_us = g_get_real_time ();
  644|  9.53k|      allocator->last_stamp = now_us / 1000; /* milli seconds */
  645|  9.53k|      allocator->stamp_counter = 0;
  646|  9.53k|    }
  647|  66.7k|  else
  648|  66.7k|    allocator->stamp_counter++;
  649|  76.2k|}
gslice.c:magazine_cache_trim:
  682|  76.2k|{
  683|       |  /* g_mutex_lock (allocator->mutex); done by caller */
  684|       |  /* trim magazine cache from tail */
  685|  76.2k|  ChunkLink *current = magazine_chain_prev (allocator->magazines[ix]);
  ------------------
  |  |  672|  76.2k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  686|  76.2k|  ChunkLink *trash = NULL;
  687|  76.2k|  while (!G_APPROX_VALUE(stamp, magazine_chain_uint_stamp (current),
  ------------------
  |  |  834|  76.2k|  (((a) > (b) ? (a) - (b) : (b) - (a)) < (epsilon))
  |  |  ------------------
  |  |  |  Branch (834:5): [True: 72.5k, False: 3.67k]
  |  |  ------------------
  ------------------
  |  Branch (687:10): [True: 0, False: 76.2k]
  ------------------
  688|  76.2k|                         allocator->config.working_set_msecs))
  689|      0|    {
  690|       |      /* unlink */
  691|      0|      ChunkLink *prev = magazine_chain_prev (current);
  ------------------
  |  |  672|      0|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  692|      0|      ChunkLink *next = magazine_chain_next (current);
  ------------------
  |  |  675|      0|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  693|      0|      magazine_chain_next (prev) = next;
  ------------------
  |  |  675|      0|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  694|      0|      magazine_chain_prev (next) = prev;
  ------------------
  |  |  672|      0|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  695|       |      /* clear special fields, put on trash stack */
  696|      0|      magazine_chain_next (current) = NULL;
  ------------------
  |  |  675|      0|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  697|      0|      magazine_chain_count (current) = NULL;
  ------------------
  |  |  676|      0|#define magazine_chain_count(mc)        ((mc)->next->next->next->data)
  ------------------
  698|      0|      magazine_chain_stamp (current) = NULL;
  ------------------
  |  |  673|      0|#define magazine_chain_stamp(mc)        ((mc)->next->data)
  ------------------
  699|      0|      magazine_chain_prev (current) = trash;
  ------------------
  |  |  672|      0|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  700|      0|      trash = current;
  701|       |      /* fixup list head if required */
  702|      0|      if (current == allocator->magazines[ix])
  ------------------
  |  Branch (702:11): [True: 0, False: 0]
  ------------------
  703|      0|        {
  704|      0|          allocator->magazines[ix] = NULL;
  705|      0|          break;
  706|      0|        }
  707|      0|      current = prev;
  708|      0|    }
  709|  76.2k|  g_mutex_unlock (&allocator->magazine_mutex);
  710|       |  /* free trash */
  711|  76.2k|  if (trash)
  ------------------
  |  Branch (711:7): [True: 0, False: 76.2k]
  ------------------
  712|      0|    {
  713|      0|      const gsize chunk_size = SLAB_CHUNK_SIZE (allocator, ix);
  ------------------
  |  |  200|      0|#define SLAB_CHUNK_SIZE(al, ix) (((ix) + 1) * P2ALIGNMENT)
  |  |  ------------------
  |  |  |  |  190|      0|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
  714|      0|      g_mutex_lock (&allocator->slab_mutex);
  715|      0|      while (trash)
  ------------------
  |  Branch (715:14): [True: 0, False: 0]
  ------------------
  716|      0|        {
  717|      0|          current = trash;
  718|      0|          trash = magazine_chain_prev (current);
  ------------------
  |  |  672|      0|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  719|      0|          magazine_chain_prev (current) = NULL; /* clear special field */
  ------------------
  |  |  672|      0|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  720|      0|          while (current)
  ------------------
  |  Branch (720:18): [True: 0, False: 0]
  ------------------
  721|      0|            {
  722|      0|              ChunkLink *chunk = magazine_chain_pop_head (&current);
  723|      0|              slab_allocator_free_chunk (chunk_size, chunk);
  724|      0|            }
  725|      0|        }
  726|      0|      g_mutex_unlock (&allocator->slab_mutex);
  727|      0|    }
  728|  76.2k|}
gslice.c:magazine_chain_pop_head:
  573|  4.79M|{
  574|       |  /* magazine chains are linked via ChunkLink->next.
  575|       |   * each ChunkLink->data of the toplevel chain may point to a subchain,
  576|       |   * linked via ChunkLink->next. ChunkLink->data of the subchains just
  577|       |   * contains uninitialized junk.
  578|       |   */
  579|  4.79M|  ChunkLink *chunk = (*magazine_chunks)->data;
  580|  4.79M|  if (G_UNLIKELY (chunk))
  ------------------
  |  | 1025|  4.79M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  4.79M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.79M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  4.79M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  4.79M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 4.79M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  4.79M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  4.79M|   else                                         \
  |  |  |  | 1021|  4.79M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  4.79M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  4.79M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 4.79M]
  |  |  ------------------
  ------------------
  581|      0|    {
  582|       |      /* allocating from freed list */
  583|      0|      (*magazine_chunks)->data = chunk->next;
  584|      0|    }
  585|  4.79M|  else
  586|  4.79M|    {
  587|  4.79M|      chunk = *magazine_chunks;
  588|  4.79M|      *magazine_chunks = chunk->next;
  589|  4.79M|    }
  590|  4.79M|  return chunk;
  591|  4.79M|}
gslice.c:g_slice_init_nomessage:
  443|      2|{
  444|       |  /* we may not use g_error() or friends here */
  445|      2|  mem_assert (sys_page_size == 0);
  ------------------
  |  |  214|      2|#define mem_assert(cond)    do { if (G_LIKELY (cond)) ; else mem_error ("assertion failed: %s", #cond); } while (0)
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (214:114): [Folded, False: 2]
  |  |  ------------------
  ------------------
  446|      2|  mem_assert (MIN_MAGAZINE_SIZE >= 4);
  ------------------
  |  |  214|      2|#define mem_assert(cond)    do { if (G_LIKELY (cond)) ; else mem_error ("assertion failed: %s", #cond); } while (0)
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (214:114): [Folded, False: 2]
  |  |  ------------------
  ------------------
  447|       |
  448|       |#ifdef G_OS_WIN32
  449|       |  {
  450|       |    SYSTEM_INFO system_info;
  451|       |    GetSystemInfo (&system_info);
  452|       |    sys_page_size = system_info.dwPageSize;
  453|       |  }
  454|       |#else
  455|      2|  sys_page_size = sysconf (_SC_PAGESIZE); /* = sysconf (_SC_PAGE_SIZE); = getpagesize(); */
  456|      2|#endif
  457|      2|  mem_assert (sys_page_size >= 2 * LARGEALIGNMENT);
  ------------------
  |  |  214|      2|#define mem_assert(cond)    do { if (G_LIKELY (cond)) ; else mem_error ("assertion failed: %s", #cond); } while (0)
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (214:114): [Folded, False: 2]
  |  |  ------------------
  ------------------
  458|      2|  mem_assert ((sys_page_size & (sys_page_size - 1)) == 0);
  ------------------
  |  |  214|      2|#define mem_assert(cond)    do { if (G_LIKELY (cond)) ; else mem_error ("assertion failed: %s", #cond); } while (0)
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (214:114): [Folded, False: 2]
  |  |  ------------------
  ------------------
  459|      2|  slice_config_init (&allocator->config);
  460|      2|  allocator->min_page_size = sys_page_size;
  461|      2|#if HAVE_POSIX_MEMALIGN || HAVE_MEMALIGN
  462|       |  /* allow allocation of pages up to 8KB (with 8KB alignment).
  463|       |   * this is useful because many medium to large sized structures
  464|       |   * fit less than 8 times (see [4]) into 4KB pages.
  465|       |   * we allow very small page sizes here, to reduce wastage in
  466|       |   * threads if only small allocations are required (this does
  467|       |   * bear the risk of increasing allocation times and fragmentation
  468|       |   * though).
  469|       |   */
  470|      2|  allocator->min_page_size = MAX (allocator->min_page_size, 4096);
  ------------------
  |  |  822|      2|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  471|      2|  allocator->max_page_size = MAX (allocator->min_page_size, 8192);
  ------------------
  |  |  822|      2|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  472|      2|  allocator->min_page_size = MIN (allocator->min_page_size, 128);
  ------------------
  |  |  825|      2|#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (825:21): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  473|       |#else
  474|       |  /* we can only align to system page size */
  475|       |  allocator->max_page_size = sys_page_size;
  476|       |#endif
  477|      2|  if (allocator->config.always_malloc)
  ------------------
  |  Branch (477:7): [True: 0, False: 2]
  ------------------
  478|      0|    {
  479|      0|      allocator->contention_counters = NULL;
  480|      0|      allocator->magazines = NULL;
  481|      0|      allocator->slab_stack = NULL;
  482|      0|    }
  483|      2|  else
  484|      2|    {
  485|      2|      allocator->contention_counters = g_new0 (guint, MAX_SLAB_INDEX (allocator));
  ------------------
  |  |  307|      2|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|      2|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      2|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      2|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      2|	  gpointer __p;						\
  |  |  |  |  239|      2|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  240|      2|	    __p = g_##func (__n);				\
  |  |  |  |  241|      2|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  242|      2|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      2|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      2|	  else							\
  |  |  |  |  245|      2|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      2|	  __p;							\
  |  |  |  |  247|      2|	}))
  |  |  ------------------
  ------------------
  486|      2|      allocator->magazines = g_new0 (ChunkLink*, MAX_SLAB_INDEX (allocator));
  ------------------
  |  |  307|      2|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|      2|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      2|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      2|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      2|	  gpointer __p;						\
  |  |  |  |  239|      2|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  240|      2|	    __p = g_##func (__n);				\
  |  |  |  |  241|      2|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  242|      2|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      2|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      2|	  else							\
  |  |  |  |  245|      2|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      2|	  __p;							\
  |  |  |  |  247|      2|	}))
  |  |  ------------------
  ------------------
  487|      2|      allocator->slab_stack = g_new0 (SlabInfo*, MAX_SLAB_INDEX (allocator));
  ------------------
  |  |  307|      2|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|      2|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      2|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      2|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      2|	  gpointer __p;						\
  |  |  |  |  239|      2|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  240|      2|	    __p = g_##func (__n);				\
  |  |  |  |  241|      2|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  242|      2|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      2|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      2|	  else							\
  |  |  |  |  245|      2|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      2|	  __p;							\
  |  |  |  |  247|      2|	}))
  |  |  ------------------
  ------------------
  488|      2|    }
  489|       |
  490|      2|  allocator->mutex_counter = 0;
  491|      2|  allocator->stamp_counter = MAX_STAMP_COUNTER; /* force initial update */
  ------------------
  |  |  196|      2|#define MAX_STAMP_COUNTER       (7)                                             /* distributes the load of gettimeofday() */
  ------------------
  492|      2|  allocator->last_stamp = 0;
  493|      2|  allocator->color_accu = 0;
  494|      2|  magazine_cache_update_stamp();
  495|       |  /* values cached for performance reasons */
  496|      2|  allocator->max_slab_chunk_size_for_magazine_cache = MAX_SLAB_CHUNK_SIZE (allocator);
  ------------------
  |  |  197|      2|#define MAX_SLAB_CHUNK_SIZE(al) (((al)->max_page_size - SLAB_INFO_SIZE) / 8)    /* we want at last 8 chunks per page, see [4] */
  |  |  ------------------
  |  |  |  |  193|      2|#define SLAB_INFO_SIZE          P2ALIGN (sizeof (SlabInfo) + NATIVE_MALLOC_PADDING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      2|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  497|      2|  if (allocator->config.always_malloc || allocator->config.bypass_magazines)
  ------------------
  |  Branch (497:7): [True: 0, False: 2]
  |  Branch (497:42): [True: 0, False: 2]
  ------------------
  498|      0|    allocator->max_slab_chunk_size_for_magazine_cache = 0;      /* non-optimized cases */
  499|      2|}
gslice.c:slice_config_init:
  362|      2|{
  363|      2|  const gchar *val;
  364|      2|  gchar *val_allocated = NULL;
  365|       |
  366|      2|  *config = slice_config;
  367|       |
  368|       |  /* Note that the empty string (`G_SLICE=""`) is treated differently from the
  369|       |   * envvar being unset. In the latter case, we also check whether running under
  370|       |   * valgrind. */
  371|      2|#ifndef G_OS_WIN32
  372|      2|  val = g_getenv ("G_SLICE");
  373|       |#else
  374|       |  /* The win32 implementation of g_getenv() has to do UTF-8 ↔ UTF-16 conversions
  375|       |   * which use the slice allocator, leading to deadlock. Use a simple in-place
  376|       |   * implementation here instead.
  377|       |   *
  378|       |   * Ignore references to other environment variables: only support values which
  379|       |   * are a combination of always-malloc and debug-blocks. */
  380|       |  {
  381|       |
  382|       |  wchar_t wvalue[128];  /* at least big enough for `always-malloc,debug-blocks` */
  383|       |  int len;
  384|       |
  385|       |  len = GetEnvironmentVariableW (L"G_SLICE", wvalue, G_N_ELEMENTS (wvalue));
  386|       |
  387|       |  if (len == 0)
  388|       |    {
  389|       |      if (GetLastError () == ERROR_ENVVAR_NOT_FOUND)
  390|       |        val = NULL;
  391|       |      else
  392|       |        val = "";
  393|       |    }
  394|       |  else if (len >= G_N_ELEMENTS (wvalue))
  395|       |    {
  396|       |      /* @wvalue isn’t big enough. Give up. */
  397|       |      g_warning ("Unsupported G_SLICE value");
  398|       |      val = NULL;
  399|       |    }
  400|       |  else
  401|       |    {
  402|       |      /* it’s safe to use g_utf16_to_utf8() here as it only allocates using
  403|       |       * malloc() rather than GSlice */
  404|       |      val = val_allocated = g_utf16_to_utf8 (wvalue, -1, NULL, NULL, NULL);
  405|       |    }
  406|       |
  407|       |  }
  408|       |#endif  /* G_OS_WIN32 */
  409|       |
  410|      2|  if (val != NULL)
  ------------------
  |  Branch (410:7): [True: 0, False: 2]
  ------------------
  411|      0|    {
  412|      0|      gint flags;
  413|      0|      const GDebugKey keys[] = {
  414|      0|        { "always-malloc", 1 << 0 },
  415|      0|        { "debug-blocks",  1 << 1 },
  416|      0|      };
  417|       |
  418|      0|      flags = g_parse_debug_string (val, keys, G_N_ELEMENTS (keys));
  ------------------
  |  |  840|      0|#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
  ------------------
  419|      0|      if (flags & (1 << 0))
  ------------------
  |  Branch (419:11): [True: 0, False: 0]
  ------------------
  420|      0|        config->always_malloc = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  421|      0|      if (flags & (1 << 1))
  ------------------
  |  Branch (421:11): [True: 0, False: 0]
  ------------------
  422|      0|        config->debug_blocks = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  423|      0|    }
  424|      2|  else
  425|      2|    {
  426|       |      /* G_SLICE was not specified, so check if valgrind is running and
  427|       |       * disable ourselves if it is.
  428|       |       *
  429|       |       * This way it's possible to force gslice to be enabled under
  430|       |       * valgrind just by setting G_SLICE to the empty string.
  431|       |       */
  432|      2|#ifdef ENABLE_VALGRIND
  433|      2|      if (RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|      2|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|      2|    __extension__                                                 \
  |  |  |  |  414|      2|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|      2|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|      2|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|      2|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|      2|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|      2|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|      2|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|      2|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|      2|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|      2|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|      2|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|      2|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|      2|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|      2|                     : "cc", "memory"                             \
  |  |  |  |  428|      2|                    );                                            \
  |  |  |  |  429|      2|    _zzq_result;                                                  \
  |  |  |  |  430|      2|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 2]
  |  |  ------------------
  |  | 6216|      2|                                    VG_USERREQ__RUNNING_ON_VALGRIND,  \
  |  | 6217|      2|                                    0, 0, 0, 0, 0)                    \
  ------------------
  434|      0|        config->always_malloc = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  435|      2|#endif
  436|      2|    }
  437|       |
  438|      2|  g_free (val_allocated);
  439|      2|}
gslice.c:allocator_categorize:
  503|  8.97M|{
  504|       |  /* speed up the likely path */
  505|  8.97M|  if (G_LIKELY (aligned_chunk_size && aligned_chunk_size <= allocator->max_slab_chunk_size_for_magazine_cache))
  ------------------
  |  | 1024|  8.97M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  8.97M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  8.97M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  8.97M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  26.9M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 8.97M, False: 0]
  |  |  |  |  |  Branch (1018:8): [True: 8.97M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  8.97M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  8.97M|   else                                         \
  |  |  |  | 1021|  8.97M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  8.97M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  8.97M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 8.97M, False: 0]
  |  |  ------------------
  ------------------
  506|  8.97M|    return 1;           /* use magazine cache */
  507|       |
  508|      0|  if (!allocator->config.always_malloc &&
  ------------------
  |  Branch (508:7): [True: 0, False: 0]
  ------------------
  509|      0|      aligned_chunk_size &&
  ------------------
  |  Branch (509:7): [True: 0, False: 0]
  ------------------
  510|      0|      aligned_chunk_size <= MAX_SLAB_CHUNK_SIZE (allocator))
  ------------------
  |  |  197|      0|#define MAX_SLAB_CHUNK_SIZE(al) (((al)->max_page_size - SLAB_INFO_SIZE) / 8)    /* we want at last 8 chunks per page, see [4] */
  |  |  ------------------
  |  |  |  |  193|      0|#define SLAB_INFO_SIZE          P2ALIGN (sizeof (SlabInfo) + NATIVE_MALLOC_PADDING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (510:7): [True: 0, False: 0]
  ------------------
  511|      0|    {
  512|      0|      if (allocator->config.bypass_magazines)
  ------------------
  |  Branch (512:11): [True: 0, False: 0]
  ------------------
  513|      0|        return 2;       /* use slab allocator, see [2] */
  514|      0|      return 1;         /* use magazine cache */
  515|      0|    }
  516|      0|  return 0;             /* use malloc() */
  517|      0|}
gslice.c:thread_memory_magazine1_is_empty:
  870|  4.79M|{
  871|       |  return tmem->magazine1[ix].chunks == NULL;
  872|  4.79M|}
gslice.c:thread_memory_swap_magazines:
  861|   425k|{
  862|   425k|  Magazine xmag = tmem->magazine1[ix];
  863|   425k|  tmem->magazine1[ix] = tmem->magazine2[ix];
  864|   425k|  tmem->magazine2[ix] = xmag;
  865|   425k|}
gslice.c:thread_memory_magazine1_reload:
  841|  76.2k|{
  842|  76.2k|  Magazine *mag = &tmem->magazine1[ix];
  843|  76.2k|  mem_assert (mag->chunks == NULL); /* ensure that we may reset mag->count */
  ------------------
  |  |  214|  76.2k|#define mem_assert(cond)    do { if (G_LIKELY (cond)) ; else mem_error ("assertion failed: %s", #cond); } while (0)
  |  |  ------------------
  |  |  |  | 1024|  76.2k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  76.2k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  76.2k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  76.2k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  76.2k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 76.2k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  76.2k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  76.2k|   else                                         \
  |  |  |  |  |  | 1021|  76.2k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  76.2k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  76.2k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 76.2k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (214:114): [Folded, False: 76.2k]
  |  |  ------------------
  ------------------
  844|  76.2k|  mag->count = 0;
  845|  76.2k|  mag->chunks = magazine_cache_pop_magazine (ix, &mag->count);
  846|  76.2k|}
gslice.c:magazine_cache_pop_magazine:
  761|  76.2k|{
  762|  76.2k|  g_mutex_lock_a (&allocator->magazine_mutex, &allocator->contention_counters[ix]);
  763|  76.2k|  if (!allocator->magazines[ix])
  ------------------
  |  Branch (763:7): [True: 8.40k, False: 67.8k]
  ------------------
  764|  8.40k|    {
  765|  8.40k|      guint magazine_threshold = allocator_get_magazine_threshold (allocator, ix);
  766|  8.40k|      gsize i, chunk_size = SLAB_CHUNK_SIZE (allocator, ix);
  ------------------
  |  |  200|  8.40k|#define SLAB_CHUNK_SIZE(al, ix) (((ix) + 1) * P2ALIGNMENT)
  |  |  ------------------
  |  |  |  |  190|  8.40k|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
  767|  8.40k|      ChunkLink *chunk, *head;
  768|  8.40k|      g_mutex_unlock (&allocator->magazine_mutex);
  769|  8.40k|      g_mutex_lock (&allocator->slab_mutex);
  770|  8.40k|      head = slab_allocator_alloc_chunk (chunk_size);
  771|  8.40k|      head->data = NULL;
  772|  8.40k|      chunk = head;
  773|   112k|      for (i = 1; i < magazine_threshold; i++)
  ------------------
  |  Branch (773:19): [True: 104k, False: 8.40k]
  ------------------
  774|   104k|        {
  775|   104k|          chunk->next = slab_allocator_alloc_chunk (chunk_size);
  776|   104k|          chunk = chunk->next;
  777|   104k|          chunk->data = NULL;
  778|   104k|        }
  779|  8.40k|      chunk->next = NULL;
  780|  8.40k|      g_mutex_unlock (&allocator->slab_mutex);
  781|  8.40k|      *countp = i;
  782|  8.40k|      return head;
  783|  8.40k|    }
  784|  67.8k|  else
  785|  67.8k|    {
  786|  67.8k|      ChunkLink *current = allocator->magazines[ix];
  787|  67.8k|      ChunkLink *prev = magazine_chain_prev (current);
  ------------------
  |  |  672|  67.8k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  788|  67.8k|      ChunkLink *next = magazine_chain_next (current);
  ------------------
  |  |  675|  67.8k|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  789|       |      /* unlink */
  790|  67.8k|      magazine_chain_next (prev) = next;
  ------------------
  |  |  675|  67.8k|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  791|  67.8k|      magazine_chain_prev (next) = prev;
  ------------------
  |  |  672|  67.8k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  792|  67.8k|      allocator->magazines[ix] = next == current ? NULL : next;
  ------------------
  |  Branch (792:34): [True: 417, False: 67.4k]
  ------------------
  793|  67.8k|      g_mutex_unlock (&allocator->magazine_mutex);
  794|       |      /* clear special fields and hand out */
  795|  67.8k|      *countp = (gsize) magazine_chain_count (current);
  ------------------
  |  |  676|  67.8k|#define magazine_chain_count(mc)        ((mc)->next->next->next->data)
  ------------------
  796|  67.8k|      magazine_chain_prev (current) = NULL;
  ------------------
  |  |  672|  67.8k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  797|  67.8k|      magazine_chain_next (current) = NULL;
  ------------------
  |  |  675|  67.8k|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  798|  67.8k|      magazine_chain_count (current) = NULL;
  ------------------
  |  |  676|  67.8k|#define magazine_chain_count(mc)        ((mc)->next->next->next->data)
  ------------------
  799|  67.8k|      magazine_chain_stamp (current) = NULL;
  ------------------
  |  |  673|  67.8k|#define magazine_chain_stamp(mc)        ((mc)->next->data)
  ------------------
  800|  67.8k|      return current;
  801|  67.8k|    }
  802|  76.2k|}
gslice.c:g_mutex_lock_a:
  522|  76.2k|{
  523|  76.2k|  gboolean contention = FALSE;
  ------------------
  |  |  814|  76.2k|#define	FALSE	(0)
  ------------------
  524|  76.2k|  if (!g_mutex_trylock (mutex))
  ------------------
  |  Branch (524:7): [True: 0, False: 76.2k]
  ------------------
  525|      0|    {
  526|      0|      g_mutex_lock (mutex);
  527|      0|      contention = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  528|      0|    }
  529|  76.2k|  if (contention)
  ------------------
  |  Branch (529:7): [True: 0, False: 76.2k]
  ------------------
  530|      0|    {
  531|      0|      allocator->mutex_counter++;
  532|      0|      if (allocator->mutex_counter >= 1)        /* quickly adapt to contention */
  ------------------
  |  Branch (532:11): [True: 0, False: 0]
  ------------------
  533|      0|        {
  534|      0|          allocator->mutex_counter = 0;
  535|      0|          *contention_counter = MIN (*contention_counter + 1, MAX_MAGAZINE_SIZE);
  ------------------
  |  |  825|      0|#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (825:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  536|      0|        }
  537|      0|    }
  538|  76.2k|  else /* !contention */
  539|  76.2k|    {
  540|  76.2k|      allocator->mutex_counter--;
  541|  76.2k|      if (allocator->mutex_counter < -11)       /* moderately recover magazine sizes */
  ------------------
  |  Branch (541:11): [True: 6.35k, False: 69.9k]
  ------------------
  542|  6.35k|        {
  543|  6.35k|          allocator->mutex_counter = 0;
  544|  6.35k|          *contention_counter = MAX (*contention_counter, 1) - 1;
  ------------------
  |  |  822|  6.35k|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 0, False: 6.35k]
  |  |  ------------------
  ------------------
  545|  6.35k|        }
  546|  76.2k|    }
  547|  76.2k|}
gslice.c:thread_memory_magazine1_alloc:
  884|  4.49M|{
  885|  4.49M|  Magazine *mag = &tmem->magazine1[ix];
  886|  4.49M|  ChunkLink *chunk = magazine_chain_pop_head (&mag->chunks);
  887|  4.49M|  if (G_LIKELY (mag->count > 0))
  ------------------
  |  | 1024|  4.49M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  4.49M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.49M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  4.49M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  4.49M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 4.49M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  4.49M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  4.49M|   else                                         \
  |  |  |  | 1021|  4.49M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  4.49M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  4.49M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 4.49M, False: 0]
  |  |  ------------------
  ------------------
  888|  4.49M|    mag->count--;
  889|  4.49M|  return chunk;
  890|  4.49M|}
gslice.c:thread_memory_magazine2_is_full:
  877|  4.60M|{
  878|  4.60M|  return tmem->magazine2[ix].count >= allocator_get_magazine_threshold (allocator, ix);
  879|  4.60M|}
gslice.c:thread_memory_magazine2_unload:
  851|  76.2k|{
  852|  76.2k|  Magazine *mag = &tmem->magazine2[ix];
  853|  76.2k|  magazine_cache_push_magazine (ix, mag->chunks, mag->count);
  854|       |  mag->chunks = NULL;
  855|  76.2k|  mag->count = 0;
  856|  76.2k|}
gslice.c:thread_memory_magazine2_free:
  896|  4.49M|{
  897|  4.49M|  Magazine *mag = &tmem->magazine2[ix];
  898|  4.49M|  ChunkLink *chunk = mem;
  899|       |  chunk->data = NULL;
  900|  4.49M|  chunk->next = mag->chunks;
  901|  4.49M|  mag->chunks = chunk;
  902|  4.49M|  mag->count++;
  903|  4.49M|}
gslice.c:slab_allocator_alloc_chunk:
 1369|   112k|{
 1370|   112k|  ChunkLink *chunk;
 1371|   112k|  guint ix = SLAB_INDEX (allocator, chunk_size);
  ------------------
  |  |  199|   112k|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  ------------------
  |  |  |  |  190|   112k|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1372|       |  /* ensure non-empty slab */
 1373|   112k|  if (!allocator->slab_stack[ix] || !allocator->slab_stack[ix]->chunks)
  ------------------
  |  Branch (1373:7): [True: 16, False: 112k]
  |  Branch (1373:37): [True: 11.2k, False: 101k]
  ------------------
 1374|  11.2k|    allocator_add_slab (allocator, ix, chunk_size);
 1375|       |  /* allocate chunk */
 1376|   112k|  chunk = allocator->slab_stack[ix]->chunks;
 1377|   112k|  allocator->slab_stack[ix]->chunks = chunk->next;
 1378|   112k|  allocator->slab_stack[ix]->n_allocated++;
 1379|       |  /* rotate empty slabs */
 1380|   112k|  if (!allocator->slab_stack[ix]->chunks)
  ------------------
  |  Branch (1380:7): [True: 11.2k, False: 101k]
  ------------------
 1381|  11.2k|    allocator->slab_stack[ix] = allocator->slab_stack[ix]->next;
 1382|   112k|  return chunk;
 1383|   112k|}
gslice.c:allocator_add_slab:
 1316|  11.2k|{
 1317|  11.2k|  ChunkLink *chunk;
 1318|  11.2k|  SlabInfo *sinfo;
 1319|  11.2k|  gsize addr, padding, n_chunks, color = 0;
 1320|  11.2k|  gsize page_size;
 1321|  11.2k|  int errsv;
 1322|  11.2k|  gpointer aligned_memory;
 1323|  11.2k|  guint8 *mem;
 1324|  11.2k|  guint i;
 1325|       |
 1326|  11.2k|  page_size = allocator_aligned_page_size (allocator, SLAB_BPAGE_SIZE (allocator, chunk_size));
  ------------------
  |  |  201|  11.2k|#define SLAB_BPAGE_SIZE(al,csz) (8 * (csz) + SLAB_INFO_SIZE)
  |  |  ------------------
  |  |  |  |  193|  11.2k|#define SLAB_INFO_SIZE          P2ALIGN (sizeof (SlabInfo) + NATIVE_MALLOC_PADDING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  207|  11.2k|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1327|       |  /* allocate 1 page for the chunks and the slab */
 1328|  11.2k|  aligned_memory = allocator_memalign (page_size, page_size - NATIVE_MALLOC_PADDING);
  ------------------
  |  |  192|  11.2k|#define NATIVE_MALLOC_PADDING   P2ALIGNMENT                                     /* per-page padding left for native malloc(3) see [1] */
  |  |  ------------------
  |  |  |  |  190|  11.2k|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1329|  11.2k|  errsv = errno;
 1330|  11.2k|  mem = aligned_memory;
 1331|       |
 1332|  11.2k|  if (!mem)
  ------------------
  |  Branch (1332:7): [True: 0, False: 11.2k]
  ------------------
 1333|      0|    {
 1334|      0|      const gchar *syserr = strerror (errsv);
 1335|      0|      mem_error ("failed to allocate %u bytes (alignment: %u): %s\n",
 1336|      0|                 (guint) (page_size - NATIVE_MALLOC_PADDING), (guint) page_size, syserr);
  ------------------
  |  |  192|      0|#define NATIVE_MALLOC_PADDING   P2ALIGNMENT                                     /* per-page padding left for native malloc(3) see [1] */
  |  |  ------------------
  |  |  |  |  190|      0|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1337|      0|    }
 1338|       |  /* mask page address */
 1339|  11.2k|  addr = ((gsize) mem / page_size) * page_size;
 1340|       |  /* assert alignment */
 1341|  11.2k|  mem_assert (aligned_memory == (gpointer) addr);
  ------------------
  |  |  214|  11.2k|#define mem_assert(cond)    do { if (G_LIKELY (cond)) ; else mem_error ("assertion failed: %s", #cond); } while (0)
  |  |  ------------------
  |  |  |  | 1024|  11.2k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  11.2k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  11.2k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  11.2k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  11.2k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11.2k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  11.2k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  11.2k|   else                                         \
  |  |  |  |  |  | 1021|  11.2k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  11.2k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  11.2k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 11.2k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (214:114): [Folded, False: 11.2k]
  |  |  ------------------
  ------------------
 1342|       |  /* basic slab info setup */
 1343|  11.2k|  sinfo = (SlabInfo*) (mem + page_size - SLAB_INFO_SIZE);
  ------------------
  |  |  193|  11.2k|#define SLAB_INFO_SIZE          P2ALIGN (sizeof (SlabInfo) + NATIVE_MALLOC_PADDING)
  |  |  ------------------
  |  |  |  |  207|  11.2k|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  |  |  ------------------
  ------------------
 1344|  11.2k|  sinfo->n_allocated = 0;
 1345|  11.2k|  sinfo->chunks = NULL;
 1346|       |  /* figure cache colorization */
 1347|  11.2k|  n_chunks = ((guint8*) sinfo - mem) / chunk_size;
 1348|  11.2k|  padding = ((guint8*) sinfo - mem) - n_chunks * chunk_size;
 1349|  11.2k|  if (padding)
  ------------------
  |  Branch (1349:7): [True: 11.2k, False: 8]
  ------------------
 1350|  11.2k|    {
 1351|  11.2k|      color = (allocator->color_accu * P2ALIGNMENT) % padding;
  ------------------
  |  |  190|  11.2k|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  ------------------
 1352|  11.2k|      allocator->color_accu += allocator->config.color_increment;
 1353|  11.2k|    }
 1354|       |  /* add chunks to free list */
 1355|  11.2k|  chunk = (ChunkLink*) (mem + color);
 1356|  11.2k|  sinfo->chunks = chunk;
 1357|   112k|  for (i = 0; i < n_chunks - 1; i++)
  ------------------
  |  Branch (1357:15): [True: 101k, False: 11.2k]
  ------------------
 1358|   101k|    {
 1359|   101k|      chunk->next = (ChunkLink*) ((guint8*) chunk + chunk_size);
 1360|   101k|      chunk = chunk->next;
 1361|   101k|    }
 1362|  11.2k|  chunk->next = NULL;   /* last chunk */
 1363|       |  /* add slab to slab ring */
 1364|  11.2k|  allocator_slab_stack_push (allocator, ix, sinfo);
 1365|  11.2k|}
gslice.c:allocator_aligned_page_size:
 1306|  11.2k|{
 1307|  11.2k|  gsize val = 1 << g_bit_storage (n_bytes - 1);
  ------------------
  |  |  370|  11.2k|#define g_bit_storage(number)        g_bit_storage_impl(number)
  ------------------
 1308|  11.2k|  val = MAX (val, allocator->min_page_size);
  ------------------
  |  |  822|  11.2k|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 11.2k, False: 0]
  |  |  ------------------
  ------------------
 1309|  11.2k|  return val;
 1310|  11.2k|}
gslice.c:allocator_memalign:
 1452|  11.2k|{
 1453|  11.2k|  gpointer aligned_memory = NULL;
 1454|  11.2k|  gint err = ENOMEM;
 1455|  11.2k|#if     HAVE_POSIX_MEMALIGN
 1456|  11.2k|  err = posix_memalign (&aligned_memory, alignment, memsize);
 1457|       |#elif   HAVE_MEMALIGN
 1458|       |  errno = 0;
 1459|       |  aligned_memory = memalign (alignment, memsize);
 1460|       |  err = errno;
 1461|       |#elif   HAVE_VALLOC
 1462|       |  errno = 0;
 1463|       |  aligned_memory = valloc (memsize);
 1464|       |  err = errno;
 1465|       |#else
 1466|       |  /* simplistic non-freeing page allocator */
 1467|       |  mem_assert (alignment == sys_page_size);
 1468|       |  mem_assert (memsize <= sys_page_size);
 1469|       |  if (!compat_valloc_trash)
 1470|       |    {
 1471|       |      const guint n_pages = 16;
 1472|       |      guint8 *mem = malloc (n_pages * sys_page_size);
 1473|       |      err = errno;
 1474|       |      if (mem)
 1475|       |        {
 1476|       |          gint i = n_pages;
 1477|       |          guint8 *amem = (guint8*) ALIGN ((gsize) mem, sys_page_size);
 1478|       |          if (amem != mem)
 1479|       |            i--;        /* mem wasn't page aligned */
 1480|       |          G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 1481|       |          while (--i >= 0)
 1482|       |            g_trash_stack_push (&compat_valloc_trash, amem + i * sys_page_size);
 1483|       |          G_GNUC_END_IGNORE_DEPRECATIONS
 1484|       |        }
 1485|       |    }
 1486|       |  G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 1487|       |  aligned_memory = g_trash_stack_pop (&compat_valloc_trash);
 1488|       |  G_GNUC_END_IGNORE_DEPRECATIONS
 1489|       |#endif
 1490|  11.2k|  if (!aligned_memory)
  ------------------
  |  Branch (1490:7): [True: 0, False: 11.2k]
  ------------------
 1491|  11.2k|    errno = err;
 1492|  11.2k|  return aligned_memory;
 1493|  11.2k|}
gslice.c:allocator_slab_stack_push:
 1285|  11.2k|{
 1286|       |  /* insert slab at slab ring head */
 1287|  11.2k|  if (!allocator->slab_stack[ix])
  ------------------
  |  Branch (1287:7): [True: 16, False: 11.2k]
  ------------------
 1288|     16|    {
 1289|     16|      sinfo->next = sinfo;
 1290|     16|      sinfo->prev = sinfo;
 1291|     16|    }
 1292|  11.2k|  else
 1293|  11.2k|    {
 1294|  11.2k|      SlabInfo *next = allocator->slab_stack[ix], *prev = next->prev;
 1295|  11.2k|      next->prev = sinfo;
 1296|  11.2k|      prev->next = sinfo;
 1297|  11.2k|      sinfo->next = next;
 1298|  11.2k|      sinfo->prev = prev;
 1299|  11.2k|    }
 1300|  11.2k|  allocator->slab_stack[ix] = sinfo;
 1301|  11.2k|}

g_slist_free:
  148|   862k|{
  149|       |  g_slice_free_chain (GSList, list, next);
  ------------------
  |  |   84|   862k|#define g_slice_free_chain(type, mem_chain, next)               \
  |  |  ------------------
  |  |  |  |  874|   862k|#define G_STMT_START  do
  |  |  ------------------
  |  |   85|   862k|G_STMT_START {                                                  \
  |  |   86|   862k|  if (1) g_slice_free_chain_with_offset (sizeof (type),		\
  |  |  ------------------
  |  |  |  Branch (86:7): [True: 862k, Folded]
  |  |  ------------------
  |  |   87|   862k|                 (mem_chain), G_STRUCT_OFFSET (type, next)); 	\
  |  |  ------------------
  |  |  |  |  853|   862k|      ((glong) offsetof (struct_type, member))
  |  |  ------------------
  |  |   88|   862k|  else   (void) ((type*) 0 == (mem_chain));			\
  |  |   89|   862k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   862k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 862k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  150|   862k|}
g_slist_free_1:
  168|     31|{
  169|     31|  _g_slist_free1 (list);
  ------------------
  |  |  111|     31|#define _g_slist_free1(slist)   g_slice_free (GSList, slist)
  |  |  ------------------
  |  |  |  |   79|     31|#define g_slice_free(type, mem)                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|     31|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |   80|     31|G_STMT_START {                                                  \
  |  |  |  |   81|     31|  if (1) g_slice_free1 (sizeof (type), (mem));			\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (81:7): [True: 31, Folded]
  |  |  |  |  ------------------
  |  |  |  |   82|     31|  else   (void) ((type*) 0 == (mem)); 				\
  |  |  |  |   83|     31|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|     31|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  170|     31|}
g_slist_free_full:
  197|   430k|{
  198|       |  g_slist_foreach (list, (GFunc) free_func, NULL);
  199|   430k|  g_slist_free (list);
  200|   430k|}
g_slist_append:
  235|   430k|{
  236|   430k|  GSList *new_list;
  237|   430k|  GSList *last;
  238|       |
  239|   430k|  new_list = _g_slist_alloc ();
  ------------------
  |  |  110|   430k|#define _g_slist_alloc()        g_slice_new (GSList)
  |  |  ------------------
  |  |  |  |   46|   430k|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  |  |  ------------------
  ------------------
  240|   430k|  new_list->data = data;
  241|   430k|  new_list->next = NULL;
  242|       |
  243|   430k|  if (list)
  ------------------
  |  Branch (243:7): [True: 5, False: 430k]
  ------------------
  244|      5|    {
  245|      5|      last = g_slist_last (list);
  246|       |      /* g_assert (last != NULL); */
  247|      5|      last->next = new_list;
  248|       |
  249|      5|      return list;
  250|      5|    }
  251|   430k|  else
  252|   430k|    return new_list;
  253|   430k|}
g_slist_prepend:
  277|   435k|{
  278|   435k|  GSList *new_list;
  279|       |
  280|   435k|  new_list = _g_slist_alloc ();
  ------------------
  |  |  110|   435k|#define _g_slist_alloc()        g_slice_new (GSList)
  |  |  ------------------
  |  |  |  |   46|   435k|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  |  |  ------------------
  ------------------
  281|   435k|  new_list->data = data;
  282|   435k|  new_list->next = list;
  283|       |
  284|   435k|  return new_list;
  285|   435k|}
g_slist_remove:
  453|     31|{
  454|     31|  return _g_slist_remove_data (list, data, FALSE);
  ------------------
  |  |  814|     31|#define	FALSE	(0)
  ------------------
  455|     31|}
g_slist_copy:
  566|     13|{
  567|     13|  return g_slist_copy_deep (list, NULL, NULL);
  568|     13|}
g_slist_copy_deep:
  603|     13|{
  604|     13|  GSList *new_list = NULL;
  605|       |
  606|     13|  if (list)
  ------------------
  |  Branch (606:7): [True: 8, False: 5]
  ------------------
  607|      8|    {
  608|      8|      GSList *last;
  609|       |
  610|      8|      new_list = _g_slist_alloc ();
  ------------------
  |  |  110|      8|#define _g_slist_alloc()        g_slice_new (GSList)
  |  |  ------------------
  |  |  |  |   46|      8|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  |  |  ------------------
  ------------------
  611|      8|      if (func)
  ------------------
  |  Branch (611:11): [True: 0, False: 8]
  ------------------
  612|      0|        new_list->data = func (list->data, user_data);
  613|      8|      else
  614|      8|        new_list->data = list->data;
  615|      8|      last = new_list;
  616|      8|      list = list->next;
  617|     14|      while (list)
  ------------------
  |  Branch (617:14): [True: 6, False: 8]
  ------------------
  618|      6|        {
  619|      6|          last->next = _g_slist_alloc ();
  ------------------
  |  |  110|      6|#define _g_slist_alloc()        g_slice_new (GSList)
  |  |  ------------------
  |  |  |  |   46|      6|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  |  |  ------------------
  ------------------
  620|      6|          last = last->next;
  621|      6|          if (func)
  ------------------
  |  Branch (621:15): [True: 0, False: 6]
  ------------------
  622|      0|            last->data = func (list->data, user_data);
  623|      6|          else
  624|      6|            last->data = list->data;
  625|      6|          list = list->next;
  626|      6|        }
  627|      8|      last->next = NULL;
  628|      8|    }
  629|       |
  630|     13|  return new_list;
  631|     13|}
g_slist_find:
  713|   436k|{
  714|   449k|  while (list)
  ------------------
  |  Branch (714:10): [True: 13.3k, False: 435k]
  ------------------
  715|  13.3k|    {
  716|  13.3k|      if (list->data == data)
  ------------------
  |  Branch (716:11): [True: 832, False: 12.4k]
  ------------------
  717|    832|        break;
  718|  12.4k|      list = list->next;
  719|  12.4k|    }
  720|       |
  721|   436k|  return list;
  722|   436k|}
g_slist_last:
  829|      5|{
  830|      5|  if (list)
  ------------------
  |  Branch (830:7): [True: 5, False: 0]
  ------------------
  831|      5|    {
  832|     14|      while (list->next)
  ------------------
  |  Branch (832:14): [True: 9, False: 5]
  ------------------
  833|      9|        list = list->next;
  834|      5|    }
  835|       |
  836|      5|  return list;
  837|      5|}
g_slist_foreach:
  881|   430k|{
  882|   861k|  while (list)
  ------------------
  |  Branch (882:10): [True: 430k, False: 430k]
  ------------------
  883|   430k|    {
  884|   430k|      GSList *next = list->next;
  885|   430k|      (*func) (list->data, user_data);
  886|   430k|      list = next;
  887|   430k|    }
  888|   430k|}
g_slist_sort:
 1068|     22|{
 1069|       |  return g_slist_sort_real (list, (GFunc) compare_func, NULL);
 1070|     22|}
gslist.c:_g_slist_remove_data:
  417|     31|{
  418|     31|  GSList *tmp = NULL;
  419|     31|  GSList **previous_ptr = &list;
  420|       |
  421|     31|  while (*previous_ptr)
  ------------------
  |  Branch (421:10): [True: 31, False: 0]
  ------------------
  422|     31|    {
  423|     31|      tmp = *previous_ptr;
  424|     31|      if (tmp->data == data)
  ------------------
  |  Branch (424:11): [True: 31, False: 0]
  ------------------
  425|     31|        {
  426|     31|          *previous_ptr = tmp->next;
  427|     31|          g_slist_free_1 (tmp);
  428|     31|          if (!all)
  ------------------
  |  Branch (428:15): [True: 31, False: 0]
  ------------------
  429|     31|            break;
  430|     31|        }
  431|      0|      else
  432|      0|        {
  433|      0|          previous_ptr = &tmp->next;
  434|      0|        }
  435|     31|    }
  436|       |
  437|     31|  return list;
  438|     31|}
gslist.c:g_slist_sort_real:
 1025|     22|{
 1026|     22|  GSList *l1, *l2;
 1027|       |
 1028|     22|  if (!list)
  ------------------
  |  Branch (1028:7): [True: 22, False: 0]
  ------------------
 1029|     22|    return NULL;
 1030|      0|  if (!list->next)
  ------------------
  |  Branch (1030:7): [True: 0, False: 0]
  ------------------
 1031|      0|    return list;
 1032|       |
 1033|      0|  l1 = list;
 1034|      0|  l2 = list->next;
 1035|       |
 1036|      0|  while ((l2 = l2->next) != NULL)
  ------------------
  |  Branch (1036:10): [True: 0, False: 0]
  ------------------
 1037|      0|    {
 1038|      0|      if ((l2 = l2->next) == NULL)
  ------------------
  |  Branch (1038:11): [True: 0, False: 0]
  ------------------
 1039|      0|        break;
 1040|      0|      l1=l1->next;
 1041|      0|    }
 1042|      0|  l2 = l1->next;
 1043|      0|  l1->next = NULL;
 1044|       |
 1045|      0|  return g_slist_sort_merge (g_slist_sort_real (list, compare_func, user_data),
 1046|      0|                             g_slist_sort_real (l2, compare_func, user_data),
 1047|      0|                             compare_func,
 1048|      0|                             user_data);
 1049|      0|}

g_strdup:
  357|  2.85k|{
  358|  2.85k|  gchar *new_str;
  359|  2.85k|  gsize length;
  360|       |
  361|  2.85k|  if (str)
  ------------------
  |  Branch (361:7): [True: 2.76k, False: 85]
  ------------------
  362|  2.76k|    {
  363|  2.76k|      length = strlen (str) + 1;
  364|  2.76k|      new_str = g_new (char, length);
  ------------------
  |  |  290|  2.76k|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|  2.76k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  2.76k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|  2.76k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|  2.76k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|  2.76k|	  gpointer __p;						\
  |  |  |  |  239|  2.76k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 2.76k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|  2.76k|	    __p = g_##func (__n);				\
  |  |  |  |  241|  2.76k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      0|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      0|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      0|	  else							\
  |  |  |  |  245|      0|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|  2.76k|	  __p;							\
  |  |  |  |  247|  2.76k|	}))
  |  |  ------------------
  ------------------
  365|  2.76k|      memcpy (new_str, str, length);
  366|  2.76k|    }
  367|     85|  else
  368|     85|    new_str = NULL;
  369|       |
  370|  2.85k|  return new_str;
  371|  2.85k|}
g_memdup2:
  422|  2.97k|{
  423|  2.97k|  gpointer new_mem;
  424|       |
  425|  2.97k|  if (mem && byte_size != 0)
  ------------------
  |  Branch (425:7): [True: 2.97k, False: 0]
  |  Branch (425:14): [True: 2.97k, False: 1]
  ------------------
  426|  2.97k|    {
  427|  2.97k|      new_mem = g_malloc (byte_size);
  428|  2.97k|      memcpy (new_mem, mem, byte_size);
  429|  2.97k|    }
  430|      1|  else
  431|      1|    new_mem = NULL;
  432|       |
  433|  2.97k|  return new_mem;
  434|  2.97k|}
g_stpcpy:
  509|    176|{
  510|    176|#ifdef HAVE_STPCPY
  511|    176|  g_return_val_if_fail (dest != NULL, NULL);
  ------------------
  |  |  643|    176|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    176|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    176|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    176|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    176| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    176|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    176|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    176|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 176, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    176|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    176|   else                                         \
  |  |  |  |  |  | 1021|    176|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    176|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    176|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 176, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    176|      { } \
  |  |  646|    176|    else \
  |  |  647|    176|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    176|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    176|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 176]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  512|    176|  g_return_val_if_fail (src != NULL, NULL);
  ------------------
  |  |  643|    176|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    176|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    176|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    176|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    176| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    176|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    176|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    176|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 176, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    176|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    176|   else                                         \
  |  |  |  |  |  | 1021|    176|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    176|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    176|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 176, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    176|      { } \
  |  |  646|    176|    else \
  |  |  647|    176|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    176|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    176|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 176]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  513|    176|  return stpcpy (dest, src);
  514|       |#else
  515|       |  gchar *d = dest;
  516|       |  const gchar *s = src;
  517|       |
  518|       |  g_return_val_if_fail (dest != NULL, NULL);
  519|       |  g_return_val_if_fail (src != NULL, NULL);
  520|       |  do
  521|       |    *d++ = *s;
  522|       |  while (*s++ != '\0');
  523|       |
  524|       |  return d - 1;
  525|       |#endif
  526|    176|}
g_strdup_vprintf:
  551|   205k|{
  552|   205k|  gchar *string = NULL;
  553|       |
  554|   205k|  g_vasprintf (&string, format, args);
  555|       |
  556|   205k|  return string;
  557|   205k|}
g_strdup_printf:
  579|  2.74k|{
  580|  2.74k|  gchar *buffer;
  581|  2.74k|  va_list args;
  582|       |
  583|  2.74k|  va_start (args, format);
  584|  2.74k|  buffer = g_strdup_vprintf (format, args);
  585|  2.74k|  va_end (args);
  586|       |
  587|  2.74k|  return buffer;
  588|  2.74k|}
g_strconcat:
  609|     88|{
  610|     88|  gsize   l;
  611|     88|  va_list args;
  612|     88|  gchar   *s;
  613|     88|  gchar   *concat;
  614|     88|  gchar   *ptr;
  615|       |
  616|     88|  if (!string1)
  ------------------
  |  Branch (616:7): [True: 0, False: 88]
  ------------------
  617|      0|    return NULL;
  618|       |
  619|     88|  l = 1 + strlen (string1);
  620|     88|  va_start (args, string1);
  621|     88|  s = va_arg (args, gchar*);
  622|    176|  while (s)
  ------------------
  |  Branch (622:10): [True: 88, False: 88]
  ------------------
  623|     88|    {
  624|     88|      l += strlen (s);
  625|     88|      s = va_arg (args, gchar*);
  626|     88|    }
  627|     88|  va_end (args);
  628|       |
  629|     88|  concat = g_new (gchar, l);
  ------------------
  |  |  290|     88|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|     88|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     88|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|     88|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|     88|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|     88|	  gpointer __p;						\
  |  |  |  |  239|     88|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 88, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|     88|	    __p = g_##func (__n);				\
  |  |  |  |  241|     88|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      0|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      0|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      0|	  else							\
  |  |  |  |  245|      0|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|     88|	  __p;							\
  |  |  |  |  247|     88|	}))
  |  |  ------------------
  ------------------
  630|     88|  ptr = concat;
  631|       |
  632|     88|  ptr = g_stpcpy (ptr, string1);
  633|     88|  va_start (args, string1);
  634|     88|  s = va_arg (args, gchar*);
  635|    176|  while (s)
  ------------------
  |  Branch (635:10): [True: 88, False: 88]
  ------------------
  636|     88|    {
  637|     88|      ptr = g_stpcpy (ptr, s);
  638|     88|      s = va_arg (args, gchar*);
  639|     88|    }
  640|     88|  va_end (args);
  641|       |
  642|     88|  return concat;
  643|     88|}

g_strcmp0:
 3225|  66.5k|{
 3226|  66.5k|  if (!str1)
  ------------------
  |  Branch (3226:7): [True: 1.66k, False: 64.8k]
  ------------------
 3227|  1.66k|    return -(str1 != str2);
 3228|  64.8k|  if (!str2)
  ------------------
  |  Branch (3228:7): [True: 0, False: 64.8k]
  ------------------
 3229|      0|    return str1 != str2;
 3230|  64.8k|  return strcmp (str1, str2);
 3231|  64.8k|}

g_rec_mutex_lock:
  394|     44|{
  395|     44|  pthread_mutex_lock (g_rec_mutex_get_impl (mutex));
  396|     44|}
g_rec_mutex_unlock:
  413|     44|{
  414|     44|  pthread_mutex_unlock (rec_mutex->p);
  415|     44|}
g_rw_lock_writer_lock:
  551|    235|{
  552|    235|  int retval = pthread_rwlock_wrlock (g_rw_lock_get_impl (rw_lock));
  553|       |
  554|    235|  if (retval != 0)
  ------------------
  |  Branch (554:7): [True: 0, False: 235]
  ------------------
  555|      0|    g_critical ("Failed to get RW lock %p: %s", rw_lock, g_strerror (retval));
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
  556|    235|}
g_rw_lock_writer_unlock:
  593|    235|{
  594|    235|  pthread_rwlock_unlock (g_rw_lock_get_impl (rw_lock));
  595|    235|}
g_rw_lock_reader_lock:
  621|  4.46k|{
  622|  4.46k|  int retval = pthread_rwlock_rdlock (g_rw_lock_get_impl (rw_lock));
  623|       |
  624|  4.46k|  if (retval != 0)
  ------------------
  |  Branch (624:7): [True: 0, False: 4.46k]
  ------------------
  625|      0|    g_critical ("Failed to get RW lock %p: %s", rw_lock, g_strerror (retval));
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
  626|  4.46k|}
g_rw_lock_reader_unlock:
  662|  4.46k|{
  663|  4.46k|  pthread_rwlock_unlock (g_rw_lock_get_impl (rw_lock));
  664|  4.46k|}
g_private_get:
 1080|  9.38M|{
 1081|       |  /* quote POSIX: No errors are returned from pthread_getspecific(). */
 1082|  9.38M|  return pthread_getspecific (*g_private_get_impl (key));
 1083|  9.38M|}
g_private_set:
 1099|   809k|{
 1100|   809k|  gint status;
 1101|       |
 1102|   809k|  if G_UNLIKELY ((status = pthread_setspecific (*g_private_get_impl (key), value)) != 0)
  ------------------
  |  | 1025|   809k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   809k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   809k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   809k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   809k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 809k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   809k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   809k|   else                                         \
  |  |  |  | 1021|   809k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   809k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   809k|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 809k]
  |  |  ------------------
  ------------------
 1103|      0|    g_thread_abort (status, "pthread_setspecific");
 1104|   809k|}
g_mutex_lock:
 1513|  5.02M|{
 1514|       |  /* 0 -> 1 and we're done.  Anything else, and we need to wait... */
 1515|  5.02M|  if G_UNLIKELY (g_atomic_int_add (&mutex->i[0], 1) != 0)
  ------------------
  |  | 1025|  5.02M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  5.02M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  5.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  5.02M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  15.0M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [Folded, False: 5.02M]
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 5.02M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  5.02M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  5.02M|   else                                         \
  |  |  |  | 1021|  5.02M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  5.02M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  5.02M|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 5.02M]
  |  |  ------------------
  ------------------
 1516|      0|    g_mutex_lock_slowpath (mutex);
 1517|  5.02M|}
g_mutex_unlock:
 1521|  5.10M|{
 1522|  5.10M|  guint prev;
 1523|       |
 1524|  5.10M|  prev = exchange_release (&mutex->i[0], 0);
  ------------------
  |  | 1425|  5.10M|  atomic_exchange_explicit((atomic_uint *) (ptr), (new), __ATOMIC_RELEASE)
  ------------------
 1525|       |
 1526|       |  /* 1-> 0 and we're done.  Anything else and we need to signal... */
 1527|  5.10M|  if G_UNLIKELY (prev != 1)
  ------------------
  |  | 1025|  5.10M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  5.10M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  5.10M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  5.10M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  5.10M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 5.10M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  5.10M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  5.10M|   else                                         \
  |  |  |  | 1021|  5.10M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  5.10M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  5.10M|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 5.10M]
  |  |  ------------------
  ------------------
 1528|      0|    g_mutex_unlock_slowpath (mutex, prev);
 1529|  5.10M|}
g_mutex_trylock:
 1533|  76.2k|{
 1534|  76.2k|  guint zero = 0;
 1535|       |
 1536|       |  /* We don't want to touch the value at all unless we can move it from
 1537|       |   * exactly 0 to 1.
 1538|       |   */
 1539|       |  return compare_exchange_acquire (&mutex->i[0], &zero, 1);
  ------------------
  |  | 1421|  76.2k|  atomic_compare_exchange_strong_explicit((atomic_uint *) (ptr), (old), (new), \
  |  | 1422|  76.2k|                                          __ATOMIC_ACQUIRE, __ATOMIC_RELAXED)
  ------------------
 1540|  76.2k|}
g_cond_broadcast:
 1588|     30|{
 1589|     30|  g_atomic_int_inc (&cond->i[0]);
  ------------------
  |  |  148|     30|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     30|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|     30|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     30|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|     30|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 30]
  |  |  ------------------
  |  |  151|     30|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|     30|  }))
  ------------------
 1590|       |
 1591|     30|  syscall (__NR_futex, &cond->i[0], (gsize) FUTEX_WAKE_PRIVATE, (gsize) INT_MAX, NULL);
 1592|     30|}
gthread-posix.c:g_rec_mutex_impl_new:
  280|      1|{
  281|      1|  pthread_mutexattr_t attr;
  282|      1|  pthread_mutex_t *mutex;
  283|       |
  284|      1|  mutex = malloc (sizeof (pthread_mutex_t));
  285|      1|  if G_UNLIKELY (mutex == NULL)
  ------------------
  |  | 1025|      1|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      1| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      1|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      1|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1019|      1|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      1|   else                                         \
  |  |  |  | 1021|      1|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      1|   _g_boolean_var_;                             \
  |  |  |  | 1023|      1|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  286|      0|    g_thread_abort (errno, "malloc");
  287|       |
  288|      1|  pthread_mutexattr_init (&attr);
  289|      1|  pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE);
  290|      1|  pthread_mutex_init (mutex, &attr);
  291|      1|  pthread_mutexattr_destroy (&attr);
  292|       |
  293|      1|  return mutex;
  294|      1|}
gthread-posix.c:g_rec_mutex_get_impl:
  305|     44|{
  306|     44|  pthread_mutex_t *impl = g_atomic_pointer_get (&rec_mutex->p);
  ------------------
  |  |  113|     44|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|     44|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|     44|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|     44|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|     44|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|     44|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|     44|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|     44|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|     44|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|     44|    gapg_temp_newval;                                                      \
  |  |  119|     44|  }))
  ------------------
  307|       |
  308|     44|  if G_UNLIKELY (impl == NULL)
  ------------------
  |  | 1025|     44|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|     44| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     44|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     44|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     44|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 1, False: 43]
  |  |  |  |  ------------------
  |  |  |  | 1019|     44|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     44|   else                                         \
  |  |  |  | 1021|     44|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     44|   _g_boolean_var_;                             \
  |  |  |  | 1023|     44|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 1, False: 43]
  |  |  ------------------
  ------------------
  309|      1|    {
  310|      1|      impl = g_rec_mutex_impl_new ();
  311|      1|      if (!g_atomic_pointer_compare_and_exchange (&rec_mutex->p, NULL, impl))
  ------------------
  |  |  210|      1|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  211|      1|    G_STATIC_ASSERT (sizeof (oldval) == sizeof (gpointer));                  \
  |  |  ------------------
  |  |  |  |  765|      1|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  212|      1|    gpointer gapcae_oldval = (gpointer)(oldval);                             \
  |  |  213|      1|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  ------------------
  |  |  |  |  765|      1|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  214|      1|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  ------------------
  |  |  |  Branch (214:13): [Folded, False: 1]
  |  |  ------------------
  |  |  215|      1|    __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (215:5): [True: 1, False: 0]
  |  |  ------------------
  |  |  216|      1|  }))
  ------------------
  |  Branch (311:11): [True: 0, False: 1]
  ------------------
  312|      0|        g_rec_mutex_impl_free (impl);
  313|      1|      impl = rec_mutex->p;
  314|      1|    }
  315|       |
  316|     44|  return impl;
  317|     44|}
gthread-posix.c:g_rw_lock_impl_new:
  442|      3|{
  443|      3|  pthread_rwlock_t *rwlock;
  444|      3|  gint status;
  445|       |
  446|      3|  rwlock = malloc (sizeof (pthread_rwlock_t));
  447|      3|  if G_UNLIKELY (rwlock == NULL)
  ------------------
  |  | 1025|      3|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      3| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      3|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      3|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      3|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1019|      3|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      3|   else                                         \
  |  |  |  | 1021|      3|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      3|   _g_boolean_var_;                             \
  |  |  |  | 1023|      3|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  448|      0|    g_thread_abort (errno, "malloc");
  449|       |
  450|      3|  if G_UNLIKELY ((status = pthread_rwlock_init (rwlock, NULL)) != 0)
  ------------------
  |  | 1025|      3|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      3| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      3|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      3|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      3|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1019|      3|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      3|   else                                         \
  |  |  |  | 1021|      3|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      3|   _g_boolean_var_;                             \
  |  |  |  | 1023|      3|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  451|      0|    g_thread_abort (status, "pthread_rwlock_init");
  452|       |
  453|      3|  return rwlock;
  454|      3|}
gthread-posix.c:g_rw_lock_get_impl:
  465|  9.40k|{
  466|  9.40k|  pthread_rwlock_t *impl = g_atomic_pointer_get (&lock->p);
  ------------------
  |  |  113|  9.40k|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|  9.40k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|  9.40k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|  9.40k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|  9.40k|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|  9.40k|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|  9.40k|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|  9.40k|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|  9.40k|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|  9.40k|    gapg_temp_newval;                                                      \
  |  |  119|  9.40k|  }))
  ------------------
  467|       |
  468|  9.40k|  if G_UNLIKELY (impl == NULL)
  ------------------
  |  | 1025|  9.40k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  9.40k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  9.40k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  9.40k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  9.40k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 3, False: 9.39k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  9.40k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  9.40k|   else                                         \
  |  |  |  | 1021|  9.40k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  9.40k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  9.40k|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 3, False: 9.39k]
  |  |  ------------------
  ------------------
  469|      3|    {
  470|      3|      impl = g_rw_lock_impl_new ();
  471|      3|      if (!g_atomic_pointer_compare_and_exchange (&lock->p, NULL, impl))
  ------------------
  |  |  210|      3|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      3|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  211|      3|    G_STATIC_ASSERT (sizeof (oldval) == sizeof (gpointer));                  \
  |  |  ------------------
  |  |  |  |  765|      3|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  212|      3|    gpointer gapcae_oldval = (gpointer)(oldval);                             \
  |  |  213|      3|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  ------------------
  |  |  |  |  765|      3|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  214|      3|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  ------------------
  |  |  |  Branch (214:13): [Folded, False: 3]
  |  |  ------------------
  |  |  215|      3|    __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|      3|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|      3|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (215:5): [True: 3, False: 0]
  |  |  ------------------
  |  |  216|      3|  }))
  ------------------
  |  Branch (471:11): [True: 0, False: 3]
  ------------------
  472|      0|        g_rw_lock_impl_free (impl);
  473|      3|      impl = lock->p;
  474|      3|    }
  475|       |
  476|  9.40k|  return impl;
  477|  9.40k|}
gthread-posix.c:g_private_get_impl:
 1050|  10.1M|{
 1051|  10.1M|  pthread_key_t *impl = g_atomic_pointer_get (&key->p);
  ------------------
  |  |  113|  10.1M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|  10.1M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|  10.1M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|  10.1M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|  10.1M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|  10.1M|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|  10.1M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|  10.1M|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|  10.1M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|  10.1M|    gapg_temp_newval;                                                      \
  |  |  119|  10.1M|  }))
  ------------------
 1052|       |
 1053|  10.1M|  if G_UNLIKELY (impl == NULL)
  ------------------
  |  | 1025|  10.1M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  10.1M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  10.1M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  10.1M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  10.1M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 4, False: 10.1M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  10.1M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  10.1M|   else                                         \
  |  |  |  | 1021|  10.1M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  10.1M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  10.1M|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 4, False: 10.1M]
  |  |  ------------------
  ------------------
 1054|      4|    {
 1055|      4|      impl = g_private_impl_new (key->notify);
 1056|      4|      if (!g_atomic_pointer_compare_and_exchange (&key->p, NULL, impl))
  ------------------
  |  |  210|      4|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  211|      4|    G_STATIC_ASSERT (sizeof (oldval) == sizeof (gpointer));                  \
  |  |  ------------------
  |  |  |  |  765|      4|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  212|      4|    gpointer gapcae_oldval = (gpointer)(oldval);                             \
  |  |  213|      4|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  ------------------
  |  |  |  |  765|      4|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  214|      4|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  ------------------
  |  |  |  Branch (214:13): [Folded, False: 4]
  |  |  ------------------
  |  |  215|      4|    __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|      4|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|      4|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (215:5): [True: 4, False: 0]
  |  |  ------------------
  |  |  216|      4|  }))
  ------------------
  |  Branch (1056:11): [True: 0, False: 4]
  ------------------
 1057|      0|        {
 1058|      0|          g_private_impl_free (impl);
 1059|      0|          impl = key->p;
 1060|      0|        }
 1061|      4|    }
 1062|       |
 1063|  10.1M|  return impl;
 1064|  10.1M|}
gthread-posix.c:g_private_impl_new:
 1023|      4|{
 1024|      4|  pthread_key_t *key;
 1025|      4|  gint status;
 1026|       |
 1027|      4|  key = malloc (sizeof (pthread_key_t));
 1028|      4|  if G_UNLIKELY (key == NULL)
  ------------------
  |  | 1025|      4|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      4|   else                                         \
  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  | 1023|      4|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1029|      0|    g_thread_abort (errno, "malloc");
 1030|      4|  status = pthread_key_create (key, notify);
 1031|      4|  if G_UNLIKELY (status != 0)
  ------------------
  |  | 1025|      4|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      4|   else                                         \
  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  | 1023|      4|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1032|      0|    g_thread_abort (status, "pthread_key_create");
 1033|       |
 1034|      4|  return key;
 1035|      4|}

g_private_set_alloc0:
  540|      2|{
  541|      2|  gpointer allocated = g_malloc0 (size);
  542|       |
  543|      2|  g_private_set (key, allocated);
  544|       |
  545|      2|  return g_steal_pointer (&allocated);
  ------------------
  |  |  222|      2|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  546|      2|}
g_once_init_enter:
  699|     30|{
  700|     30|  gsize *value_location = (gsize *) location;
  701|     30|  gboolean need_init = FALSE;
  ------------------
  |  |  814|     30|#define	FALSE	(0)
  ------------------
  702|     30|  g_mutex_lock (&g_once_mutex);
  703|     30|  if (g_atomic_pointer_get (value_location) == 0)
  ------------------
  |  |  113|     30|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|     30|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|     30|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|     30|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|     30|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|     30|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|     30|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|     30|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|     30|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|     30|    gapg_temp_newval;                                                      \
  |  |  119|     30|  }))
  ------------------
  |  Branch (703:7): [True: 30, False: 0]
  ------------------
  704|     30|    {
  705|     30|      if (!g_slist_find (g_once_init_list, (void*) value_location))
  ------------------
  |  Branch (705:11): [True: 30, False: 0]
  ------------------
  706|     30|        {
  707|     30|          need_init = TRUE;
  ------------------
  |  |  818|     30|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     30|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  708|     30|          g_once_init_list = g_slist_prepend (g_once_init_list, (void*) value_location);
  709|     30|        }
  710|      0|      else
  711|      0|        do
  712|      0|          g_cond_wait (&g_once_cond, &g_once_mutex);
  713|      0|        while (g_slist_find (g_once_init_list, (void*) value_location));
  ------------------
  |  Branch (713:16): [True: 0, False: 0]
  ------------------
  714|     30|    }
  715|     30|  g_mutex_unlock (&g_once_mutex);
  716|     30|  return need_init;
  717|     30|}
g_once_init_leave:
  739|     30|{
  740|     30|  gsize *value_location = (gsize *) location;
  741|       |
  742|     30|  g_return_if_fail (g_atomic_pointer_get (value_location) == 0);
  ------------------
  |  |  630|     30|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     30|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     30|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     30|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     30| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     30|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     30|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     30|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 30, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     30|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     30|   else                                         \
  |  |  |  |  |  | 1021|     30|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     30|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     30|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 30, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     30|      { } \
  |  |  633|     30|    else \
  |  |  634|     30|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|     30|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     30|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  743|     30|  g_return_if_fail (result != 0);
  ------------------
  |  |  630|     30|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     30|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     30|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     30|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     30| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     30|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     30|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     30|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 30, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     30|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     30|   else                                         \
  |  |  |  |  |  | 1021|     30|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     30|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     30|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 30, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     30|      { } \
  |  |  633|     30|    else \
  |  |  634|     30|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|     30|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     30|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  744|       |
  745|     30|  g_atomic_pointer_set (value_location, result);
  ------------------
  |  |  121|     30|  (G_GNUC_EXTENSION ({                                                      \
  |  |  ------------------
  |  |  |  |   54|     30|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  122|     30|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                \
  |  |  ------------------
  |  |  |  |  765|     30|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  123|     30|    glib_typeof ((atomic)) gaps_temp_atomic = (atomic);                     \
  |  |  ------------------
  |  |  |  |  238|     30|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  124|     30|    glib_typeof (*(atomic)) gaps_temp_newval = (newval);                    \
  |  |  ------------------
  |  |  |  |  238|     30|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  125|     30|    (void) (0 ? (gpointer) * (atomic) : NULL);                              \
  |  |  ------------------
  |  |  |  Branch (125:13): [Folded, False: 30]
  |  |  ------------------
  |  |  126|     30|    __atomic_store (gaps_temp_atomic, &gaps_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  127|     30|  }))
  ------------------
  746|     30|  g_mutex_lock (&g_once_mutex);
  747|     30|  g_return_if_fail (g_once_init_list != NULL);
  ------------------
  |  |  630|     30|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     30|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     30|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     30|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     30| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     30|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     30|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     30|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 30, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     30|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     30|   else                                         \
  |  |  |  |  |  | 1021|     30|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     30|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     30|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 30, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     30|      { } \
  |  |  633|     30|    else \
  |  |  634|     30|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|     30|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     30|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  748|     30|  g_once_init_list = g_slist_remove (g_once_init_list, (void*) value_location);
  749|     30|  g_cond_broadcast (&g_once_cond);
  750|     30|  g_mutex_unlock (&g_once_mutex);
  751|     30|}
g_thread_n_created:
  833|  1.66k|{
  834|  1.66k|  return g_atomic_int_get (&g_thread_n_created_counter);
  ------------------
  |  |   96|  1.66k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.66k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  1.66k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.66k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  1.66k|    gint gaig_temp;                                                          \
  |  |   99|  1.66k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 1.66k]
  |  |  ------------------
  |  |  100|  1.66k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  1.66k|    (gint) gaig_temp;                                                        \
  |  |  102|  1.66k|  }))
  ------------------
  835|  1.66k|}

g_nullify_pointer:
 2664|   145k|{
 2665|   145k|  g_return_if_fail (nullify_location != NULL);
  ------------------
  |  |  630|   145k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   145k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   145k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   145k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   145k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   145k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   145k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   145k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 145k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   145k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   145k|   else                                         \
  |  |  |  |  |  | 1021|   145k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   145k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   145k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 145k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   145k|      { } \
  |  |  633|   145k|    else \
  |  |  634|   145k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   145k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   145k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 145k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2666|       |
 2667|   145k|  *nullify_location = NULL;
 2668|   145k|}

gsignal.c:g_bit_storage_impl:
  413|     12|{
  414|     12|#if defined(__GNUC__) && (__GNUC__ >= 4) && defined(__OPTIMIZE__)
  415|     12|  return G_LIKELY (number) ?
  ------------------
  |  | 1024|     12|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|     12| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     12|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     12|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     12|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 12, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|     12|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     12|   else                                         \
  |  |  |  | 1021|     12|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     12|   _g_boolean_var_;                             \
  |  |  |  | 1023|     12|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 12, False: 0]
  |  |  ------------------
  ------------------
  416|     12|           ((GLIB_SIZEOF_LONG * 8U - 1) ^ (guint) __builtin_clzl(number)) + 1 : 1;
  ------------------
  |  |   73|     12|#define GLIB_SIZEOF_LONG   8
  ------------------
  417|       |#else
  418|       |  guint n_bits = 0;
  419|       |
  420|       |  do
  421|       |    {
  422|       |      n_bits++;
  423|       |      number >>= 1;
  424|       |    }
  425|       |  while (number);
  426|       |  return n_bits;
  427|       |#endif
  428|     12|}
gvalue.c:g_bit_storage_impl:
  413|    682|{
  414|    682|#if defined(__GNUC__) && (__GNUC__ >= 4) && defined(__OPTIMIZE__)
  415|    682|  return G_LIKELY (number) ?
  ------------------
  |  | 1024|    682|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|    682| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    682|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|    682|   int _g_boolean_var_;                         \
  |  |  |  | 1018|    682|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 682, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|    682|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|    682|   else                                         \
  |  |  |  | 1021|    682|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|    682|   _g_boolean_var_;                             \
  |  |  |  | 1023|    682|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 682, False: 0]
  |  |  ------------------
  ------------------
  416|    682|           ((GLIB_SIZEOF_LONG * 8U - 1) ^ (guint) __builtin_clzl(number)) + 1 : 1;
  ------------------
  |  |   73|    682|#define GLIB_SIZEOF_LONG   8
  ------------------
  417|       |#else
  418|       |  guint n_bits = 0;
  419|       |
  420|       |  do
  421|       |    {
  422|       |      n_bits++;
  423|       |      number >>= 1;
  424|       |    }
  425|       |  while (number);
  426|       |  return n_bits;
  427|       |#endif
  428|    682|}
gmessages.c:g_bit_nth_msf_impl:
  399|   404k|{
  400|   404k|  if (nth_bit < 0 || G_UNLIKELY (nth_bit > GLIB_SIZEOF_LONG * 8))
  ------------------
  |  | 1025|   202k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   202k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   202k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   202k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   202k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 202k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   202k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   202k|   else                                         \
  |  |  |  | 1021|   202k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   202k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   202k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 202k]
  |  |  ------------------
  ------------------
  |  Branch (400:7): [True: 202k, False: 202k]
  ------------------
  401|   202k|    nth_bit = GLIB_SIZEOF_LONG * 8;
  ------------------
  |  |   73|   202k|#define GLIB_SIZEOF_LONG   8
  ------------------
  402|  13.1M|  while (nth_bit > 0)
  ------------------
  |  Branch (402:10): [True: 12.9M, False: 202k]
  ------------------
  403|  12.9M|    {
  404|  12.9M|      nth_bit--;
  405|  12.9M|      if (mask & (1UL << nth_bit))
  ------------------
  |  Branch (405:11): [True: 202k, False: 12.7M]
  ------------------
  406|   202k|        return nth_bit;
  407|  12.9M|    }
  408|   202k|  return -1;
  409|   404k|}
gslice.c:g_bit_storage_impl:
  413|  11.2k|{
  414|  11.2k|#if defined(__GNUC__) && (__GNUC__ >= 4) && defined(__OPTIMIZE__)
  415|  11.2k|  return G_LIKELY (number) ?
  ------------------
  |  | 1024|  11.2k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  11.2k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  11.2k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  11.2k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  11.2k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 11.2k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  11.2k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  11.2k|   else                                         \
  |  |  |  | 1021|  11.2k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  11.2k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  11.2k|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 11.2k, False: 0]
  |  |  ------------------
  ------------------
  416|  11.2k|           ((GLIB_SIZEOF_LONG * 8U - 1) ^ (guint) __builtin_clzl(number)) + 1 : 1;
  ------------------
  |  |   73|  11.2k|#define GLIB_SIZEOF_LONG   8
  ------------------
  417|       |#else
  418|       |  guint n_bits = 0;
  419|       |
  420|       |  do
  421|       |    {
  422|       |      n_bits++;
  423|       |      number >>= 1;
  424|       |    }
  425|       |  while (number);
  426|       |  return n_bits;
  427|       |#endif
  428|  11.2k|}

_g_atomic_array_init:
  102|     40|{
  103|       |  array->data = NULL;
  104|     40|}
_g_atomic_array_copy:
  126|     86|{
  127|     86|  guint8 *new, *old;
  128|     86|  gsize old_size, new_size;
  129|       |
  130|     86|  G_LOCK (array);
  ------------------
  |  |  135|     86|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|     86|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  131|     86|  old = g_atomic_pointer_get (&array->data);
  ------------------
  |  |  113|     86|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|     86|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|     86|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|     86|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|     86|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|     86|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|     86|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|     86|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|     86|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|     86|    gapg_temp_newval;                                                      \
  |  |  119|     86|  }))
  ------------------
  132|     86|  if (old)
  ------------------
  |  Branch (132:7): [True: 18, False: 68]
  ------------------
  133|     18|    {
  134|     18|      old_size = G_ATOMIC_ARRAY_DATA_SIZE (old);
  ------------------
  |  |   28|     18|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  ------------------
  135|     18|      new_size = old_size + additional_element_size;
  136|       |      /* Don't reuse if copying to same size, as this may end
  137|       |	 up reusing the same pointer for the same array thus
  138|       |	 confusing the transaction check */
  139|     18|      new = freelist_alloc (new_size, additional_element_size != 0);
  140|     18|      memcpy (new, old, old_size);
  141|     18|    }
  142|     68|  else if (additional_element_size != 0)
  ------------------
  |  Branch (142:12): [True: 10, False: 58]
  ------------------
  143|     10|    {
  144|     10|      new_size = header_size + additional_element_size;
  145|     10|      new = freelist_alloc (new_size, TRUE);
  ------------------
  |  |  818|     10|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     10|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  146|     10|    }
  147|     58|  else
  148|     58|    new = NULL;
  149|     86|  G_UNLOCK (array);
  ------------------
  |  |  136|     86|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|     86|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  150|     86|  return new;
  151|     86|}
_g_atomic_array_update:
  160|     28|{
  161|     28|  guint8 *old;
  162|       |
  163|     28|  G_LOCK (array);
  ------------------
  |  |  135|     28|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|     28|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  164|     28|  old = g_atomic_pointer_get (&array->data);
  ------------------
  |  |  113|     28|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|     28|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|     28|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|     28|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|     28|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|     28|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|     28|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|     28|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|     28|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|     28|    gapg_temp_newval;                                                      \
  |  |  119|     28|  }))
  ------------------
  165|       |
  166|     28|  g_assert (old == NULL || G_ATOMIC_ARRAY_DATA_SIZE (old) <= G_ATOMIC_ARRAY_DATA_SIZE (new_data));
  ------------------
  |  |  231|     28|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     28|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     28|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     28|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     28| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     28|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     28|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     66|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 18, False: 10]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 10, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     28|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     28|   else                                         \
  |  |  |  |  |  | 1021|     28|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     28|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     28|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 28, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     28|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     28|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     28|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 28]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  167|       |
  168|     28|  g_atomic_pointer_set (&array->data, new_data);
  ------------------
  |  |  121|     28|  (G_GNUC_EXTENSION ({                                                      \
  |  |  ------------------
  |  |  |  |   54|     28|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  122|     28|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                \
  |  |  ------------------
  |  |  |  |  765|     28|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  123|     28|    glib_typeof ((atomic)) gaps_temp_atomic = (atomic);                     \
  |  |  ------------------
  |  |  |  |  238|     28|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  124|     28|    glib_typeof (*(atomic)) gaps_temp_newval = (newval);                    \
  |  |  ------------------
  |  |  |  |  238|     28|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  125|     28|    (void) (0 ? (gpointer) * (atomic) : NULL);                              \
  |  |  ------------------
  |  |  |  Branch (125:13): [Folded, False: 28]
  |  |  ------------------
  |  |  126|     28|    __atomic_store (gaps_temp_atomic, &gaps_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  127|     28|  }))
  ------------------
  169|     28|  if (old)
  ------------------
  |  Branch (169:7): [True: 10, False: 18]
  ------------------
  170|     10|    freelist_free (old);
  171|     28|  G_UNLOCK (array);
  ------------------
  |  |  136|     28|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|     28|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  172|     28|}
gatomicarray.c:freelist_alloc:
   60|     28|{
   61|     28|  gpointer mem;
   62|     28|  FreeListNode *free, **prev;
   63|     28|  gsize real_size;
   64|       |
   65|     28|  if (reuse)
  ------------------
  |  Branch (65:7): [True: 20, False: 8]
  ------------------
   66|     20|    {
   67|     32|      for (free = freelist, prev = &freelist; free != NULL; prev = &free->next, free = free->next)
  ------------------
  |  Branch (67:47): [True: 17, False: 15]
  ------------------
   68|     17|	{
   69|     17|	  if (G_ATOMIC_ARRAY_DATA_SIZE (free) == size)
  ------------------
  |  |   28|     17|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  ------------------
  |  Branch (69:8): [True: 5, False: 12]
  ------------------
   70|      5|	    {
   71|      5|	      *prev = free->next;
   72|      5|	      return (gpointer)free;
   73|      5|	    }
   74|     17|	}
   75|     20|    }
   76|       |
   77|     23|  real_size = sizeof (gsize) + MAX (size, sizeof (FreeListNode));
  ------------------
  |  |  822|     23|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 18, False: 5]
  |  |  ------------------
  ------------------
   78|     23|  mem = g_slice_alloc (real_size);
   79|     23|  mem = ((char *) mem) + sizeof (gsize);
   80|     23|  G_ATOMIC_ARRAY_DATA_SIZE (mem) = size;
  ------------------
  |  |   28|     23|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  ------------------
   81|       |
   82|     23|#if ENABLE_VALGRIND
   83|     23|  VALGRIND_MALLOCLIKE_BLOCK (mem, real_size - sizeof (gsize), FALSE, FALSE);
  ------------------
  |  | 6479|     23|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK,       \
  |  |  ------------------
  |  |  |  |  203|     23|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|     23|    __extension__                                                 \
  |  |  |  |  |  |  414|     23|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|     23|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|     23|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|     23|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|     23|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|     23|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|     23|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|     23|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|     23|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|     23|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|     23|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|     23|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|     23|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|     23|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|     23|                    );                                            \
  |  |  |  |  |  |  429|     23|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|     23|    })
  |  |  |  |  ------------------
  |  |  |  |  204|     23|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|     23|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 23]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6480|     23|                                    addr, sizeB, rzB, is_zeroed, 0)
  ------------------
   84|     23|#endif
   85|       |
   86|     23|  return mem;
   87|     28|}
gatomicarray.c:freelist_free:
   92|     10|{
   93|     10|  FreeListNode *free;
   94|       |
   95|     10|  free = mem;
   96|     10|  free->next = freelist;
   97|     10|  freelist = free;
   98|     10|}

_g_boxed_type_init:
  102|      2|{
  103|      2|  const GTypeInfo info = {
  104|      2|    0,                          /* class_size */
  105|      2|    NULL,                       /* base_init */
  106|      2|    NULL,                       /* base_destroy */
  107|      2|    NULL,                       /* class_init */
  108|      2|    NULL,                       /* class_destroy */
  109|      2|    NULL,                       /* class_data */
  110|      2|    0,                          /* instance_size */
  111|      2|    0,                          /* n_preallocs */
  112|      2|    NULL,                       /* instance_init */
  113|      2|    NULL,                       /* value_table */
  114|      2|  };
  115|      2|  const GTypeFundamentalInfo finfo = { G_TYPE_FLAG_DERIVABLE, };
  116|      2|  GType type G_GNUC_UNUSED  /* when compiling with G_DISABLE_ASSERT */;
  117|       |
  118|       |  /* G_TYPE_BOXED
  119|       |   */
  120|      2|  type = g_type_register_fundamental (G_TYPE_BOXED, g_intern_static_string ("GBoxed"), &info, &finfo,
  ------------------
  |  |  166|      2|#define G_TYPE_BOXED			G_TYPE_MAKE_FUNDAMENTAL (18)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  121|      2|				      G_TYPE_FLAG_ABSTRACT | G_TYPE_FLAG_VALUE_ABSTRACT);
  122|      2|  g_assert (type == G_TYPE_BOXED);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  123|      2|}
g_boxed_type_register_static:
  291|      2|{
  292|      2|  static const GTypeValueTable vtable = {
  293|      2|    boxed_proxy_value_init,
  294|      2|    boxed_proxy_value_free,
  295|      2|    boxed_proxy_value_copy,
  296|      2|    boxed_proxy_value_peek_pointer,
  297|      2|    "p",
  298|      2|    boxed_proxy_collect_value,
  299|      2|    "p",
  300|      2|    boxed_proxy_lcopy_value,
  301|      2|  };
  302|      2|  GTypeInfo type_info = {
  303|      2|    0,			/* class_size */
  304|      2|    NULL,		/* base_init */
  305|      2|    NULL,		/* base_finalize */
  306|      2|    NULL,		/* class_init */
  307|      2|    NULL,		/* class_finalize */
  308|      2|    NULL,		/* class_data */
  309|      2|    0,			/* instance_size */
  310|      2|    0,			/* n_preallocs */
  311|      2|    NULL,		/* instance_init */
  312|      2|    &vtable,		/* value_table */
  313|      2|  };
  314|      2|  GType type;
  315|       |
  316|      2|  g_return_val_if_fail (name != NULL, 0);
  ------------------
  |  |  643|      2|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      2|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      2|      { } \
  |  |  646|      2|    else \
  |  |  647|      2|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      2|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  317|      2|  g_return_val_if_fail (boxed_copy != NULL, 0);
  ------------------
  |  |  643|      2|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      2|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      2|      { } \
  |  |  646|      2|    else \
  |  |  647|      2|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      2|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  318|      2|  g_return_val_if_fail (boxed_free != NULL, 0);
  ------------------
  |  |  643|      2|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      2|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      2|      { } \
  |  |  646|      2|    else \
  |  |  647|      2|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      2|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  319|      2|  g_return_val_if_fail (g_type_from_name (name) == 0, 0);
  ------------------
  |  |  643|      2|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      2|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      2|      { } \
  |  |  646|      2|    else \
  |  |  647|      2|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      2|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  320|       |
  321|      2|  type = g_type_register_static (G_TYPE_BOXED, name, &type_info, 0);
  ------------------
  |  |  166|      2|#define G_TYPE_BOXED			G_TYPE_MAKE_FUNDAMENTAL (18)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  322|       |
  323|       |  /* install proxy functions upon successful registration */
  324|      2|  if (type)
  ------------------
  |  Branch (324:7): [True: 2, False: 0]
  ------------------
  325|      2|    _g_type_boxed_init (type, boxed_copy, boxed_free);
  326|       |
  327|      2|  return type;
  328|      2|}

g_closure_new_simple:
  194|  3.33k|{
  195|  3.33k|  GClosure *closure;
  196|  3.33k|  gint private_size;
  197|  3.33k|  gchar *allocated;
  198|       |
  199|  3.33k|  g_return_val_if_fail (sizeof_closure >= sizeof (GClosure), NULL);
  ------------------
  |  |  643|  3.33k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.33k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.33k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.33k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.33k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.33k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.33k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.33k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.33k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.33k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.33k|   else                                         \
  |  |  |  |  |  | 1021|  3.33k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.33k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.33k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.33k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.33k|      { } \
  |  |  646|  3.33k|    else \
  |  |  647|  3.33k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  3.33k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.33k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.33k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  200|       |
  201|  3.33k|  private_size = sizeof (GRealClosure) - sizeof (GClosure);
  202|       |
  203|  3.33k|#ifdef ENABLE_VALGRIND
  204|       |  /* See comments in gtype.c about what's going on here... */
  205|  3.33k|  if (RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|  3.33k|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|  3.33k|    __extension__                                                 \
  |  |  |  |  414|  3.33k|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|  3.33k|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|  3.33k|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|  3.33k|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|  3.33k|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|  3.33k|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|  3.33k|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|  3.33k|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|  3.33k|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|  3.33k|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|  3.33k|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|  3.33k|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|  3.33k|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|  3.33k|                     : "cc", "memory"                             \
  |  |  |  |  428|  3.33k|                    );                                            \
  |  |  |  |  429|  3.33k|    _zzq_result;                                                  \
  |  |  |  |  430|  3.33k|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 3.33k]
  |  |  ------------------
  |  | 6216|  3.33k|                                    VG_USERREQ__RUNNING_ON_VALGRIND,  \
  |  | 6217|  3.33k|                                    0, 0, 0, 0, 0)                    \
  ------------------
  206|      0|    {
  207|      0|      private_size += sizeof (gpointer);
  208|       |
  209|      0|      allocated = g_malloc0 (private_size + sizeof_closure + sizeof (gpointer));
  210|       |
  211|      0|      *(gpointer *) (allocated + private_size + sizeof_closure) = allocated + sizeof (gpointer);
  212|       |
  213|      0|      VALGRIND_MALLOCLIKE_BLOCK (allocated + private_size, sizeof_closure + sizeof (gpointer), 0, TRUE);
  ------------------
  |  | 6479|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK,       \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6480|      0|                                    addr, sizeB, rzB, is_zeroed, 0)
  ------------------
  214|      0|      VALGRIND_MALLOCLIKE_BLOCK (allocated + sizeof (gpointer), private_size - sizeof (gpointer), 0, TRUE);
  ------------------
  |  | 6479|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK,       \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6480|      0|                                    addr, sizeB, rzB, is_zeroed, 0)
  ------------------
  215|      0|    }
  216|  3.33k|  else
  217|  3.33k|#endif
  218|  3.33k|    allocated = g_malloc0 (private_size + sizeof_closure);
  219|       |
  220|  3.33k|  closure = (GClosure *) (allocated + private_size);
  221|       |
  222|  3.33k|  SET (closure, ref_count, 1);
  ------------------
  |  |  122|  3.33k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  3.33k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  3.33k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  3.33k|G_STMT_START {                                                                          \
  |  |  |  |  106|  3.33k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  3.33k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  3.33k|  do                                                    		                \
  |  |  |  |  109|  3.33k|    {                                                   		                \
  |  |  |  |  110|  3.33k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  3.33k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  3.33k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  3.33k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  3.33k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  3.33k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  3.33k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  3.33k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.33k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  3.33k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  3.33k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  3.33k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  3.33k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 3.33k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  3.33k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  3.33k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  3.33k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.33k|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 3.33k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  3.33k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  3.33k|    }                                                   		                \
  |  |  |  |  118|  3.33k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 3.33k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  3.33k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  3.33k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 3.33k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  223|  3.33k|  SET (closure, floating, TRUE);
  ------------------
  |  |  122|  3.33k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  3.33k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  3.33k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  3.33k|G_STMT_START {                                                                          \
  |  |  |  |  106|  3.33k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  3.33k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  3.33k|  do                                                    		                \
  |  |  |  |  109|  3.33k|    {                                                   		                \
  |  |  |  |  110|  3.33k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  3.33k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  3.33k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  3.33k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  3.33k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  3.33k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  3.33k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  3.33k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.33k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  3.33k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  3.33k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  3.33k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  3.33k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 3.33k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  3.33k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  3.33k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  3.33k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.33k|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 3.33k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  3.33k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  3.33k|    }                                                   		                \
  |  |  |  |  118|  3.33k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 3.33k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  3.33k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  3.33k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 3.33k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  224|  3.33k|  closure->data = data;
  225|       |
  226|  3.33k|  return closure;
  227|  3.33k|}
g_closure_set_meta_marshal:
  349|      4|{
  350|      4|  GRealClosure *real_closure;
  351|       |
  352|      4|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      4|      { } \
  |  |  633|      4|    else \
  |  |  634|      4|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  353|      4|  g_return_if_fail (meta_marshal != NULL);
  ------------------
  |  |  630|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      4|      { } \
  |  |  633|      4|    else \
  |  |  634|      4|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  354|      4|  g_return_if_fail (closure->is_invalid == FALSE);
  ------------------
  |  |  630|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      4|      { } \
  |  |  633|      4|    else \
  |  |  634|      4|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  355|      4|  g_return_if_fail (closure->in_marshal == FALSE);
  ------------------
  |  |  630|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      4|      { } \
  |  |  633|      4|    else \
  |  |  634|      4|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  356|       |
  357|      4|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|      4|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|      4|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  358|       |
  359|      4|  g_return_if_fail (real_closure->meta_marshal == NULL);
  ------------------
  |  |  630|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      4|      { } \
  |  |  633|      4|    else \
  |  |  634|      4|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  360|       |
  361|      4|  real_closure->meta_marshal = meta_marshal;
  362|      4|  real_closure->meta_marshal_data = marshal_data;
  363|      4|}
g_closure_ref:
  545|  10.7k|{
  546|  10.7k|  guint new_ref_count;
  547|  10.7k|  g_return_val_if_fail (closure != NULL, NULL);
  ------------------
  |  |  643|  10.7k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  10.7k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  10.7k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  10.7k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  10.7k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  10.7k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  10.7k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  10.7k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 10.7k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  10.7k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  10.7k|   else                                         \
  |  |  |  |  |  | 1021|  10.7k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  10.7k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  10.7k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 10.7k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  10.7k|      { } \
  |  |  646|  10.7k|    else \
  |  |  647|  10.7k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  10.7k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  10.7k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 10.7k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  548|  10.7k|  g_return_val_if_fail (closure->ref_count > 0, NULL);
  ------------------
  |  |  643|  10.7k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  10.7k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  10.7k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  10.7k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  10.7k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  10.7k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  10.7k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  10.7k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 10.7k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  10.7k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  10.7k|   else                                         \
  |  |  |  |  |  | 1021|  10.7k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  10.7k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  10.7k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 10.7k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  10.7k|      { } \
  |  |  646|  10.7k|    else \
  |  |  647|  10.7k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  10.7k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  10.7k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 10.7k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  549|  10.7k|  g_return_val_if_fail (closure->ref_count < CLOSURE_MAX_REF_COUNT, NULL);
  ------------------
  |  |  643|  10.7k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  10.7k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  10.7k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  10.7k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  10.7k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  10.7k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  10.7k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  10.7k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 10.7k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  10.7k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  10.7k|   else                                         \
  |  |  |  |  |  | 1021|  10.7k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  10.7k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  10.7k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 10.7k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  10.7k|      { } \
  |  |  646|  10.7k|    else \
  |  |  647|  10.7k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  10.7k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  10.7k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 10.7k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  550|       |
  551|  10.7k|  INC_ASSIGN (closure, ref_count, &new_ref_count);
  ------------------
  |  |  124|  10.7k|#define INC_ASSIGN(_closure, _field, _newv)     CHANGE_FIELD (_closure, _field, +=,     1, TRUE,     (void), *(_newv) = )
  |  |  ------------------
  |  |  |  |  104|  10.7k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  10.7k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  10.7k|G_STMT_START {                                                                          \
  |  |  |  |  106|  10.7k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  10.7k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  10.7k|  do                                                    		                \
  |  |  |  |  109|  10.7k|    {                                                   		                \
  |  |  |  |  110|  10.7k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  10.7k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  10.7k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  10.7k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  10.7k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  10.7k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  10.7k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  10.7k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  10.7k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  10.7k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  10.7k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  10.7k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  10.7k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 10.7k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  10.7k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  10.7k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  10.7k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  10.7k|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 10.7k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  10.7k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  10.7k|    }                                                   		                \
  |  |  |  |  118|  10.7k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 10.7k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  10.7k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  10.7k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 10.7k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  552|  10.7k|  g_return_val_if_fail (new_ref_count > 1, NULL);
  ------------------
  |  |  643|  10.7k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  10.7k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  10.7k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  10.7k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  10.7k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  10.7k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  10.7k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  10.7k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 10.7k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  10.7k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  10.7k|   else                                         \
  |  |  |  |  |  | 1021|  10.7k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  10.7k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  10.7k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 10.7k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  10.7k|      { } \
  |  |  646|  10.7k|    else \
  |  |  647|  10.7k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  10.7k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  10.7k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 10.7k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  553|       |
  554|  10.7k|  return closure;
  555|  10.7k|}
g_closure_invalidate:
  577|  3.32k|{
  578|  3.32k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  3.32k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.32k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.32k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.32k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.32k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.32k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.32k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.32k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.32k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.32k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.32k|   else                                         \
  |  |  |  |  |  | 1021|  3.32k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.32k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.32k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.32k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.32k|      { } \
  |  |  633|  3.32k|    else \
  |  |  634|  3.32k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  3.32k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.32k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.32k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  579|       |
  580|  3.32k|  if (!closure->is_invalid)
  ------------------
  |  Branch (580:7): [True: 3.32k, False: 0]
  ------------------
  581|  3.32k|    {
  582|  3.32k|      gboolean was_invalid;
  583|  3.32k|      g_closure_ref (closure);           /* preserve floating flag */
  584|  3.32k|      SWAP (closure, is_invalid, TRUE, &was_invalid);
  ------------------
  |  |  121|  3.32k|#define SWAP(_closure, _field, _value, _oldv)   CHANGE_FIELD (_closure, _field, =, _value, TRUE, *(_oldv) =,     (void) )
  |  |  ------------------
  |  |  |  |  104|  3.32k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  3.32k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  3.32k|G_STMT_START {                                                                          \
  |  |  |  |  106|  3.32k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  3.32k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  3.32k|  do                                                    		                \
  |  |  |  |  109|  3.32k|    {                                                   		                \
  |  |  |  |  110|  3.32k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  3.32k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  3.32k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  3.32k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  3.32k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  3.32k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  3.32k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  3.32k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.32k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  3.32k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  3.32k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  3.32k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  3.32k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 3.32k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  3.32k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  3.32k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  3.32k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.32k|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 3.32k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  3.32k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  3.32k|    }                                                   		                \
  |  |  |  |  118|  3.32k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 3.32k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  3.32k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  3.32k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 3.32k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  585|       |      /* invalidate only once */
  586|  3.32k|      if (!was_invalid)
  ------------------
  |  Branch (586:11): [True: 3.32k, False: 0]
  ------------------
  587|  3.32k|        closure_invoke_notifiers (closure, INOTIFY);
  588|  3.32k|      g_closure_unref (closure);
  589|  3.32k|    }
  590|  3.32k|}
g_closure_unref:
  602|  14.1k|{
  603|  14.1k|  guint new_ref_count;
  604|       |
  605|  14.1k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  14.1k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  14.1k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  14.1k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  14.1k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  14.1k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  14.1k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  14.1k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  14.1k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 14.1k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  14.1k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  14.1k|   else                                         \
  |  |  |  |  |  | 1021|  14.1k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  14.1k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  14.1k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 14.1k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  14.1k|      { } \
  |  |  633|  14.1k|    else \
  |  |  634|  14.1k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  14.1k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  14.1k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 14.1k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  606|  14.1k|  g_return_if_fail (closure->ref_count > 0);
  ------------------
  |  |  630|  14.1k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  14.1k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  14.1k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  14.1k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  14.1k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  14.1k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  14.1k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  14.1k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 14.1k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  14.1k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  14.1k|   else                                         \
  |  |  |  |  |  | 1021|  14.1k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  14.1k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  14.1k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 14.1k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  14.1k|      { } \
  |  |  633|  14.1k|    else \
  |  |  634|  14.1k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  14.1k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  14.1k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 14.1k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  607|       |
  608|  14.1k|  if (closure->ref_count == 1)	/* last unref, invalidate first */
  ------------------
  |  Branch (608:7): [True: 3.32k, False: 10.7k]
  ------------------
  609|  3.32k|    g_closure_invalidate (closure);
  610|       |
  611|  14.1k|  DEC_ASSIGN (closure, ref_count, &new_ref_count);
  ------------------
  |  |  126|  14.1k|#define DEC_ASSIGN(_closure, _field, _newv)     CHANGE_FIELD (_closure, _field, -=,     1, TRUE,     (void), *(_newv) = )
  |  |  ------------------
  |  |  |  |  104|  14.1k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  14.1k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  14.1k|G_STMT_START {                                                                          \
  |  |  |  |  106|  14.1k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  14.1k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  14.1k|  do                                                    		                \
  |  |  |  |  109|  14.1k|    {                                                   		                \
  |  |  |  |  110|  14.1k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  14.1k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  14.1k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  14.1k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  14.1k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  14.1k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  14.1k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  14.1k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  14.1k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  14.1k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  14.1k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  14.1k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  14.1k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 14.1k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  14.1k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  14.1k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  14.1k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  14.1k|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 14.1k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  14.1k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  14.1k|    }                                                   		                \
  |  |  |  |  118|  14.1k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 14.1k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  14.1k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  14.1k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 14.1k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  612|       |
  613|  14.1k|  if (new_ref_count == 0)
  ------------------
  |  Branch (613:7): [True: 3.32k, False: 10.7k]
  ------------------
  614|  3.32k|    {
  615|  3.32k|      closure_invoke_notifiers (closure, FNOTIFY);
  616|  3.32k|      g_free (closure->notifiers);
  617|       |
  618|  3.32k|#ifdef ENABLE_VALGRIND
  619|       |      /* See comments in gtype.c about what's going on here... */
  620|  3.32k|      if (RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|  3.32k|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|  3.32k|    __extension__                                                 \
  |  |  |  |  414|  3.32k|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|  3.32k|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|  3.32k|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|  3.32k|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|  3.32k|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|  3.32k|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|  3.32k|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|  3.32k|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|  3.32k|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|  3.32k|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|  3.32k|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|  3.32k|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|  3.32k|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|  3.32k|                     : "cc", "memory"                             \
  |  |  |  |  428|  3.32k|                    );                                            \
  |  |  |  |  429|  3.32k|    _zzq_result;                                                  \
  |  |  |  |  430|  3.32k|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 3.32k]
  |  |  ------------------
  |  | 6216|  3.32k|                                    VG_USERREQ__RUNNING_ON_VALGRIND,  \
  |  | 6217|  3.32k|                                    0, 0, 0, 0, 0)                    \
  ------------------
  621|      0|        {
  622|      0|          gchar *allocated;
  623|       |
  624|      0|          allocated = (gchar *) G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|      0|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|      0|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  625|      0|          allocated -= sizeof (gpointer);
  626|       |
  627|      0|          g_free (allocated);
  628|       |
  629|      0|          VALGRIND_FREELIKE_BLOCK (allocated + sizeof (gpointer), 0);
  ------------------
  |  | 6493|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__FREELIKE_BLOCK,         \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6494|      0|                                    addr, rzB, 0, 0, 0)
  ------------------
  630|      0|          VALGRIND_FREELIKE_BLOCK (closure, 0);
  ------------------
  |  | 6493|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__FREELIKE_BLOCK,         \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6494|      0|                                    addr, rzB, 0, 0, 0)
  ------------------
  631|      0|        }
  632|  3.32k|      else
  633|  3.32k|#endif
  634|  3.32k|        g_free (G_REAL_CLOSURE (closure));
  ------------------
  |  |   63|  3.32k|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|  3.32k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  635|  3.32k|    }
  636|  14.1k|}
g_closure_sink:
  686|  3.33k|{
  687|  3.33k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  3.33k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.33k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.33k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.33k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.33k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.33k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.33k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.33k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.33k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.33k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.33k|   else                                         \
  |  |  |  |  |  | 1021|  3.33k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.33k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.33k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.33k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.33k|      { } \
  |  |  633|  3.33k|    else \
  |  |  634|  3.33k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  3.33k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.33k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.33k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  688|  3.33k|  g_return_if_fail (closure->ref_count > 0);
  ------------------
  |  |  630|  3.33k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.33k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.33k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.33k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.33k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.33k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.33k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.33k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.33k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.33k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.33k|   else                                         \
  |  |  |  |  |  | 1021|  3.33k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.33k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.33k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.33k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.33k|      { } \
  |  |  633|  3.33k|    else \
  |  |  634|  3.33k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  3.33k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.33k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.33k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  689|       |
  690|       |  /* floating is basically a kludge to avoid creating closures
  691|       |   * with a ref_count of 0. so the initial ref_count a closure has
  692|       |   * is unowned. with invoking g_closure_sink() code may
  693|       |   * indicate that it takes over that initial ref_count.
  694|       |   */
  695|  3.33k|  if (closure->floating)
  ------------------
  |  Branch (695:7): [True: 3.33k, False: 0]
  ------------------
  696|  3.33k|    {
  697|  3.33k|      gboolean was_floating;
  698|  3.33k|      SWAP (closure, floating, FALSE, &was_floating);
  ------------------
  |  |  121|  3.33k|#define SWAP(_closure, _field, _value, _oldv)   CHANGE_FIELD (_closure, _field, =, _value, TRUE, *(_oldv) =,     (void) )
  |  |  ------------------
  |  |  |  |  104|  3.33k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  3.33k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  3.33k|G_STMT_START {                                                                          \
  |  |  |  |  106|  3.33k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  3.33k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  3.33k|  do                                                    		                \
  |  |  |  |  109|  3.33k|    {                                                   		                \
  |  |  |  |  110|  3.33k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  3.33k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  3.33k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  3.33k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  3.33k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  3.33k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  3.33k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  3.33k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.33k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  3.33k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  3.33k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  3.33k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  3.33k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 3.33k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  3.33k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  3.33k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  3.33k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.33k|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 3.33k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  3.33k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  3.33k|    }                                                   		                \
  |  |  |  |  118|  3.33k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 3.33k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  3.33k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  3.33k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 3.33k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  699|       |      /* unref floating flag only once */
  700|  3.33k|      if (was_floating)
  ------------------
  |  Branch (700:11): [True: 3.33k, False: 0]
  ------------------
  701|  3.33k|        g_closure_unref (closure);
  702|  3.33k|    }
  703|  3.33k|}
g_closure_invoke:
  781|  4.11k|{
  782|  4.11k|  GRealClosure *real_closure;
  783|       |
  784|  4.11k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  4.11k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  4.11k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  4.11k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  4.11k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  4.11k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  4.11k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  4.11k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  4.11k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4.11k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  4.11k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  4.11k|   else                                         \
  |  |  |  |  |  | 1021|  4.11k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  4.11k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  4.11k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4.11k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  4.11k|      { } \
  |  |  633|  4.11k|    else \
  |  |  634|  4.11k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  4.11k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  4.11k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4.11k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  785|       |
  786|  4.11k|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|  4.11k|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|  4.11k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  787|       |
  788|  4.11k|  g_closure_ref (closure);      /* preserve floating flag */
  789|  4.11k|  if (!closure->is_invalid)
  ------------------
  |  Branch (789:7): [True: 4.11k, False: 0]
  ------------------
  790|  4.11k|    {
  791|  4.11k|      GClosureMarshal marshal;
  792|  4.11k|      gpointer marshal_data;
  793|  4.11k|      gboolean in_marshal = closure->in_marshal;
  794|       |
  795|  4.11k|      g_return_if_fail (closure->marshal || real_closure->meta_marshal);
  ------------------
  |  |  630|  4.11k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  4.11k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  4.11k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  4.11k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  4.11k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  4.11k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  4.11k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  8.23k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4.11k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  4.11k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  4.11k|   else                                         \
  |  |  |  |  |  | 1021|  4.11k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  4.11k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  4.11k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4.11k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  4.11k|      { } \
  |  |  633|  4.11k|    else \
  |  |  634|  4.11k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  4.11k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  4.11k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4.11k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  796|       |
  797|  4.11k|      SET (closure, in_marshal, TRUE);
  ------------------
  |  |  122|  4.11k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  4.11k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  4.11k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  4.11k|G_STMT_START {                                                                          \
  |  |  |  |  106|  4.11k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  4.11k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  4.11k|  do                                                    		                \
  |  |  |  |  109|  4.11k|    {                                                   		                \
  |  |  |  |  110|  4.11k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  4.11k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  4.11k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  4.11k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  4.11k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  4.11k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  4.11k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  4.11k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  4.11k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  4.11k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  4.11k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  4.11k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  4.11k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 4.11k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  4.11k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  4.11k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  4.11k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  4.11k|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 4.11k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  4.11k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  4.11k|    }                                                   		                \
  |  |  |  |  118|  4.11k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 4.11k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  4.11k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  4.11k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 4.11k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  798|  4.11k|      if (real_closure->meta_marshal)
  ------------------
  |  Branch (798:11): [True: 1.37k, False: 2.74k]
  ------------------
  799|  1.37k|	{
  800|  1.37k|	  marshal_data = real_closure->meta_marshal_data;
  801|  1.37k|	  marshal = real_closure->meta_marshal;
  802|  1.37k|	}
  803|  2.74k|      else
  804|  2.74k|	{
  805|  2.74k|	  marshal_data = NULL;
  806|  2.74k|	  marshal = closure->marshal;
  807|  2.74k|	}
  808|  4.11k|      if (!in_marshal)
  ------------------
  |  Branch (808:11): [True: 4.11k, False: 0]
  ------------------
  809|  4.11k|	closure_invoke_notifiers (closure, PRE_NOTIFY);
  810|  4.11k|      marshal (closure,
  811|  4.11k|	       return_value,
  812|  4.11k|	       n_param_values, param_values,
  813|  4.11k|	       invocation_hint,
  814|  4.11k|	       marshal_data);
  815|  4.11k|      if (!in_marshal)
  ------------------
  |  Branch (815:11): [True: 4.11k, False: 0]
  ------------------
  816|  4.11k|	closure_invoke_notifiers (closure, POST_NOTIFY);
  817|  4.11k|      SET (closure, in_marshal, in_marshal);
  ------------------
  |  |  122|  4.11k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  4.11k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  4.11k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  4.11k|G_STMT_START {                                                                          \
  |  |  |  |  106|  4.11k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  4.11k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  4.11k|  do                                                    		                \
  |  |  |  |  109|  4.11k|    {                                                   		                \
  |  |  |  |  110|  4.11k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  4.11k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  4.11k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  4.11k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  4.11k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  4.11k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  4.11k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  4.11k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  4.11k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  4.11k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  4.11k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  4.11k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  4.11k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 4.11k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  4.11k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  4.11k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  4.11k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  4.11k|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 4.11k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  4.11k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  4.11k|    }                                                   		                \
  |  |  |  |  118|  4.11k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 4.11k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  4.11k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  4.11k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 4.11k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  818|  4.11k|    }
  819|  4.11k|  g_closure_unref (closure);
  820|  4.11k|}
_g_closure_supports_invoke_va:
  824|  1.37k|{
  825|  1.37k|  GRealClosure *real_closure;
  826|       |
  827|  1.37k|  g_return_val_if_fail (closure != NULL, FALSE);
  ------------------
  |  |  643|  1.37k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.37k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.37k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.37k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.37k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.37k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.37k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.37k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.37k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.37k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.37k|   else                                         \
  |  |  |  |  |  | 1021|  1.37k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.37k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.37k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.37k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.37k|      { } \
  |  |  646|  1.37k|    else \
  |  |  647|  1.37k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.37k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.37k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.37k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  828|       |
  829|  1.37k|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|  1.37k|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|  1.37k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  830|       |
  831|  1.37k|  return
  832|  1.37k|    real_closure->va_marshal != NULL &&
  ------------------
  |  Branch (832:5): [True: 1.37k, False: 0]
  ------------------
  833|  1.37k|    (real_closure->meta_marshal == NULL ||
  ------------------
  |  Branch (833:6): [True: 1.37k, False: 0]
  ------------------
  834|      0|     real_closure->va_meta_marshal != NULL);
  ------------------
  |  Branch (834:6): [True: 0, False: 0]
  ------------------
  835|  1.37k|}
g_closure_set_marshal:
  901|  3.33k|{
  902|  3.33k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  3.33k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.33k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.33k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.33k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.33k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.33k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.33k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.33k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.33k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.33k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.33k|   else                                         \
  |  |  |  |  |  | 1021|  3.33k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.33k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.33k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.33k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.33k|      { } \
  |  |  633|  3.33k|    else \
  |  |  634|  3.33k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  3.33k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.33k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.33k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  903|  3.33k|  g_return_if_fail (marshal != NULL);
  ------------------
  |  |  630|  3.33k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.33k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.33k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.33k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.33k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.33k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.33k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.33k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.33k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.33k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.33k|   else                                         \
  |  |  |  |  |  | 1021|  3.33k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.33k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.33k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.33k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.33k|      { } \
  |  |  633|  3.33k|    else \
  |  |  634|  3.33k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  3.33k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.33k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.33k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  904|       |
  905|  3.33k|  if (closure->marshal && closure->marshal != marshal)
  ------------------
  |  Branch (905:7): [True: 0, False: 3.33k]
  |  Branch (905:27): [True: 0, False: 0]
  ------------------
  906|      0|    g_warning ("attempt to override closure->marshal (%p) with new marshal (%p)",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  907|  3.33k|	       closure->marshal, marshal);
  908|  3.33k|  else
  909|  3.33k|    closure->marshal = marshal;
  910|  3.33k|}
_g_closure_set_va_marshal:
  915|  3.32k|{
  916|  3.32k|  GRealClosure *real_closure;
  917|       |
  918|  3.32k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  3.32k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.32k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.32k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.32k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.32k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.32k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.32k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.32k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.32k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.32k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.32k|   else                                         \
  |  |  |  |  |  | 1021|  3.32k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.32k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.32k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.32k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.32k|      { } \
  |  |  633|  3.32k|    else \
  |  |  634|  3.32k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  3.32k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.32k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.32k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  919|  3.32k|  g_return_if_fail (marshal != NULL);
  ------------------
  |  |  630|  3.32k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.32k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.32k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.32k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.32k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.32k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.32k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.32k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.32k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.32k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.32k|   else                                         \
  |  |  |  |  |  | 1021|  3.32k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.32k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.32k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.32k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.32k|      { } \
  |  |  633|  3.32k|    else \
  |  |  634|  3.32k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  3.32k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.32k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.32k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  920|       |
  921|  3.32k|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|  3.32k|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|  3.32k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  922|       |
  923|  3.32k|  if (real_closure->va_marshal && real_closure->va_marshal != marshal)
  ------------------
  |  Branch (923:7): [True: 0, False: 3.32k]
  |  Branch (923:35): [True: 0, False: 0]
  ------------------
  924|      0|    g_warning ("attempt to override closure->va_marshal (%p) with new marshal (%p)",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  925|  3.32k|	       real_closure->va_marshal, marshal);
  926|  3.32k|  else
  927|  3.32k|    real_closure->va_marshal = marshal;
  928|  3.32k|}
g_cclosure_new:
  947|  3.32k|{
  948|  3.32k|  GClosure *closure;
  949|       |  
  950|  3.32k|  g_return_val_if_fail (callback_func != NULL, NULL);
  ------------------
  |  |  643|  3.32k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.32k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.32k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.32k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.32k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.32k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.32k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.32k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.32k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.32k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.32k|   else                                         \
  |  |  |  |  |  | 1021|  3.32k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.32k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.32k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.32k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.32k|      { } \
  |  |  646|  3.32k|    else \
  |  |  647|  3.32k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  3.32k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.32k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.32k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  951|       |  
  952|  3.32k|  closure = g_closure_new_simple (sizeof (GCClosure), user_data);
  953|  3.32k|  if (destroy_data)
  ------------------
  |  Branch (953:7): [True: 0, False: 3.32k]
  ------------------
  954|      0|    g_closure_add_finalize_notifier (closure, user_data, destroy_data);
  955|  3.32k|  ((GCClosure*) closure)->callback = (gpointer) callback_func;
  956|       |  
  957|  3.32k|  return closure;
  958|  3.32k|}
_g_closure_is_void:
 1068|   437k|{
 1069|   437k|  GRealClosure *real_closure;
 1070|   437k|  GTypeClass *class;
 1071|   437k|  gpointer callback;
 1072|   437k|  GType itype;
 1073|   437k|  guint offset;
 1074|       |
 1075|   437k|  if (closure->is_invalid)
  ------------------
  |  Branch (1075:7): [True: 0, False: 437k]
  ------------------
 1076|      0|    return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1077|       |
 1078|   437k|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|   437k|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|   437k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
 1079|       |
 1080|   437k|  if (real_closure->meta_marshal == g_type_iface_meta_marshal)
  ------------------
  |  Branch (1080:7): [True: 0, False: 437k]
  ------------------
 1081|      0|    {
 1082|      0|      itype = (GType) closure->data;
 1083|      0|      offset = GPOINTER_TO_UINT (real_closure->meta_marshal_data);
  ------------------
  |  |   99|      0|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 1084|       |
 1085|      0|      class = G_TYPE_INSTANCE_GET_INTERFACE (instance, itype, GTypeClass);
  ------------------
  |  |  540|      0|#define G_TYPE_INSTANCE_GET_INTERFACE(instance, g_type, c_type) (_G_TYPE_IGI ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2310|      0|#define _G_TYPE_IGI(ip, gt, ct)         ((ct*) g_type_interface_peek (((GTypeInstance*) ip)->g_class, gt))
  |  |  ------------------
  ------------------
 1086|      0|      callback = G_STRUCT_MEMBER (gpointer, class, offset);
  ------------------
  |  |  862|      0|    (*(member_type*) G_STRUCT_MEMBER_P ((struct_p), (struct_offset)))
  |  |  ------------------
  |  |  |  |  860|      0|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
 1087|      0|      return callback == NULL;
 1088|      0|    }
 1089|   437k|  else if (real_closure->meta_marshal == g_type_class_meta_marshal)
  ------------------
  |  Branch (1089:12): [True: 437k, False: 0]
  ------------------
 1090|   437k|    {
 1091|   437k|      offset = GPOINTER_TO_UINT (real_closure->meta_marshal_data);
  ------------------
  |  |   99|   437k|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 1092|       |
 1093|   437k|      class = G_TYPE_INSTANCE_GET_CLASS (instance, itype, GTypeClass);
  ------------------
  |  |  527|   437k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2309|   437k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  ------------------
  ------------------
 1094|   437k|      callback = G_STRUCT_MEMBER (gpointer, class, offset);
  ------------------
  |  |  862|   437k|    (*(member_type*) G_STRUCT_MEMBER_P ((struct_p), (struct_offset)))
  |  |  ------------------
  |  |  |  |  860|   437k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
 1095|   437k|      return callback == NULL;
 1096|   437k|    }
 1097|       |
 1098|      0|  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1099|   437k|}
g_signal_type_cclosure_new:
 1144|      4|{
 1145|      4|  GClosure *closure;
 1146|       |  
 1147|      4|  g_return_val_if_fail (G_TYPE_IS_CLASSED (itype) || G_TYPE_IS_INTERFACE (itype), NULL);
  ------------------
  |  |  643|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      8|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      4|      { } \
  |  |  646|      4|    else \
  |  |  647|      4|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1148|      4|  g_return_val_if_fail (struct_offset >= sizeof (GTypeClass), NULL);
  ------------------
  |  |  643|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      4|      { } \
  |  |  646|      4|    else \
  |  |  647|      4|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1149|       |  
 1150|      4|  closure = g_closure_new_simple (sizeof (GClosure), (gpointer) itype);
 1151|      4|  if (G_TYPE_IS_INTERFACE (itype))
  ------------------
  |  |  293|      4|#define G_TYPE_IS_INTERFACE(type)               (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   38|      4|#define G_TYPE_FUNDAMENTAL(type)	(g_type_fundamental (type))
  |  |  ------------------
  |  |               #define G_TYPE_IS_INTERFACE(type)               (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      4|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (293:49): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1152|      0|    {
 1153|      0|      g_closure_set_meta_marshal (closure, GUINT_TO_POINTER (struct_offset), g_type_iface_meta_marshal);
  ------------------
  |  |  102|      0|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
 1154|      0|      g_closure_set_meta_va_marshal (closure, g_type_iface_meta_marshalv);
 1155|      0|    }
 1156|      4|  else
 1157|      4|    {
 1158|      4|      g_closure_set_meta_marshal (closure, GUINT_TO_POINTER (struct_offset), g_type_class_meta_marshal);
  ------------------
  |  |  102|      4|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
 1159|      4|      g_closure_set_meta_va_marshal (closure, g_type_class_meta_marshalv);
 1160|      4|    }
 1161|      4|  return closure;
 1162|      4|}
gclosure.c:closure_invoke_notifiers:
  232|  14.8k|{
  233|       |  /* notifier layout:
  234|       |   *     n_guards    n_guards     n_fnotif.  n_inotifiers
  235|       |   * ->[[pre_guards][post_guards][fnotifiers][inotifiers]]
  236|       |   *
  237|       |   * CLOSURE_N_MFUNCS(cl)    = n_guards + n_guards;
  238|       |   * CLOSURE_N_NOTIFIERS(cl) = CLOSURE_N_MFUNCS(cl) + n_fnotifiers + n_inotifiers
  239|       |   *
  240|       |   * constrains/catches:
  241|       |   * - closure->notifiers may be reloacted during callback
  242|       |   * - closure->n_fnotifiers and closure->n_inotifiers may change during callback
  243|       |   * - i.e. callbacks can be removed/added during invocation
  244|       |   * - must prepare for callback removal during FNOTIFY and INOTIFY (done via ->marshal= & ->data=)
  245|       |   * - must distinguish (->marshal= & ->data=) for INOTIFY vs. FNOTIFY (via ->in_inotify)
  246|       |   * + closure->n_guards is const during PRE_NOTIFY & POST_NOTIFY
  247|       |   * + none of the callbacks can cause recursion
  248|       |   * + closure->n_inotifiers is const 0 during FNOTIFY
  249|       |   */
  250|  14.8k|  switch (notify_type)
  ------------------
  |  Branch (250:11): [True: 14.8k, False: 0]
  ------------------
  251|  14.8k|    {
  252|      0|      GClosureNotifyData *ndata;
  253|      0|      guint i, offs;
  254|  3.32k|    case FNOTIFY:
  ------------------
  |  Branch (254:5): [True: 3.32k, False: 11.5k]
  ------------------
  255|  3.32k|      while (closure->n_fnotifiers)
  ------------------
  |  Branch (255:14): [True: 0, False: 3.32k]
  ------------------
  256|      0|	{
  257|      0|          guint n;
  258|      0|	  DEC_ASSIGN (closure, n_fnotifiers, &n);
  ------------------
  |  |  126|      0|#define DEC_ASSIGN(_closure, _field, _newv)     CHANGE_FIELD (_closure, _field, -=,     1, TRUE,     (void), *(_newv) = )
  |  |  ------------------
  |  |  |  |  104|      0|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|      0|G_STMT_START {                                                                          \
  |  |  |  |  106|      0|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|      0|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|      0|  do                                                    		                \
  |  |  |  |  109|      0|    {                                                   		                \
  |  |  |  |  110|      0|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|      0|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|      0|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|      0|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|      0|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|      0|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|      0|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|      0|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      0|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|      0|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|      0|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|      0|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      0|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|      0|    }                                                   		                \
  |  |  |  |  118|      0|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 0]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|      0|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  259|       |
  260|      0|	  ndata = closure->notifiers + CLOSURE_N_MFUNCS (closure) + n;
  ------------------
  |  |   93|      0|#define	CLOSURE_N_MFUNCS(cl)		(((cl)->n_guards << 1L))
  ------------------
  261|      0|	  closure->marshal = (GClosureMarshal) ndata->notify;
  262|      0|	  closure->data = ndata->data;
  263|      0|	  ndata->notify (ndata->data, closure);
  264|      0|	}
  265|  3.32k|      closure->marshal = NULL;
  266|  3.32k|      closure->data = NULL;
  267|  3.32k|      break;
  268|  3.32k|    case INOTIFY:
  ------------------
  |  Branch (268:5): [True: 3.32k, False: 11.5k]
  ------------------
  269|  3.32k|      SET (closure, in_inotify, TRUE);
  ------------------
  |  |  122|  3.32k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  3.32k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  3.32k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  3.32k|G_STMT_START {                                                                          \
  |  |  |  |  106|  3.32k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  3.32k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  3.32k|  do                                                    		                \
  |  |  |  |  109|  3.32k|    {                                                   		                \
  |  |  |  |  110|  3.32k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  3.32k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  3.32k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  3.32k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  3.32k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  3.32k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  3.32k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  3.32k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.32k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  3.32k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  3.32k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  3.32k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  3.32k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 3.32k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  3.32k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  3.32k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  3.32k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.32k|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 3.32k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  3.32k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  3.32k|    }                                                   		                \
  |  |  |  |  118|  3.32k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 3.32k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  3.32k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  3.32k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 3.32k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  270|  3.32k|      while (closure->n_inotifiers)
  ------------------
  |  Branch (270:14): [True: 0, False: 3.32k]
  ------------------
  271|      0|	{
  272|      0|          guint n;
  273|      0|          DEC_ASSIGN (closure, n_inotifiers, &n);
  ------------------
  |  |  126|      0|#define DEC_ASSIGN(_closure, _field, _newv)     CHANGE_FIELD (_closure, _field, -=,     1, TRUE,     (void), *(_newv) = )
  |  |  ------------------
  |  |  |  |  104|      0|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|      0|G_STMT_START {                                                                          \
  |  |  |  |  106|      0|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|      0|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|      0|  do                                                    		                \
  |  |  |  |  109|      0|    {                                                   		                \
  |  |  |  |  110|      0|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|      0|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|      0|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|      0|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|      0|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|      0|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|      0|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|      0|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      0|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|      0|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|      0|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|      0|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      0|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|      0|    }                                                   		                \
  |  |  |  |  118|      0|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 0]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|      0|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  274|       |
  275|      0|	  ndata = closure->notifiers + CLOSURE_N_MFUNCS (closure) + closure->n_fnotifiers + n;
  ------------------
  |  |   93|      0|#define	CLOSURE_N_MFUNCS(cl)		(((cl)->n_guards << 1L))
  ------------------
  276|      0|	  closure->marshal = (GClosureMarshal) ndata->notify;
  277|      0|	  closure->data = ndata->data;
  278|      0|	  ndata->notify (ndata->data, closure);
  279|      0|	}
  280|  3.32k|      closure->marshal = NULL;
  281|  3.32k|      closure->data = NULL;
  282|  3.32k|      SET (closure, in_inotify, FALSE);
  ------------------
  |  |  122|  3.32k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  3.32k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  3.32k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  3.32k|G_STMT_START {                                                                          \
  |  |  |  |  106|  3.32k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  3.32k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  3.32k|  do                                                    		                \
  |  |  |  |  109|  3.32k|    {                                                   		                \
  |  |  |  |  110|  3.32k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  3.32k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  3.32k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  3.32k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  3.32k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  3.32k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  3.32k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  3.32k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.32k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  3.32k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  3.32k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  3.32k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  3.32k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 3.32k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  3.32k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  3.32k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  3.32k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.32k|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 3.32k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  3.32k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  3.32k|    }                                                   		                \
  |  |  |  |  118|  3.32k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 3.32k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  3.32k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  3.32k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 3.32k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  283|  3.32k|      break;
  284|  4.11k|    case PRE_NOTIFY:
  ------------------
  |  Branch (284:5): [True: 4.11k, False: 10.7k]
  ------------------
  285|  4.11k|      i = closure->n_guards;
  286|  4.11k|      offs = 0;
  287|  4.11k|      while (i--)
  ------------------
  |  Branch (287:14): [True: 0, False: 4.11k]
  ------------------
  288|      0|	{
  289|      0|	  ndata = closure->notifiers + offs + i;
  290|      0|	  ndata->notify (ndata->data, closure);
  291|      0|	}
  292|  4.11k|      break;
  293|  4.11k|    case POST_NOTIFY:
  ------------------
  |  Branch (293:5): [True: 4.11k, False: 10.7k]
  ------------------
  294|  4.11k|      i = closure->n_guards;
  295|  4.11k|      offs = i;
  296|  4.11k|      while (i--)
  ------------------
  |  Branch (296:14): [True: 0, False: 4.11k]
  ------------------
  297|      0|	{
  298|      0|	  ndata = closure->notifiers + offs + i;
  299|      0|	  ndata->notify (ndata->data, closure);
  300|      0|	}
  301|  4.11k|      break;
  302|  14.8k|    }
  303|  14.8k|}
gclosure.c:g_type_class_meta_marshal:
  998|  1.37k|{
  999|  1.37k|  GTypeClass *class;
 1000|  1.37k|  gpointer callback;
 1001|       |  /* GType itype = (GType) closure->data; */
 1002|  1.37k|  guint offset = GPOINTER_TO_UINT (marshal_data);
  ------------------
  |  |   99|  1.37k|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 1003|       |  
 1004|  1.37k|  class = G_TYPE_INSTANCE_GET_CLASS (g_value_peek_pointer (param_values + 0), itype, GTypeClass);
  ------------------
  |  |  527|  1.37k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2309|  1.37k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  ------------------
  ------------------
 1005|  1.37k|  callback = G_STRUCT_MEMBER (gpointer, class, offset);
  ------------------
  |  |  862|  1.37k|    (*(member_type*) G_STRUCT_MEMBER_P ((struct_p), (struct_offset)))
  |  |  ------------------
  |  |  |  |  860|  1.37k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
 1006|  1.37k|  if (callback)
  ------------------
  |  Branch (1006:7): [True: 0, False: 1.37k]
  ------------------
 1007|      0|    closure->marshal (closure,
 1008|      0|		      return_value,
 1009|      0|		      n_param_values, param_values,
 1010|      0|		      invocation_hint,
 1011|      0|		      callback);
 1012|  1.37k|}
gclosure.c:g_closure_set_meta_va_marshal:
  308|      4|{
  309|      4|  GRealClosure *real_closure;
  310|       |
  311|      4|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      4|      { } \
  |  |  633|      4|    else \
  |  |  634|      4|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  312|      4|  g_return_if_fail (va_meta_marshal != NULL);
  ------------------
  |  |  630|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      4|      { } \
  |  |  633|      4|    else \
  |  |  634|      4|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  313|      4|  g_return_if_fail (closure->is_invalid == FALSE);
  ------------------
  |  |  630|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      4|      { } \
  |  |  633|      4|    else \
  |  |  634|      4|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  314|      4|  g_return_if_fail (closure->in_marshal == FALSE);
  ------------------
  |  |  630|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      4|      { } \
  |  |  633|      4|    else \
  |  |  634|      4|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  315|       |
  316|      4|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|      4|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|      4|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  317|       |
  318|      4|  g_return_if_fail (real_closure->meta_marshal != NULL);
  ------------------
  |  |  630|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      4|      { } \
  |  |  633|      4|    else \
  |  |  634|      4|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  319|       |
  320|      4|  real_closure->va_meta_marshal = va_meta_marshal;
  321|      4|}

_g_enum_types_init:
   89|      2|{
   90|      2|  static gboolean initialized = FALSE;
  ------------------
  |  |  814|      2|#define	FALSE	(0)
  ------------------
   91|      2|  static const GTypeValueTable flags_enum_value_table = {
   92|      2|    value_flags_enum_init,	    /* value_init */
   93|      2|    NULL,			    /* value_free */
   94|      2|    value_flags_enum_copy_value,    /* value_copy */
   95|      2|    NULL,			    /* value_peek_pointer */
   96|      2|    "i",			    /* collect_format */
   97|      2|    value_flags_enum_collect_value, /* collect_value */
   98|      2|    "p",			    /* lcopy_format */
   99|      2|    value_flags_enum_lcopy_value,   /* lcopy_value */
  100|      2|  };
  101|      2|  GTypeInfo info = {
  102|      2|    0,                          /* class_size */
  103|      2|    NULL,                       /* base_init */
  104|      2|    NULL,                       /* base_destroy */
  105|      2|    NULL,                       /* class_init */
  106|      2|    NULL,                       /* class_destroy */
  107|      2|    NULL,                       /* class_data */
  108|      2|    0,                          /* instance_size */
  109|      2|    0,                          /* n_preallocs */
  110|      2|    NULL,                       /* instance_init */
  111|      2|    &flags_enum_value_table,    /* value_table */
  112|      2|  };
  113|      2|  static const GTypeFundamentalInfo finfo = {
  114|      2|    G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_DERIVABLE,
  115|      2|  };
  116|      2|  GType type G_GNUC_UNUSED  /* when compiling with G_DISABLE_ASSERT */;
  117|       |  
  118|      2|  g_return_if_fail (initialized == FALSE);
  ------------------
  |  |  630|      2|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      2|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      2|      { } \
  |  |  633|      2|    else \
  |  |  634|      2|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      2|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  119|      2|  initialized = TRUE;
  ------------------
  |  |  818|      2|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      2|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  120|       |  
  121|       |  /* G_TYPE_ENUM
  122|       |   */
  123|      2|  info.class_size = sizeof (GEnumClass);
  124|      2|  type = g_type_register_fundamental (G_TYPE_ENUM, g_intern_static_string ("GEnum"), &info, &finfo,
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  125|      2|				      G_TYPE_FLAG_ABSTRACT | G_TYPE_FLAG_VALUE_ABSTRACT);
  126|      2|  g_assert (type == G_TYPE_ENUM);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  127|       |  
  128|       |  /* G_TYPE_FLAGS
  129|       |   */
  130|      2|  info.class_size = sizeof (GFlagsClass);
  131|      2|  type = g_type_register_fundamental (G_TYPE_FLAGS, g_intern_static_string ("GFlags"), &info, &finfo,
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  132|      2|				      G_TYPE_FLAG_ABSTRACT | G_TYPE_FLAG_VALUE_ABSTRACT);
  133|      2|  g_assert (type == G_TYPE_FLAGS);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  134|      2|}

g_cclosure_marshal_VOID__PARAM:
 1494|  2.74k|{
 1495|  2.74k|  typedef void (*GMarshalFunc_VOID__PARAM) (gpointer     data1,
 1496|  2.74k|                                            gpointer     arg_1,
 1497|  2.74k|                                            gpointer     data2);
 1498|  2.74k|  GMarshalFunc_VOID__PARAM callback;
 1499|  2.74k|  GCClosure *cc = (GCClosure*) closure;
 1500|  2.74k|  gpointer data1, data2;
 1501|       |
 1502|  2.74k|  g_return_if_fail (n_param_values == 2);
  ------------------
  |  |  630|  2.74k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.74k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.74k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.74k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.74k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.74k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.74k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.74k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.74k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.74k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.74k|   else                                         \
  |  |  |  |  |  | 1021|  2.74k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.74k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.74k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.74k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.74k|      { } \
  |  |  633|  2.74k|    else \
  |  |  634|  2.74k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  2.74k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.74k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.74k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1503|       |
 1504|  2.74k|  if (G_CCLOSURE_SWAP_DATA (closure))
  ------------------
  |  |   63|  2.74k|#define	G_CCLOSURE_SWAP_DATA(cclosure)	 (((GClosure*) (cclosure))->derivative_flag)
  |  |  ------------------
  |  |  |  Branch (63:41): [True: 0, False: 2.74k]
  |  |  ------------------
  ------------------
 1505|      0|    {
 1506|      0|      data1 = closure->data;
 1507|      0|      data2 = g_value_peek_pointer (param_values + 0);
 1508|      0|    }
 1509|  2.74k|  else
 1510|  2.74k|    {
 1511|  2.74k|      data1 = g_value_peek_pointer (param_values + 0);
 1512|  2.74k|      data2 = closure->data;
 1513|  2.74k|    }
 1514|  2.74k|  callback = (GMarshalFunc_VOID__PARAM) (marshal_data ? marshal_data : cc->callback);
  ------------------
  |  Branch (1514:42): [True: 0, False: 2.74k]
  ------------------
 1515|       |
 1516|  2.74k|  callback (data1,
 1517|  2.74k|            g_marshal_value_peek_param (param_values + 1),
  ------------------
  |  |   40|  2.74k|#define g_marshal_value_peek_param(v)    g_value_get_param (v)
  ------------------
 1518|  2.74k|            data2);
 1519|  2.74k|}

_g_object_type_init:
  403|      2|{
  404|      2|  static gboolean initialized = FALSE;
  ------------------
  |  |  814|      2|#define	FALSE	(0)
  ------------------
  405|      2|  static const GTypeFundamentalInfo finfo = {
  406|      2|    G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE,
  407|      2|  };
  408|      2|  GTypeInfo info = {
  409|      2|    sizeof (GObjectClass),
  410|      2|    (GBaseInitFunc) g_object_base_class_init,
  411|      2|    (GBaseFinalizeFunc) g_object_base_class_finalize,
  412|      2|    (GClassInitFunc) g_object_do_class_init,
  413|      2|    NULL	/* class_destroy */,
  414|      2|    NULL	/* class_data */,
  415|      2|    sizeof (GObject),
  416|      2|    0		/* n_preallocs */,
  417|      2|    (GInstanceInitFunc) g_object_init,
  418|      2|    NULL,	/* value_table */
  419|      2|  };
  420|      2|  static const GTypeValueTable value_table = {
  421|      2|    g_value_object_init,	  /* value_init */
  422|      2|    g_value_object_free_value,	  /* value_free */
  423|      2|    g_value_object_copy_value,	  /* value_copy */
  424|      2|    g_value_object_peek_pointer,  /* value_peek_pointer */
  425|      2|    "p",			  /* collect_format */
  426|      2|    g_value_object_collect_value, /* collect_value */
  427|      2|    "p",			  /* lcopy_format */
  428|      2|    g_value_object_lcopy_value,	  /* lcopy_value */
  429|      2|  };
  430|      2|  GType type G_GNUC_UNUSED  /* when compiling with G_DISABLE_ASSERT */;
  431|       |  
  432|      2|  g_return_if_fail (initialized == FALSE);
  ------------------
  |  |  630|      2|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      2|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      2|      { } \
  |  |  633|      2|    else \
  |  |  634|      2|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      2|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  433|      2|  initialized = TRUE;
  ------------------
  |  |  818|      2|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      2|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  434|       |  
  435|       |  /* G_TYPE_OBJECT
  436|       |   */
  437|      2|  info.value_table = &value_table;
  438|      2|  type = g_type_register_fundamental (G_TYPE_OBJECT, g_intern_static_string ("GObject"), &info, &finfo, 0);
  ------------------
  |  |  178|      2|#define G_TYPE_OBJECT			G_TYPE_MAKE_FUNDAMENTAL (20)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  439|      2|  g_assert (type == G_TYPE_OBJECT);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  440|      2|  g_value_register_transform_func (G_TYPE_OBJECT, G_TYPE_OBJECT, g_value_object_transform_value);
  ------------------
  |  |  178|      2|#define G_TYPE_OBJECT			G_TYPE_MAKE_FUNDAMENTAL (20)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_OBJECT, G_TYPE_OBJECT, g_value_object_transform_value);
  ------------------
  |  |  178|      2|#define G_TYPE_OBJECT			G_TYPE_MAKE_FUNDAMENTAL (20)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  441|       |
  442|      2|#if G_ENABLE_DEBUG
  443|       |  /* We cannot use GOBJECT_IF_DEBUG here because of the G_HAS_CONSTRUCTORS
  444|       |   * conditional in between, as the C spec leaves conditionals inside macro
  445|       |   * expansions as undefined behavior. Only GCC and Clang are known to work
  446|       |   * but compilation breaks on MSVC.
  447|       |   *
  448|       |   * See: https://bugzilla.gnome.org/show_bug.cgi?id=769504
  449|       |   */
  450|      2|  if (_g_type_debug_flags & G_TYPE_DEBUG_OBJECTS) \
  ------------------
  |  Branch (450:7): [True: 0, False: 2]
  ------------------
  451|      0|    {
  452|      0|      debug_objects_ht = g_hash_table_new (g_direct_hash, NULL);
  453|       |# ifndef G_HAS_CONSTRUCTORS
  454|       |      g_atexit (debug_objects_atexit);
  455|       |# endif /* G_HAS_CONSTRUCTORS */
  456|      0|    }
  457|      2|#endif /* G_ENABLE_DEBUG */
  458|      2|}
g_object_class_install_property:
  656|     35|{
  657|     35|  GType oclass_type, parent_type;
  658|       |
  659|     35|  g_return_if_fail (G_IS_OBJECT_CLASS (class));
  ------------------
  |  |  630|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    175|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 35]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 35]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     35|      { } \
  |  |  633|     35|    else \
  |  |  634|     35|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  660|     35|  g_return_if_fail (property_id > 0);
  ------------------
  |  |  630|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     35|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     35|      { } \
  |  |  633|     35|    else \
  |  |  634|     35|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  661|       |
  662|     35|  oclass_type = G_OBJECT_CLASS_TYPE (class);
  ------------------
  |  |  119|     35|#define G_OBJECT_CLASS_TYPE(class)  (G_TYPE_FROM_CLASS (class))
  |  |  ------------------
  |  |  |  |  613|     35|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
  663|     35|  parent_type = g_type_parent (oclass_type);
  664|       |
  665|     35|  if (CLASS_HAS_DERIVED_CLASS (class))
  ------------------
  |  |  151|     35|    ((class)->flags & CLASS_HAS_DERIVED_CLASS_FLAG)
  |  |  ------------------
  |  |  |  |  149|     35|#define CLASS_HAS_DERIVED_CLASS_FLAG 0x2
  |  |  ------------------
  |  |  |  Branch (151:5): [True: 0, False: 35]
  |  |  ------------------
  ------------------
  666|     35|    g_error ("Attempt to add property %s::%s to class after it was derived", G_OBJECT_CLASS_NAME (class), pspec->name);
  ------------------
  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  337|      0|                        for (;;) ;                   \
  |  |  338|      0|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  667|       |
  668|     35|  (void) validate_and_install_class_property (class,
  669|     35|                                              oclass_type,
  670|     35|                                              parent_type,
  671|     35|                                              property_id,
  672|     35|                                              pspec);
  673|     35|}
_g_object_has_signal_handler:
 1067|   437k|{
 1068|   437k|#ifdef HAVE_OPTIONAL_FLAGS
 1069|   437k|  return (object_get_optional_flags (object) & OPTIONAL_FLAG_HAS_SIGNAL_HANDLER) != 0;
  ------------------
  |  |  166|   437k|#define OPTIONAL_FLAG_HAS_SIGNAL_HANDLER 1<<1 /* Set if object ever had a signal handler */
  ------------------
 1070|       |#else
 1071|       |  return TRUE;
 1072|       |#endif
 1073|   437k|}
_g_object_set_has_signal_handler:
 1077|  3.32k|{
 1078|  3.32k|#ifdef HAVE_OPTIONAL_FLAGS
 1079|  3.32k|  object_set_optional_flags (object, OPTIONAL_FLAG_HAS_SIGNAL_HANDLER);
  ------------------
  |  |  166|  3.32k|#define OPTIONAL_FLAG_HAS_SIGNAL_HANDLER 1<<1 /* Set if object ever had a signal handler */
  ------------------
 1080|  3.32k|#endif
 1081|  3.32k|}
g_object_notify:
 1323|  3.03k|{
 1324|  3.03k|  GParamSpec *pspec;
 1325|       |  
 1326|  3.03k|  g_return_if_fail (G_IS_OBJECT (object));
  ------------------
  |  |  630|  3.03k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.03k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.03k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.03k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.03k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.03k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.03k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.03k|   else                                         \
  |  |  |  |  |  | 1021|  3.03k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.03k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.03k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.03k|      { } \
  |  |  633|  3.03k|    else \
  |  |  634|  3.03k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  3.03k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1327|  3.03k|  g_return_if_fail (property_name != NULL);
  ------------------
  |  |  630|  3.03k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.03k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.03k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.03k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.03k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.03k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.03k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.03k|   else                                         \
  |  |  |  |  |  | 1021|  3.03k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.03k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.03k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.03k|      { } \
  |  |  633|  3.03k|    else \
  |  |  634|  3.03k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  3.03k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1328|  3.03k|  if (g_atomic_int_get (&object->ref_count) == 0)
  ------------------
  |  |   96|  3.03k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  3.03k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  3.03k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  3.03k|    gint gaig_temp;                                                          \
  |  |   99|  3.03k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 3.03k]
  |  |  ------------------
  |  |  100|  3.03k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  3.03k|    (gint) gaig_temp;                                                        \
  |  |  102|  3.03k|  }))
  ------------------
  |  Branch (1328:7): [True: 0, False: 3.03k]
  ------------------
 1329|      0|    return;
 1330|       |  
 1331|  3.03k|  g_object_ref (object);
  ------------------
  |  |  523|  3.03k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
 1332|       |  /* We don't need to get the redirect target
 1333|       |   * (by, e.g. calling g_object_class_find_property())
 1334|       |   * because g_object_notify_queue_add() does that
 1335|       |   */
 1336|  3.03k|  pspec = g_param_spec_pool_lookup (pspec_pool,
 1337|  3.03k|				    property_name,
 1338|  3.03k|				    G_OBJECT_TYPE (object),
  ------------------
  |  |  100|  3.03k|#define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
  |  |  ------------------
  |  |  |  |  602|  3.03k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|  3.03k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1339|  3.03k|				    TRUE);
  ------------------
  |  |  818|  3.03k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  3.03k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1340|       |
 1341|  3.03k|  if (!pspec)
  ------------------
  |  Branch (1341:7): [True: 0, False: 3.03k]
  ------------------
 1342|      0|    g_warning ("%s: object class '%s' has no property named '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1343|  3.03k|	       G_STRFUNC,
 1344|  3.03k|	       G_OBJECT_TYPE_NAME (object),
 1345|  3.03k|	       property_name);
 1346|  3.03k|  else
 1347|  3.03k|    g_object_notify_by_spec_internal (object, pspec);
 1348|  3.03k|  g_object_unref (object);
 1349|  3.03k|}
g_object_new:
 1773|  1.29M|{
 1774|  1.29M|  GObject *object;
 1775|  1.29M|  va_list var_args;
 1776|       |  
 1777|       |  /* short circuit for calls supplying no properties */
 1778|  1.29M|  if (!first_property_name)
  ------------------
  |  Branch (1778:7): [True: 1.29M, False: 0]
  ------------------
 1779|  1.29M|    return g_object_new_with_properties (object_type, 0, NULL, NULL);
 1780|       |
 1781|  1.29M|  va_start (var_args, first_property_name);
 1782|      0|  object = g_object_new_valist (object_type, first_property_name, var_args);
 1783|      0|  va_end (var_args);
 1784|       |  
 1785|      0|  return object;
 1786|  1.29M|}
g_object_new_with_properties:
 2066|  1.29M|{
 2067|  1.29M|  GObjectClass *class, *unref_class = NULL;
 2068|  1.29M|  GObject *object;
 2069|       |
 2070|  1.29M|  g_return_val_if_fail (G_TYPE_IS_OBJECT (object_type), NULL);
  ------------------
  |  |  643|  1.29M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.29M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.29M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.29M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.29M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.29M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.29M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.29M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.29M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.29M|   else                                         \
  |  |  |  |  |  | 1021|  1.29M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.29M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.29M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.29M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.29M|      { } \
  |  |  646|  1.29M|    else \
  |  |  647|  1.29M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.29M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.29M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.29M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2071|       |
 2072|       |  /* Try to avoid thrashing the ref_count if we don't need to (since
 2073|       |   * it's a locked operation).
 2074|       |   */
 2075|  1.29M|  class = g_type_class_peek_static (object_type);
 2076|       |
 2077|  1.29M|  if (class == NULL)
  ------------------
  |  Branch (2077:7): [True: 7, False: 1.29M]
  ------------------
 2078|      7|    class = unref_class = g_type_class_ref (object_type);
 2079|       |
 2080|  1.29M|  if (n_properties > 0)
  ------------------
  |  Branch (2080:7): [True: 0, False: 1.29M]
  ------------------
 2081|      0|    {
 2082|      0|      guint i, count = 0;
 2083|      0|      GObjectConstructParam *params;
 2084|       |
 2085|      0|      params = g_newa (GObjectConstructParam, n_properties);
  ------------------
  |  |  101|      0|#define g_newa(struct_type, n_structs)	((struct_type*) g_alloca (sizeof (struct_type) * (gsize) (n_structs)))
  |  |  ------------------
  |  |  |  |   91|      0|#define g_alloca(size)		 alloca (size)
  |  |  ------------------
  ------------------
 2086|      0|      for (i = 0; i < n_properties; i++)
  ------------------
  |  Branch (2086:19): [True: 0, False: 0]
  ------------------
 2087|      0|        {
 2088|      0|          GParamSpec *pspec;
 2089|      0|          pspec = g_param_spec_pool_lookup (pspec_pool, names[i], object_type, TRUE);
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2090|      0|          if (!g_object_new_is_valid_property (object_type, pspec, names[i], params, count))
  ------------------
  |  Branch (2090:15): [True: 0, False: 0]
  ------------------
 2091|      0|            continue;
 2092|      0|          params[count].pspec = pspec;
 2093|       |
 2094|       |          /* Init GValue */
 2095|      0|          params[count].value = g_newa (GValue, 1);
  ------------------
  |  |  101|      0|#define g_newa(struct_type, n_structs)	((struct_type*) g_alloca (sizeof (struct_type) * (gsize) (n_structs)))
  |  |  ------------------
  |  |  |  |   91|      0|#define g_alloca(size)		 alloca (size)
  |  |  ------------------
  ------------------
 2096|      0|          memset (params[count].value, 0, sizeof (GValue));
 2097|      0|          g_value_init (params[count].value, G_VALUE_TYPE (&values[i]));
  ------------------
  |  |   59|      0|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
 2098|       |
 2099|      0|          g_value_copy (&values[i], params[count].value);
 2100|      0|          count++;
 2101|      0|        }
 2102|      0|      object = g_object_new_internal (class, params, count);
 2103|       |
 2104|      0|      while (count--)
  ------------------
  |  Branch (2104:14): [True: 0, False: 0]
  ------------------
 2105|      0|        g_value_unset (params[count].value);
 2106|      0|    }
 2107|  1.29M|  else
 2108|  1.29M|    object = g_object_new_internal (class, NULL, 0);
 2109|       |
 2110|  1.29M|  if (unref_class != NULL)
  ------------------
  |  Branch (2110:7): [True: 7, False: 1.29M]
  ------------------
 2111|      7|    g_type_class_unref (unref_class);
 2112|       |
 2113|  1.29M|  return object;
 2114|  1.29M|}
g_object_weak_ref:
 2992|   145k|{
 2993|   145k|  WeakRefStack *wstack;
 2994|   145k|  guint i;
 2995|       |  
 2996|   145k|  g_return_if_fail (G_IS_OBJECT (object));
  ------------------
  |  |  630|   145k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   145k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   145k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   145k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   145k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   145k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   145k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   145k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 145k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   145k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   145k|   else                                         \
  |  |  |  |  |  | 1021|   145k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   145k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   145k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 145k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   145k|      { } \
  |  |  633|   145k|    else \
  |  |  634|   145k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   145k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   145k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 145k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2997|   145k|  g_return_if_fail (notify != NULL);
  ------------------
  |  |  630|   145k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   145k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   145k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   145k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   145k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   145k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   145k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   145k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 145k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   145k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   145k|   else                                         \
  |  |  |  |  |  | 1021|   145k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   145k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   145k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 145k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   145k|      { } \
  |  |  633|   145k|    else \
  |  |  634|   145k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   145k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   145k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 145k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2998|   145k|  g_return_if_fail (g_atomic_int_get (&object->ref_count) >= 1);
  ------------------
  |  |  630|   145k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   145k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   145k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   145k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   145k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   145k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   145k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   437k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 145k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 145k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   145k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   145k|   else                                         \
  |  |  |  |  |  | 1021|   145k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   145k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   145k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 145k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   145k|      { } \
  |  |  633|   145k|    else \
  |  |  634|   145k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   145k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   145k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 145k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2999|       |
 3000|   145k|  G_LOCK (weak_refs_mutex);
  ------------------
  |  |  135|   145k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   145k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
 3001|   145k|  wstack = g_datalist_id_remove_no_notify (&object->qdata, quark_weak_refs);
 3002|   145k|  if (wstack)
  ------------------
  |  Branch (3002:7): [True: 127k, False: 18.3k]
  ------------------
 3003|   127k|    {
 3004|   127k|      i = wstack->n_weak_refs++;
 3005|   127k|      wstack = g_realloc (wstack, sizeof (*wstack) + sizeof (wstack->weak_refs[0]) * i);
 3006|   127k|    }
 3007|  18.3k|  else
 3008|  18.3k|    {
 3009|  18.3k|      wstack = g_renew (WeakRefStack, NULL, 1);
  ------------------
  |  |  321|  18.3k|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|  18.3k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  18.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|  18.3k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|  18.3k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|  18.3k|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|  18.3k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 18.3k]
  |  |  |  |  ------------------
  |  |  |  |  254|  18.3k|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|  18.3k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 18.3k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  256|  18.3k|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  18.3k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  18.3k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (256:14): [True: 0, False: 18.3k]
  |  |  |  |  |  Branch (256:26): [True: 18.3k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  257|  18.3k|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|  18.3k|	  else							\
  |  |  |  |  259|  18.3k|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|  18.3k|	  __p;							\
  |  |  |  |  261|  18.3k|	}))
  |  |  ------------------
  ------------------
 3010|  18.3k|      wstack->object = object;
 3011|  18.3k|      wstack->n_weak_refs = 1;
 3012|  18.3k|      i = 0;
 3013|  18.3k|    }
 3014|   145k|  wstack->weak_refs[i].notify = notify;
 3015|   145k|  wstack->weak_refs[i].data = data;
 3016|   145k|  g_datalist_id_set_data_full (&object->qdata, quark_weak_refs, wstack, weak_refs_notify);
 3017|   145k|  G_UNLOCK (weak_refs_mutex);
  ------------------
  |  |  136|   145k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   145k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
 3018|   145k|}
g_object_add_weak_pointer:
 3081|   145k|{
 3082|   145k|  g_return_if_fail (G_IS_OBJECT (object));
  ------------------
  |  |  630|   145k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   145k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   145k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   145k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   145k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   145k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   145k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   145k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 145k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   145k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   145k|   else                                         \
  |  |  |  |  |  | 1021|   145k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   145k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   145k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 145k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   145k|      { } \
  |  |  633|   145k|    else \
  |  |  634|   145k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   145k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   145k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 145k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3083|   145k|  g_return_if_fail (weak_pointer_location != NULL);
  ------------------
  |  |  630|   145k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   145k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   145k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   145k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   145k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   145k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   145k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   145k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 145k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   145k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   145k|   else                                         \
  |  |  |  |  |  | 1021|   145k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   145k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   145k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 145k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   145k|      { } \
  |  |  633|   145k|    else \
  |  |  634|   145k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   145k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   145k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 145k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3084|       |
 3085|   145k|  g_object_weak_ref (object, 
 3086|   145k|                     (GWeakNotify) g_nullify_pointer, 
 3087|   145k|                     weak_pointer_location);
 3088|   145k|}
g_object_ref:
 3384|  1.17M|{
 3385|  1.17M|  GObject *object = _object;
 3386|  1.17M|  gint old_val;
 3387|  1.17M|  gboolean object_already_finalized;
 3388|       |
 3389|  1.17M|  g_return_val_if_fail (G_IS_OBJECT (object), NULL);
  ------------------
  |  |  643|  1.17M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.17M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.17M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.17M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.17M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.17M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.17M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.17M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.17M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.17M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.17M|   else                                         \
  |  |  |  |  |  | 1021|  1.17M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.17M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.17M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.17M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.17M|      { } \
  |  |  646|  1.17M|    else \
  |  |  647|  1.17M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.17M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.17M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.17M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3390|       |  
 3391|  1.17M|  old_val = g_atomic_int_add (&object->ref_count, 1);
  ------------------
  |  |  167|  1.17M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.17M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  168|  1.17M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.17M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  169|  1.17M|    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
  |  |  ------------------
  |  |  |  Branch (169:13): [Folded, False: 1.17M]
  |  |  ------------------
  |  |  170|  1.17M|    (gint) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST);           \
  |  |  171|  1.17M|  }))
  ------------------
 3392|  1.17M|  object_already_finalized = (old_val <= 0);
 3393|  1.17M|  g_return_val_if_fail (!object_already_finalized, NULL);
  ------------------
  |  |  643|  1.17M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.17M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.17M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.17M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.17M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.17M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.17M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.17M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.17M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.17M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.17M|   else                                         \
  |  |  |  |  |  | 1021|  1.17M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.17M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.17M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.17M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.17M|      { } \
  |  |  646|  1.17M|    else \
  |  |  647|  1.17M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.17M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.17M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.17M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3394|       |
 3395|  1.17M|  if (old_val == 1 && OBJECT_HAS_TOGGLE_REF (object))
  ------------------
  |  |  138|   668k|    ((g_datalist_get_flags (&(object)->qdata) & OBJECT_HAS_TOGGLE_REF_FLAG) != 0)
  |  |  ------------------
  |  |  |  |  136|   668k|#define OBJECT_HAS_TOGGLE_REF_FLAG 0x1
  |  |  ------------------
  |  |  |  Branch (138:5): [True: 0, False: 668k]
  |  |  ------------------
  ------------------
  |  Branch (3395:7): [True: 668k, False: 509k]
  ------------------
 3396|      0|    toggle_refs_notify (object, FALSE);
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 3397|       |
 3398|  1.17M|  TRACE (GOBJECT_OBJECT_REF(object,G_TYPE_FROM_INSTANCE(object),old_val));
 3399|       |
 3400|  1.17M|  return object;
 3401|  1.17M|}
g_object_unref:
 3417|  2.46M|{
 3418|  2.46M|  GObject *object = _object;
 3419|  2.46M|  gint old_ref;
 3420|       |  
 3421|  2.46M|  g_return_if_fail (G_IS_OBJECT (object));
  ------------------
  |  |  630|  2.46M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.46M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.46M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.46M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.46M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.46M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.46M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.46M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.46M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.46M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.46M|   else                                         \
  |  |  |  |  |  | 1021|  2.46M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.46M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.46M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.46M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.46M|      { } \
  |  |  633|  2.46M|    else \
  |  |  634|  2.46M|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  2.46M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.46M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.46M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3422|       |  
 3423|       |  /* here we want to atomically do: if (ref_count>1) { ref_count--; return; } */
 3424|  2.46M| retry_atomic_decrement1:
 3425|  2.46M|  old_ref = g_atomic_int_get (&object->ref_count);
  ------------------
  |  |   96|  2.46M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  2.46M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  2.46M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  2.46M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  2.46M|    gint gaig_temp;                                                          \
  |  |   99|  2.46M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 2.46M]
  |  |  ------------------
  |  |  100|  2.46M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  2.46M|    (gint) gaig_temp;                                                        \
  |  |  102|  2.46M|  }))
  ------------------
 3426|  2.46M|  if (old_ref > 1)
  ------------------
  |  Branch (3426:7): [True: 1.17M, False: 1.29M]
  ------------------
 3427|  1.17M|    {
 3428|       |      /* valid if last 2 refs are owned by this call to unref and the toggle_ref */
 3429|  1.17M|      gboolean has_toggle_ref = OBJECT_HAS_TOGGLE_REF (object);
  ------------------
  |  |  138|  1.17M|    ((g_datalist_get_flags (&(object)->qdata) & OBJECT_HAS_TOGGLE_REF_FLAG) != 0)
  |  |  ------------------
  |  |  |  |  136|  1.17M|#define OBJECT_HAS_TOGGLE_REF_FLAG 0x1
  |  |  ------------------
  ------------------
 3430|       |
 3431|  1.17M|      if (!g_atomic_int_compare_and_exchange ((int *)&object->ref_count, old_ref, old_ref - 1))
  ------------------
  |  |  160|  1.17M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.17M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  161|  1.17M|    gint gaicae_oldval = (oldval);                                           \
  |  |  162|  1.17M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.17M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  163|  1.17M|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  ------------------
  |  |  |  Branch (163:13): [Folded, False: 1.17M]
  |  |  ------------------
  |  |  164|  1.17M|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|  1.17M|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|  1.17M|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  1.17M|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (164:5): [True: 1.17M, False: 0]
  |  |  ------------------
  |  |  165|  1.17M|  }))
  ------------------
  |  Branch (3431:11): [True: 0, False: 1.17M]
  ------------------
 3432|      0|	goto retry_atomic_decrement1;
 3433|       |
 3434|  1.17M|      TRACE (GOBJECT_OBJECT_UNREF(object,G_TYPE_FROM_INSTANCE(object),old_ref));
 3435|       |
 3436|       |      /* if we went from 2->1 we need to notify toggle refs if any */
 3437|  1.17M|      if (old_ref == 2 && has_toggle_ref) /* The last ref being held in this case is owned by the toggle_ref */
  ------------------
  |  Branch (3437:11): [True: 668k, False: 509k]
  |  Branch (3437:27): [True: 0, False: 668k]
  ------------------
 3438|      0|	toggle_refs_notify (object, TRUE);
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3439|  1.17M|    }
 3440|  1.29M|  else
 3441|  1.29M|    {
 3442|  1.29M|      GSList **weak_locations;
 3443|       |
 3444|       |      /* The only way that this object can live at this point is if
 3445|       |       * there are outstanding weak references already established
 3446|       |       * before we got here.
 3447|       |       *
 3448|       |       * If there were not already weak references then no more can be
 3449|       |       * established at this time, because the other thread would have
 3450|       |       * to hold a strong ref in order to call
 3451|       |       * g_object_add_weak_pointer() and then we wouldn't be here.
 3452|       |       */
 3453|  1.29M|      weak_locations = g_datalist_id_get_data (&object->qdata, quark_weak_locations);
 3454|       |
 3455|  1.29M|      if (weak_locations != NULL)
  ------------------
  |  Branch (3455:11): [True: 0, False: 1.29M]
  ------------------
 3456|      0|        {
 3457|      0|          g_rw_lock_writer_lock (&weak_locations_lock);
 3458|       |
 3459|       |          /* It is possible that one of the weak references beat us to
 3460|       |           * the lock. Make sure the refcount is still what we expected
 3461|       |           * it to be.
 3462|       |           */
 3463|      0|          old_ref = g_atomic_int_get (&object->ref_count);
  ------------------
  |  |   96|      0|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|      0|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      0|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|      0|    gint gaig_temp;                                                          \
  |  |   99|      0|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 0]
  |  |  ------------------
  |  |  100|      0|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|      0|    (gint) gaig_temp;                                                        \
  |  |  102|      0|  }))
  ------------------
 3464|      0|          if (old_ref != 1)
  ------------------
  |  Branch (3464:15): [True: 0, False: 0]
  ------------------
 3465|      0|            {
 3466|      0|              g_rw_lock_writer_unlock (&weak_locations_lock);
 3467|      0|              goto retry_atomic_decrement1;
 3468|      0|            }
 3469|       |
 3470|       |          /* We got the lock first, so the object will definitely die
 3471|       |           * now. Clear out all the weak references.
 3472|       |           */
 3473|      0|          while (*weak_locations)
  ------------------
  |  Branch (3473:18): [True: 0, False: 0]
  ------------------
 3474|      0|            {
 3475|      0|              GWeakRef *weak_ref_location = (*weak_locations)->data;
 3476|       |
 3477|      0|              weak_ref_location->priv.p = NULL;
 3478|      0|              *weak_locations = g_slist_delete_link (*weak_locations, *weak_locations);
 3479|      0|            }
 3480|       |
 3481|      0|          g_rw_lock_writer_unlock (&weak_locations_lock);
 3482|      0|        }
 3483|       |
 3484|       |      /* we are about to remove the last reference */
 3485|  1.29M|      TRACE (GOBJECT_OBJECT_DISPOSE(object,G_TYPE_FROM_INSTANCE(object), 1));
 3486|  1.29M|      G_OBJECT_GET_CLASS (object)->dispose (object);
  ------------------
  |  |   91|  1.29M|#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  527|  1.29M|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|  1.29M|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3487|  1.29M|      TRACE (GOBJECT_OBJECT_DISPOSE_END(object,G_TYPE_FROM_INSTANCE(object), 1));
 3488|       |
 3489|       |      /* may have been re-referenced meanwhile */
 3490|  1.29M|    retry_atomic_decrement2:
 3491|  1.29M|      old_ref = g_atomic_int_get ((int *)&object->ref_count);
  ------------------
  |  |   96|  1.29M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  1.29M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.29M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  1.29M|    gint gaig_temp;                                                          \
  |  |   99|  1.29M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 1.29M]
  |  |  ------------------
  |  |  100|  1.29M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  1.29M|    (gint) gaig_temp;                                                        \
  |  |  102|  1.29M|  }))
  ------------------
 3492|  1.29M|      if (old_ref > 1)
  ------------------
  |  Branch (3492:11): [True: 0, False: 1.29M]
  ------------------
 3493|      0|        {
 3494|       |          /* valid if last 2 refs are owned by this call to unref and the toggle_ref */
 3495|      0|          gboolean has_toggle_ref = OBJECT_HAS_TOGGLE_REF (object);
  ------------------
  |  |  138|      0|    ((g_datalist_get_flags (&(object)->qdata) & OBJECT_HAS_TOGGLE_REF_FLAG) != 0)
  |  |  ------------------
  |  |  |  |  136|      0|#define OBJECT_HAS_TOGGLE_REF_FLAG 0x1
  |  |  ------------------
  ------------------
 3496|       |
 3497|      0|          if (!g_atomic_int_compare_and_exchange ((int *)&object->ref_count, old_ref, old_ref - 1))
  ------------------
  |  |  160|      0|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  161|      0|    gint gaicae_oldval = (oldval);                                           \
  |  |  162|      0|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      0|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  163|      0|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  ------------------
  |  |  |  Branch (163:13): [Folded, False: 0]
  |  |  ------------------
  |  |  164|      0|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (164:5): [True: 0, False: 0]
  |  |  ------------------
  |  |  165|      0|  }))
  ------------------
  |  Branch (3497:15): [True: 0, False: 0]
  ------------------
 3498|      0|	    goto retry_atomic_decrement2;
 3499|       |
 3500|      0|	  TRACE (GOBJECT_OBJECT_UNREF(object,G_TYPE_FROM_INSTANCE(object),old_ref));
 3501|       |
 3502|       |          /* if we went from 2->1 we need to notify toggle refs if any */
 3503|      0|          if (old_ref == 2 && has_toggle_ref) /* The last ref being held in this case is owned by the toggle_ref */
  ------------------
  |  Branch (3503:15): [True: 0, False: 0]
  |  Branch (3503:31): [True: 0, False: 0]
  ------------------
 3504|      0|	    toggle_refs_notify (object, TRUE);
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3505|       |
 3506|      0|	  return;
 3507|      0|	}
 3508|       |
 3509|       |      /* we are still in the process of taking away the last ref */
 3510|  1.29M|      g_datalist_id_set_data (&object->qdata, quark_closure_array, NULL);
  ------------------
  |  |   99|  1.29M|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
 3511|  1.29M|      g_signal_handlers_destroy (object);
 3512|  1.29M|      g_datalist_id_set_data (&object->qdata, quark_weak_refs, NULL);
  ------------------
  |  |   99|  1.29M|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
 3513|       |      
 3514|       |      /* decrement the last reference */
 3515|  1.29M|      old_ref = g_atomic_int_add (&object->ref_count, -1);
  ------------------
  |  |  167|  1.29M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  168|  1.29M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.29M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  169|  1.29M|    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
  |  |  ------------------
  |  |  |  Branch (169:13): [Folded, False: 1.29M]
  |  |  ------------------
  |  |  170|  1.29M|    (gint) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST);           \
  |  |  171|  1.29M|  }))
  ------------------
 3516|  1.29M|      g_return_if_fail (old_ref > 0);
  ------------------
  |  |  630|  1.29M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.29M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.29M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.29M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.29M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.29M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.29M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.29M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.29M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.29M|   else                                         \
  |  |  |  |  |  | 1021|  1.29M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.29M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.29M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.29M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.29M|      { } \
  |  |  633|  1.29M|    else \
  |  |  634|  1.29M|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  1.29M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.29M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.29M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3517|       |
 3518|  1.29M|      TRACE (GOBJECT_OBJECT_UNREF(object,G_TYPE_FROM_INSTANCE(object),old_ref));
 3519|       |
 3520|       |      /* may have been re-referenced meanwhile */
 3521|  1.29M|      if (G_LIKELY (old_ref == 1))
  ------------------
  |  | 1024|  1.29M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  1.29M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.29M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.29M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 1.29M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.29M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.29M|   else                                         \
  |  |  |  | 1021|  1.29M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.29M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.29M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 1.29M, False: 0]
  |  |  ------------------
  ------------------
 3522|  1.29M|	{
 3523|  1.29M|	  TRACE (GOBJECT_OBJECT_FINALIZE(object,G_TYPE_FROM_INSTANCE(object)));
 3524|  1.29M|          G_OBJECT_GET_CLASS (object)->finalize (object);
  ------------------
  |  |   91|  1.29M|#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  527|  1.29M|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|  1.29M|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3525|       |
 3526|  1.29M|	  TRACE (GOBJECT_OBJECT_FINALIZE_END(object,G_TYPE_FROM_INSTANCE(object)));
 3527|       |
 3528|  1.29M|          GOBJECT_IF_DEBUG (OBJECTS,
  ------------------
  |  |   37|  1.29M|#define GOBJECT_IF_DEBUG(debug_type, code_block) \
  |  |  ------------------
  |  |  |  |  874|  1.29M|#define G_STMT_START  do
  |  |  ------------------
  |  |   38|  1.29M|G_STMT_START { \
  |  |   39|  1.29M|    if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type) \
  |  |  ------------------
  |  |  |  Branch (39:9): [True: 0, False: 1.29M]
  |  |  ------------------
  |  |   40|  1.29M|      { code_block; } \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   41|  1.29M|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.29M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.29M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3529|  1.29M|	    {
 3530|  1.29M|              gboolean was_present;
 3531|       |
 3532|       |              /* catch objects not chaining finalize handlers */
 3533|  1.29M|              G_LOCK (debug_objects);
 3534|  1.29M|              was_present = g_hash_table_remove (debug_objects_ht, object);
 3535|  1.29M|              G_UNLOCK (debug_objects);
 3536|       |
 3537|  1.29M|              if (was_present)
 3538|  1.29M|                g_critical ("Object %p of type %s not finalized correctly.",
 3539|  1.29M|                            object, G_OBJECT_TYPE_NAME (object));
 3540|  1.29M|	    });
 3541|  1.29M|          g_type_free_instance ((GTypeInstance*) object);
 3542|  1.29M|	}
 3543|  1.29M|    }
 3544|  2.46M|}
g_value_get_object:
 4164|   434k|{
 4165|   434k|  g_return_val_if_fail (G_VALUE_HOLDS_OBJECT (value), NULL);
  ------------------
  |  |  643|   434k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   434k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   434k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   434k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   434k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   434k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   434k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.17M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 434k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 434k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 434k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   434k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   434k|   else                                         \
  |  |  |  |  |  | 1021|   434k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   434k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   434k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 434k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   434k|      { } \
  |  |  646|   434k|    else \
  |  |  647|   434k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   434k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   434k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 434k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4166|       |  
 4167|   434k|  return value->data[0].v_pointer;
 4168|   434k|}
gobject.c:g_object_base_class_init:
  462|     14|{
  463|     14|  GObjectClass *pclass = g_type_class_peek_parent (class);
  464|       |
  465|       |  /* Don't inherit HAS_DERIVED_CLASS flag from parent class */
  466|     14|  class->flags &= ~CLASS_HAS_DERIVED_CLASS_FLAG;
  ------------------
  |  |  149|     14|#define CLASS_HAS_DERIVED_CLASS_FLAG 0x2
  ------------------
  467|       |
  468|     14|  if (pclass)
  ------------------
  |  Branch (468:7): [True: 13, False: 1]
  ------------------
  469|     13|    pclass->flags |= CLASS_HAS_DERIVED_CLASS_FLAG;
  ------------------
  |  |  149|     13|#define CLASS_HAS_DERIVED_CLASS_FLAG 0x2
  ------------------
  470|       |
  471|       |  /* reset instance specific fields and methods that don't get inherited */
  472|     14|  class->construct_properties = pclass ? g_slist_copy (pclass->construct_properties) : NULL;
  ------------------
  |  Branch (472:33): [True: 13, False: 1]
  ------------------
  473|     14|  class->get_property = NULL;
  474|       |  class->set_property = NULL;
  475|     14|}
gobject.c:g_object_do_class_init:
  500|      1|{
  501|       |  /* read the comment about typedef struct CArray; on why not to change this quark */
  502|      1|  quark_closure_array = g_quark_from_static_string ("GObject-closure-array");
  503|       |
  504|      1|  quark_weak_refs = g_quark_from_static_string ("GObject-weak-references");
  505|      1|  quark_weak_locations = g_quark_from_static_string ("GObject-weak-locations");
  506|      1|  quark_toggle_refs = g_quark_from_static_string ("GObject-toggle-references");
  507|      1|  quark_notify_queue = g_quark_from_static_string ("GObject-notify-queue");
  508|      1|  quark_in_construction = g_quark_from_static_string ("GObject-in-construction");
  509|      1|  pspec_pool = g_param_spec_pool_new (TRUE);
  ------------------
  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  510|       |
  511|      1|  class->constructor = g_object_constructor;
  512|      1|  class->constructed = g_object_constructed;
  513|      1|  class->set_property = g_object_do_set_property;
  514|      1|  class->get_property = g_object_do_get_property;
  515|      1|  class->dispose = g_object_real_dispose;
  516|      1|  class->finalize = g_object_finalize;
  517|      1|  class->dispatch_properties_changed = g_object_dispatch_properties_changed;
  518|      1|  class->notify = NULL;
  519|       |
  520|       |  /**
  521|       |   * GObject::notify:
  522|       |   * @gobject: the object which received the signal.
  523|       |   * @pspec: the #GParamSpec of the property which changed.
  524|       |   *
  525|       |   * The notify signal is emitted on an object when one of its properties has
  526|       |   * its value set through g_object_set_property(), g_object_set(), et al.
  527|       |   *
  528|       |   * Note that getting this signal doesn’t itself guarantee that the value of
  529|       |   * the property has actually changed. When it is emitted is determined by the
  530|       |   * derived GObject class. If the implementor did not create the property with
  531|       |   * %G_PARAM_EXPLICIT_NOTIFY, then any call to g_object_set_property() results
  532|       |   * in ::notify being emitted, even if the new value is the same as the old.
  533|       |   * If they did pass %G_PARAM_EXPLICIT_NOTIFY, then this signal is emitted only
  534|       |   * when they explicitly call g_object_notify() or g_object_notify_by_pspec(),
  535|       |   * and common practice is to do that only when the value has actually changed.
  536|       |   *
  537|       |   * This signal is typically used to obtain change notification for a
  538|       |   * single property, by specifying the property name as a detail in the
  539|       |   * g_signal_connect() call, like this:
  540|       |   * |[<!-- language="C" --> 
  541|       |   * g_signal_connect (text_view->buffer, "notify::paste-target-list",
  542|       |   *                   G_CALLBACK (gtk_text_view_target_list_notify),
  543|       |   *                   text_view)
  544|       |   * ]|
  545|       |   * It is important to note that you must use
  546|       |   * [canonical parameter names][canonical-parameter-names] as
  547|       |   * detail strings for the notify signal.
  548|       |   */
  549|      1|  gobject_signals[NOTIFY] =
  550|      1|    g_signal_new (g_intern_static_string ("notify"),
  551|      1|		  G_TYPE_FROM_CLASS (class),
  ------------------
  |  |  613|      1|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  ------------------
  552|      1|		  G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE | G_SIGNAL_DETAILED | G_SIGNAL_NO_HOOKS | G_SIGNAL_ACTION,
  553|      1|		  G_STRUCT_OFFSET (GObjectClass, notify),
  ------------------
  |  |  853|      1|      ((glong) offsetof (struct_type, member))
  ------------------
  554|      1|		  NULL, NULL,
  555|      1|		  NULL,
  556|      1|		  G_TYPE_NONE,
  ------------------
  |  |   62|      1|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  557|      1|		  1, G_TYPE_PARAM);
  ------------------
  |  |  172|      1|#define G_TYPE_PARAM			G_TYPE_MAKE_FUNDAMENTAL (19)
  |  |  ------------------
  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  558|       |
  559|       |  /* Install a check function that we'll use to verify that classes that
  560|       |   * implement an interface implement all properties for that interface
  561|       |   */
  562|       |  g_type_add_interface_check (NULL, object_interface_check_properties);
  563|      1|}
gobject.c:g_object_constructed:
 2339|   430k|{
 2340|       |  /* empty default impl to allow unconditional upchaining */
 2341|   430k|}
gobject.c:g_object_real_dispose:
 1171|  1.29M|{
 1172|  1.29M|  g_signal_handlers_destroy (object);
 1173|  1.29M|  g_datalist_id_set_data (&object->qdata, quark_closure_array, NULL);
  ------------------
  |  |   99|  1.29M|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
 1174|       |  g_datalist_id_set_data (&object->qdata, quark_weak_refs, NULL);
  ------------------
  |  |   99|  1.29M|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
 1175|  1.29M|}
gobject.c:g_object_finalize:
 1179|  1.29M|{
 1180|  1.29M|  if (object_in_construction (object))
  ------------------
  |  Branch (1180:7): [True: 0, False: 1.29M]
  ------------------
 1181|      0|    {
 1182|      0|      g_critical ("object %s %p finalized while still in-construction",
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1183|      0|                  G_OBJECT_TYPE_NAME (object), object);
 1184|      0|    }
 1185|       |
 1186|  1.29M|  g_datalist_clear (&object->qdata);
 1187|       |  
 1188|  1.29M|  GOBJECT_IF_DEBUG (OBJECTS,
  ------------------
  |  |   37|  1.29M|#define GOBJECT_IF_DEBUG(debug_type, code_block) \
  |  |  ------------------
  |  |  |  |  874|  1.29M|#define G_STMT_START  do
  |  |  ------------------
  |  |   38|  1.29M|G_STMT_START { \
  |  |   39|  1.29M|    if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type) \
  |  |  ------------------
  |  |  |  Branch (39:9): [True: 0, False: 1.29M]
  |  |  ------------------
  |  |   40|  1.29M|      { code_block; } \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 0]
  |  |  |  Branch (40:9): [True: 0, False: 0]
  |  |  |  Branch (40:9): [Folded, False: 0]
  |  |  ------------------
  |  |   41|  1.29M|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.29M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.29M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1189|  1.29M|    {
 1190|  1.29M|      G_LOCK (debug_objects);
 1191|  1.29M|      g_assert (g_hash_table_contains (debug_objects_ht, object));
 1192|  1.29M|      g_hash_table_remove (debug_objects_ht, object);
 1193|  1.29M|      debug_objects_count--;
 1194|  1.29M|      G_UNLOCK (debug_objects);
 1195|  1.29M|    });
 1196|  1.29M|}
gobject.c:object_in_construction:
 1085|  1.29M|{
 1086|  1.29M|#ifdef HAVE_OPTIONAL_FLAGS
 1087|  1.29M|  return (object_get_optional_flags (object) & OPTIONAL_FLAG_IN_CONSTRUCTION) != 0;
  ------------------
  |  |  165|  1.29M|#define OPTIONAL_FLAG_IN_CONSTRUCTION 1<<0
  ------------------
 1088|       |#else
 1089|       |  return g_datalist_id_get_data (&object->qdata, quark_in_construction) != NULL;
 1090|       |#endif
 1091|  1.29M|}
gobject.c:g_object_dispatch_properties_changed:
 1202|   432k|{
 1203|   432k|  guint i;
 1204|       |
 1205|   870k|  for (i = 0; i < n_pspecs; i++)
  ------------------
  |  Branch (1205:15): [True: 437k, False: 432k]
  ------------------
 1206|   437k|    g_signal_emit (object, gobject_signals[NOTIFY], g_param_spec_get_name_quark (pspecs[i]), pspecs[i]);
 1207|   432k|}
gobject.c:object_interface_check_properties:
 1583|     11|{
 1584|     11|  GTypeInterface *iface_class = g_iface;
 1585|     11|  GObjectClass *class;
 1586|     11|  GType iface_type = iface_class->g_type;
 1587|     11|  GParamSpec **pspecs;
 1588|     11|  guint n;
 1589|       |
 1590|     11|  class = g_type_class_ref (iface_class->g_instance_type);
 1591|       |
 1592|     11|  if (class == NULL)
  ------------------
  |  Branch (1592:7): [True: 0, False: 11]
  ------------------
 1593|      0|    return;
 1594|       |
 1595|     11|  if (!G_IS_OBJECT_CLASS (class))
  ------------------
  |  |   82|     11|#define G_IS_OBJECT_CLASS(class)    (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_OBJECT))
  |  |  ------------------
  |  |  |  |  566|     11|#define G_TYPE_CHECK_CLASS_TYPE(g_class, g_type)                (_G_TYPE_CCT ((g_class), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2323|     11|#  define _G_TYPE_CCT(cp, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2324|     11|  GTypeClass *__class = (GTypeClass*) cp; GType __t = gt; gboolean __r; \
  |  |  |  |  |  | 2325|     11|  if (!__class) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2325:7): [True: 0, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2326|     11|    __r = FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2327|     11|  else if (__class->g_type == __t) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2327:12): [True: 0, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2328|     11|    __r = TRUE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2329|     11|  else \
  |  |  |  |  |  | 2330|     11|    __r = g_type_check_class_is_a (__class, __t); \
  |  |  |  |  |  | 2331|     11|  __r; \
  |  |  |  |  |  | 2332|     11|}))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1595:7): [True: 0, False: 11]
  ------------------
 1596|      0|    goto out;
 1597|       |
 1598|     11|  pspecs = g_param_spec_pool_list (pspec_pool, iface_type, &n);
 1599|       |
 1600|     11|  while (n--)
  ------------------
  |  Branch (1600:10): [True: 0, False: 11]
  ------------------
 1601|      0|    {
 1602|      0|      GParamSpec *class_pspec = g_param_spec_pool_lookup (pspec_pool,
 1603|      0|							  pspecs[n]->name,
 1604|      0|							  G_OBJECT_CLASS_TYPE (class),
  ------------------
  |  |  119|      0|#define G_OBJECT_CLASS_TYPE(class)  (G_TYPE_FROM_CLASS (class))
  |  |  ------------------
  |  |  |  |  613|      0|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
 1605|      0|							  TRUE);
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1606|       |
 1607|      0|      if (!class_pspec)
  ------------------
  |  Branch (1607:11): [True: 0, False: 0]
  ------------------
 1608|      0|	{
 1609|      0|	  g_critical ("Object class %s doesn't implement property "
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1610|      0|		      "'%s' from interface '%s'",
 1611|      0|		      g_type_name (G_OBJECT_CLASS_TYPE (class)),
 1612|      0|		      pspecs[n]->name,
 1613|      0|		      g_type_name (iface_type));
 1614|       |
 1615|      0|	  continue;
 1616|      0|	}
 1617|       |
 1618|       |      /* We do a number of checks on the properties of an interface to
 1619|       |       * make sure that all classes implementing the interface are
 1620|       |       * overriding the properties correctly.
 1621|       |       *
 1622|       |       * We do the checks in order of importance so that we can give
 1623|       |       * more useful error messages first.
 1624|       |       *
 1625|       |       * First, we check that the implementation doesn't remove the
 1626|       |       * basic functionality (readability, writability) advertised by
 1627|       |       * the interface.  Next, we check that it doesn't introduce
 1628|       |       * additional restrictions (such as construct-only).  Finally, we
 1629|       |       * make sure the types are compatible.
 1630|       |       */
 1631|       |
 1632|      0|#define SUBSET(a,b,mask) (((a) & ~(b) & (mask)) == 0)
 1633|       |      /* If the property on the interface is readable then the
 1634|       |       * implementation must be readable.  If the interface is writable
 1635|       |       * then the implementation must be writable.
 1636|       |       */
 1637|      0|      if (!SUBSET (pspecs[n]->flags, class_pspec->flags, G_PARAM_READABLE | G_PARAM_WRITABLE))
  ------------------
  |  | 1632|      0|#define SUBSET(a,b,mask) (((a) & ~(b) & (mask)) == 0)
  ------------------
  |  Branch (1637:11): [True: 0, False: 0]
  ------------------
 1638|      0|        {
 1639|      0|          g_critical ("Flags for property '%s' on class '%s' remove functionality compared with the "
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1640|      0|                      "property on interface '%s'\n", pspecs[n]->name,
 1641|      0|                      g_type_name (G_OBJECT_CLASS_TYPE (class)), g_type_name (iface_type));
 1642|      0|          continue;
 1643|      0|        }
 1644|       |
 1645|       |      /* If the property on the interface is writable then we need to
 1646|       |       * make sure the implementation doesn't introduce new restrictions
 1647|       |       * on that writability (ie: construct-only).
 1648|       |       *
 1649|       |       * If the interface was not writable to begin with then we don't
 1650|       |       * really have any problems here because "writable at construct
 1651|       |       * time only" is still more permissive than "read only".
 1652|       |       */
 1653|      0|      if (pspecs[n]->flags & G_PARAM_WRITABLE)
  ------------------
  |  Branch (1653:11): [True: 0, False: 0]
  ------------------
 1654|      0|        {
 1655|      0|          if (!SUBSET (class_pspec->flags, pspecs[n]->flags, G_PARAM_CONSTRUCT_ONLY))
  ------------------
  |  | 1632|      0|#define SUBSET(a,b,mask) (((a) & ~(b) & (mask)) == 0)
  ------------------
  |  Branch (1655:15): [True: 0, False: 0]
  ------------------
 1656|      0|            {
 1657|      0|              g_critical ("Flags for property '%s' on class '%s' introduce additional restrictions on "
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1658|      0|                          "writability compared with the property on interface '%s'\n", pspecs[n]->name,
 1659|      0|                          g_type_name (G_OBJECT_CLASS_TYPE (class)), g_type_name (iface_type));
 1660|      0|              continue;
 1661|      0|            }
 1662|      0|        }
 1663|      0|#undef SUBSET
 1664|       |
 1665|       |      /* If the property on the interface is readable then we are
 1666|       |       * effectively advertising that reading the property will return a
 1667|       |       * value of a specific type.  All implementations of the interface
 1668|       |       * need to return items of this type -- but may be more
 1669|       |       * restrictive.  For example, it is legal to have:
 1670|       |       *
 1671|       |       *   GtkWidget *get_item();
 1672|       |       *
 1673|       |       * that is implemented by a function that always returns a
 1674|       |       * GtkEntry.  In short: readability implies that the
 1675|       |       * implementation  value type must be equal or more restrictive.
 1676|       |       *
 1677|       |       * Similarly, if the property on the interface is writable then
 1678|       |       * must be able to accept the property being set to any value of
 1679|       |       * that type, including subclasses.  In this case, we may also be
 1680|       |       * less restrictive.  For example, it is legal to have:
 1681|       |       *
 1682|       |       *   set_item (GtkEntry *);
 1683|       |       *
 1684|       |       * that is implemented by a function that will actually work with
 1685|       |       * any GtkWidget.  In short: writability implies that the
 1686|       |       * implementation value type must be equal or less restrictive.
 1687|       |       *
 1688|       |       * In the case that the property is both readable and writable
 1689|       |       * then the only way that both of the above can be satisfied is
 1690|       |       * with a type that is exactly equal.
 1691|       |       */
 1692|      0|      switch (pspecs[n]->flags & (G_PARAM_READABLE | G_PARAM_WRITABLE))
 1693|      0|        {
 1694|      0|        case G_PARAM_READABLE | G_PARAM_WRITABLE:
  ------------------
  |  Branch (1694:9): [True: 0, False: 0]
  ------------------
 1695|       |          /* class pspec value type must have exact equality with interface */
 1696|      0|          if (pspecs[n]->value_type != class_pspec->value_type)
  ------------------
  |  Branch (1696:15): [True: 0, False: 0]
  ------------------
 1697|      0|            g_critical ("Read/writable property '%s' on class '%s' has type '%s' which is not exactly equal to the "
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1698|      0|                        "type '%s' of the property on the interface '%s'\n", pspecs[n]->name,
 1699|      0|                        g_type_name (G_OBJECT_CLASS_TYPE (class)), g_type_name (G_PARAM_SPEC_VALUE_TYPE (class_pspec)),
 1700|      0|                        g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspecs[n])), g_type_name (iface_type));
 1701|      0|          break;
 1702|       |
 1703|      0|        case G_PARAM_READABLE:
  ------------------
  |  Branch (1703:9): [True: 0, False: 0]
  ------------------
 1704|       |          /* class pspec value type equal or more restrictive than interface */
 1705|      0|          if (!g_type_is_a (class_pspec->value_type, pspecs[n]->value_type))
  ------------------
  |  Branch (1705:15): [True: 0, False: 0]
  ------------------
 1706|      0|            g_critical ("Read-only property '%s' on class '%s' has type '%s' which is not equal to or more "
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1707|      0|                        "restrictive than the type '%s' of the property on the interface '%s'\n", pspecs[n]->name,
 1708|      0|                        g_type_name (G_OBJECT_CLASS_TYPE (class)), g_type_name (G_PARAM_SPEC_VALUE_TYPE (class_pspec)),
 1709|      0|                        g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspecs[n])), g_type_name (iface_type));
 1710|      0|          break;
 1711|       |
 1712|      0|        case G_PARAM_WRITABLE:
  ------------------
  |  Branch (1712:9): [True: 0, False: 0]
  ------------------
 1713|       |          /* class pspec value type equal or less restrictive than interface */
 1714|      0|          if (!g_type_is_a (pspecs[n]->value_type, class_pspec->value_type))
  ------------------
  |  Branch (1714:15): [True: 0, False: 0]
  ------------------
 1715|      0|            g_critical ("Write-only property '%s' on class '%s' has type '%s' which is not equal to or less "
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1716|      0|                        "restrictive than the type '%s' of the property on the interface '%s' \n", pspecs[n]->name,
 1717|      0|                        g_type_name (G_OBJECT_CLASS_TYPE (class)), g_type_name (G_PARAM_SPEC_VALUE_TYPE (class_pspec)),
 1718|      0|                        g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspecs[n])), g_type_name (iface_type));
 1719|      0|          break;
 1720|       |
 1721|      0|        default:
  ------------------
  |  Branch (1721:9): [True: 0, False: 0]
  ------------------
 1722|      0|          g_assert_not_reached ();
  ------------------
  |  |  230|      0|#define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |               #define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |               #define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1723|      0|        }
 1724|      0|    }
 1725|       |
 1726|     11|  g_free (pspecs);
 1727|       |
 1728|     11| out:
 1729|     11|  g_type_class_unref (class);
 1730|     11|}
gobject.c:validate_and_install_class_property:
  607|     35|{
  608|     35|  if (!validate_pspec_to_install (pspec))
  ------------------
  |  Branch (608:7): [True: 0, False: 35]
  ------------------
  609|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  610|       |
  611|     35|  if (pspec->flags & G_PARAM_WRITABLE)
  ------------------
  |  Branch (611:7): [True: 34, False: 1]
  ------------------
  612|     35|    g_return_val_if_fail (class->set_property != NULL, FALSE);
  ------------------
  |  |  643|     34|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     34|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     34|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     34|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     34| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     34|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     34|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     34|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 34, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     34|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     34|   else                                         \
  |  |  |  |  |  | 1021|     34|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     34|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     34|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 34, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     34|      { } \
  |  |  646|     34|    else \
  |  |  647|     34|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     34|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     34|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 34]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  613|     35|  if (pspec->flags & G_PARAM_READABLE)
  ------------------
  |  Branch (613:7): [True: 35, False: 0]
  ------------------
  614|     35|    g_return_val_if_fail (class->get_property != NULL, FALSE);
  ------------------
  |  |  643|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     35|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     35|      { } \
  |  |  646|     35|    else \
  |  |  647|     35|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  615|       |
  616|     35|  class->flags |= CLASS_HAS_PROPS_FLAG;
  ------------------
  |  |  141|     35|#define CLASS_HAS_PROPS_FLAG 0x1
  ------------------
  617|     35|  if (install_property_internal (oclass_type, property_id, pspec))
  ------------------
  |  Branch (617:7): [True: 35, False: 0]
  ------------------
  618|     35|    {
  619|     35|      if (pspec->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY))
  ------------------
  |  Branch (619:11): [True: 7, False: 28]
  ------------------
  620|      7|        class->construct_properties = g_slist_append (class->construct_properties, pspec);
  621|       |
  622|       |      /* for property overrides of construct properties, we have to get rid
  623|       |       * of the overridden inherited construct property
  624|       |       */
  625|     35|      pspec = g_param_spec_pool_lookup (pspec_pool, pspec->name, parent_type, TRUE);
  ------------------
  |  |  818|     35|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     35|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  626|     35|      if (pspec && pspec->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY))
  ------------------
  |  Branch (626:11): [True: 1, False: 34]
  |  Branch (626:20): [True: 1, False: 0]
  ------------------
  627|      1|        class->construct_properties = g_slist_remove (class->construct_properties, pspec);
  628|       |
  629|     35|      return TRUE;
  ------------------
  |  |  818|     35|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     35|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  630|     35|    }
  631|      0|  else
  632|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  633|     35|}
gobject.c:validate_pspec_to_install:
  586|     35|{
  587|     35|  g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), FALSE);
  ------------------
  |  |  643|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     35|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     35|      { } \
  |  |  646|     35|    else \
  |  |  647|     35|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  588|     35|  g_return_val_if_fail (PARAM_SPEC_PARAM_ID (pspec) == 0, FALSE);	/* paranoid */
  ------------------
  |  |  643|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     35|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     35|      { } \
  |  |  646|     35|    else \
  |  |  647|     35|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  589|       |
  590|     35|  g_return_val_if_fail (pspec->flags & (G_PARAM_READABLE | G_PARAM_WRITABLE), FALSE);
  ------------------
  |  |  643|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     35|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     35|      { } \
  |  |  646|     35|    else \
  |  |  647|     35|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  591|       |
  592|     35|  if (pspec->flags & G_PARAM_CONSTRUCT)
  ------------------
  |  Branch (592:7): [True: 6, False: 29]
  ------------------
  593|     35|    g_return_val_if_fail ((pspec->flags & G_PARAM_CONSTRUCT_ONLY) == 0, FALSE);
  ------------------
  |  |  643|      6|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      6|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      6|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      6|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      6| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      6|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      6|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      6|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 6, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      6|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      6|   else                                         \
  |  |  |  |  |  | 1021|      6|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      6|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      6|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      6|      { } \
  |  |  646|      6|    else \
  |  |  647|      6|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      6|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      6|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  594|       |
  595|     35|  if (pspec->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY))
  ------------------
  |  Branch (595:7): [True: 7, False: 28]
  ------------------
  596|     35|    g_return_val_if_fail (pspec->flags & G_PARAM_WRITABLE, FALSE);
  ------------------
  |  |  643|      7|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      7|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      7|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      7|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      7| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      7|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      7|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      7|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 7, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      7|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      7|   else                                         \
  |  |  |  |  |  | 1021|      7|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      7|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      7|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 7, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      7|      { } \
  |  |  646|      7|    else \
  |  |  647|      7|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      7|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      7|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  597|       |
  598|     35|  return TRUE;
  ------------------
  |  |  818|     35|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     35|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  599|     35|}
gobject.c:install_property_internal:
  569|     35|{
  570|     35|  if (g_param_spec_pool_lookup (pspec_pool, pspec->name, g_type, FALSE))
  ------------------
  |  |  814|     35|#define	FALSE	(0)
  ------------------
  |  Branch (570:7): [True: 0, False: 35]
  ------------------
  571|      0|    {
  572|      0|      g_warning ("When installing property: type '%s' already has a property named '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  573|      0|		 g_type_name (g_type),
  574|      0|		 pspec->name);
  575|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  576|      0|    }
  577|       |
  578|     35|  g_param_spec_ref_sink (pspec);
  579|     35|  PARAM_SPEC_SET_PARAM_ID (pspec, property_id);
  ------------------
  |  |  134|     35|#define	PARAM_SPEC_SET_PARAM_ID(pspec, id)	((pspec)->param_id = (id))
  ------------------
  580|     35|  g_param_spec_pool_insert (pspec_pool, pspec, g_type);
  581|     35|  return TRUE;
  ------------------
  |  |  818|     35|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     35|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  582|     35|}
gobject.c:object_get_optional_flags:
 1036|  1.72M|{
 1037|  1.72M|#ifdef HAVE_OPTIONAL_FLAGS
 1038|  1.72M|  GObjectReal *real = (GObjectReal *)object;
 1039|  1.72M|  return (guint)g_atomic_int_get (&real->optional_flags);
  ------------------
  |  |   96|  1.72M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.72M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  1.72M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.72M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  1.72M|    gint gaig_temp;                                                          \
  |  |   99|  1.72M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 1.72M]
  |  |  ------------------
  |  |  100|  1.72M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  1.72M|    (gint) gaig_temp;                                                        \
  |  |  102|  1.72M|  }))
  ------------------
 1040|       |#else
 1041|       |  return 0;
 1042|       |#endif
 1043|  1.72M|}
gobject.c:object_set_optional_flags:
 1048|  3.32k|{
 1049|  3.32k|#ifdef HAVE_OPTIONAL_FLAGS
 1050|  3.32k|  GObjectReal *real = (GObjectReal *)object;
 1051|  3.32k|  g_atomic_int_or (&real->optional_flags, flags);
  ------------------
  |  |  179|  3.32k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  3.32k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  180|  3.32k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  3.32k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  181|  3.32k|    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
  |  |  ------------------
  |  |  |  Branch (181:13): [Folded, False: 3.32k]
  |  |  ------------------
  |  |  182|  3.32k|    (guint) __atomic_fetch_or ((atomic), (val), __ATOMIC_SEQ_CST);           \
  |  |  183|  3.32k|  }))
  ------------------
 1052|  3.32k|#endif
 1053|  3.32k|}
gobject.c:g_object_init:
 1116|  1.29M|{
 1117|  1.29M|  object->ref_count = 1;
 1118|  1.29M|  object->qdata = NULL;
 1119|       |
 1120|  1.29M|  if (CLASS_HAS_PROPS (class))
  ------------------
  |  |  143|  1.29M|    ((class)->flags & CLASS_HAS_PROPS_FLAG)
  |  |  ------------------
  |  |  |  |  141|  1.29M|#define CLASS_HAS_PROPS_FLAG 0x1
  |  |  ------------------
  |  |  |  Branch (143:5): [True: 431k, False: 859k]
  |  |  ------------------
  ------------------
 1121|   431k|    {
 1122|       |      /* freeze object's notification queue, g_object_newv() preserves pairedness */
 1123|   431k|      g_object_notify_queue_freeze (object, FALSE);
  ------------------
  |  |  814|   431k|#define	FALSE	(0)
  ------------------
 1124|   431k|    }
 1125|       |
 1126|  1.29M|  if (CLASS_HAS_CUSTOM_CONSTRUCTOR (class))
  ------------------
  |  |  145|  1.29M|    ((class)->constructor != g_object_constructor)
  |  |  ------------------
  |  |  |  Branch (145:5): [True: 0, False: 1.29M]
  |  |  ------------------
  ------------------
 1127|      0|    {
 1128|       |      /* mark object in-construction for notify_queue_thaw() and to allow construct-only properties */
 1129|      0|      set_object_in_construction (object);
 1130|      0|    }
 1131|       |
 1132|  1.29M|  GOBJECT_IF_DEBUG (OBJECTS,
  ------------------
  |  |   37|  1.29M|#define GOBJECT_IF_DEBUG(debug_type, code_block) \
  |  |  ------------------
  |  |  |  |  874|  1.29M|#define G_STMT_START  do
  |  |  ------------------
  |  |   38|  1.29M|G_STMT_START { \
  |  |   39|  1.29M|    if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type) \
  |  |  ------------------
  |  |  |  Branch (39:9): [True: 0, False: 1.29M]
  |  |  ------------------
  |  |   40|  1.29M|      { code_block; } \
  |  |   41|  1.29M|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.29M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.29M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1133|  1.29M|    {
 1134|  1.29M|      G_LOCK (debug_objects);
 1135|  1.29M|      debug_objects_count++;
 1136|  1.29M|      g_hash_table_add (debug_objects_ht, object);
 1137|  1.29M|      G_UNLOCK (debug_objects);
 1138|  1.29M|    });
 1139|  1.29M|}
gobject.c:g_object_notify_queue_freeze:
  274|   434k|{
  275|   434k|  GObjectNotifyQueue *nqueue;
  276|       |
  277|   434k|  G_LOCK(notify_lock);
  ------------------
  |  |  135|   434k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   434k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  278|   434k|  nqueue = g_datalist_id_get_data (&object->qdata, quark_notify_queue);
  279|   434k|  if (!nqueue)
  ------------------
  |  Branch (279:7): [True: 432k, False: 1.66k]
  ------------------
  280|   432k|    {
  281|   432k|      if (conditional)
  ------------------
  |  Branch (281:11): [True: 1.37k, False: 431k]
  ------------------
  282|  1.37k|        {
  283|  1.37k|          G_UNLOCK(notify_lock);
  ------------------
  |  |  136|  1.37k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  1.37k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  284|  1.37k|          return NULL;
  285|  1.37k|        }
  286|       |
  287|   431k|      nqueue = g_slice_new0 (GObjectNotifyQueue);
  ------------------
  |  |   52|   431k|  (type *) (G_GNUC_EXTENSION ({                                 \
  |  |  ------------------
  |  |  |  |   54|   431k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   53|   431k|    gsize __s = sizeof (type);                                  \
  |  |   54|   431k|    gpointer __p;                                               \
  |  |   55|   431k|    __p = g_slice_alloc (__s);                                  \
  |  |   56|   431k|    memset (__p, 0, __s);                                       \
  |  |   57|   431k|    __p;                                                        \
  |  |   58|   431k|  }))
  ------------------
  288|   431k|      g_datalist_id_set_data_full (&object->qdata, quark_notify_queue,
  289|   431k|                                   nqueue, g_object_notify_queue_free);
  290|   431k|    }
  291|       |
  292|   433k|  if (nqueue->freeze_count >= 65535)
  ------------------
  |  Branch (292:7): [True: 0, False: 433k]
  ------------------
  293|      0|    g_critical("Free queue for %s (%p) is larger than 65535,"
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
  294|   433k|               " called g_object_freeze_notify() too often."
  295|   433k|               " Forgot to call g_object_thaw_notify() or infinite loop",
  296|   433k|               G_OBJECT_TYPE_NAME (object), object);
  297|   433k|  else
  298|   433k|    nqueue->freeze_count++;
  299|   433k|  G_UNLOCK(notify_lock);
  ------------------
  |  |  136|   433k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   433k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  300|       |
  301|   433k|  return nqueue;
  302|   434k|}
gobject.c:g_object_notify_queue_free:
  264|   431k|{
  265|   431k|  GObjectNotifyQueue *nqueue = data;
  266|       |
  267|   431k|  g_slist_free (nqueue->pspecs);
  268|   431k|  g_slice_free (GObjectNotifyQueue, nqueue);
  ------------------
  |  |   79|   431k|#define g_slice_free(type, mem)                                 \
  |  |  ------------------
  |  |  |  |  874|   431k|#define G_STMT_START  do
  |  |  ------------------
  |  |   80|   431k|G_STMT_START {                                                  \
  |  |   81|   431k|  if (1) g_slice_free1 (sizeof (type), (mem));			\
  |  |  ------------------
  |  |  |  Branch (81:7): [True: 431k, Folded]
  |  |  ------------------
  |  |   82|   431k|  else   (void) ((type*) 0 == (mem)); 				\
  |  |   83|   431k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   431k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 431k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  269|   431k|}
gobject.c:g_object_notify_by_spec_internal:
 1279|  3.03k|{
 1280|  3.03k|  GParamSpec *notify_pspec;
 1281|       |
 1282|  3.03k|  notify_pspec = get_notify_pspec (pspec);
 1283|       |
 1284|  3.03k|  if (notify_pspec != NULL)
  ------------------
  |  Branch (1284:7): [True: 3.03k, False: 0]
  ------------------
 1285|  3.03k|    {
 1286|  3.03k|      GObjectNotifyQueue *nqueue;
 1287|       |
 1288|       |      /* conditional freeze: only increase freeze count if already frozen */
 1289|  3.03k|      nqueue = g_object_notify_queue_freeze (object, TRUE);
  ------------------
  |  |  818|  3.03k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  3.03k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1290|       |
 1291|  3.03k|      if (nqueue != NULL)
  ------------------
  |  Branch (1291:11): [True: 1.66k, False: 1.37k]
  ------------------
 1292|  1.66k|        {
 1293|       |          /* we're frozen, so add to the queue and release our freeze */
 1294|  1.66k|          g_object_notify_queue_add (object, nqueue, notify_pspec);
 1295|  1.66k|          g_object_notify_queue_thaw (object, nqueue);
 1296|  1.66k|        }
 1297|  1.37k|      else
 1298|       |        /* not frozen, so just dispatch the notification directly */
 1299|  1.37k|        G_OBJECT_GET_CLASS (object)
  ------------------
  |  |   91|  1.37k|#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  527|  1.37k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|  1.37k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1300|  1.37k|          ->dispatch_properties_changed (object, 1, &notify_pspec);
 1301|  3.03k|    }
 1302|  3.03k|}
gobject.c:get_notify_pspec:
 1260|   437k|{
 1261|   437k|  GParamSpec *redirected;
 1262|       |
 1263|       |  /* we don't notify on non-READABLE parameters */
 1264|   437k|  if (~pspec->flags & G_PARAM_READABLE)
  ------------------
  |  Branch (1264:7): [True: 0, False: 437k]
  ------------------
 1265|      0|    return NULL;
 1266|       |
 1267|       |  /* if the paramspec is redirected, notify on the target */
 1268|   437k|  redirected = g_param_spec_get_redirect_target (pspec);
 1269|   437k|  if (redirected != NULL)
  ------------------
  |  Branch (1269:7): [True: 0, False: 437k]
  ------------------
 1270|      0|    return redirected;
 1271|       |
 1272|       |  /* else, notify normally */
 1273|   437k|  return pspec;
 1274|   437k|}
gobject.c:g_object_notify_queue_add:
  349|   436k|{
  350|   436k|  G_LOCK(notify_lock);
  ------------------
  |  |  135|   436k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   436k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  351|       |
  352|   436k|  g_assert (nqueue->n_pspecs < 65535);
  ------------------
  |  |  231|   436k|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   436k|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|   436k|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|   436k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   436k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   436k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   436k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   436k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 436k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   436k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   436k|   else                                         \
  |  |  |  |  |  | 1021|   436k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   436k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   436k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 436k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|   436k|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|   436k|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   436k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 436k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  353|       |
  354|   436k|  if (g_slist_find (nqueue->pspecs, pspec) == NULL)
  ------------------
  |  Branch (354:7): [True: 435k, False: 832]
  ------------------
  355|   435k|    {
  356|   435k|      nqueue->pspecs = g_slist_prepend (nqueue->pspecs, pspec);
  357|   435k|      nqueue->n_pspecs++;
  358|   435k|    }
  359|       |
  360|   436k|  G_UNLOCK(notify_lock);
  ------------------
  |  |  136|   436k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   436k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  361|   436k|}
gobject.c:g_object_notify_queue_thaw:
  307|   433k|{
  308|   433k|  GParamSpec *pspecs_mem[16], **pspecs, **free_me = NULL;
  309|   433k|  GSList *slist;
  310|   433k|  guint n_pspecs = 0;
  311|       |
  312|   433k|  g_return_if_fail (g_atomic_int_get(&object->ref_count) > 0);
  ------------------
  |  |  630|   433k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   433k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   433k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   433k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   433k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   433k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   433k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.29M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 433k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 433k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   433k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   433k|   else                                         \
  |  |  |  |  |  | 1021|   433k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   433k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   433k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 433k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   433k|      { } \
  |  |  633|   433k|    else \
  |  |  634|   433k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   433k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   433k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 433k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  313|       |
  314|   433k|  G_LOCK(notify_lock);
  ------------------
  |  |  135|   433k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   433k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  315|       |
  316|       |  /* Just make sure we never get into some nasty race condition */
  317|   433k|  if (G_UNLIKELY(nqueue->freeze_count == 0)) {
  ------------------
  |  | 1025|   433k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   433k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   433k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   433k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   433k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 433k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   433k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   433k|   else                                         \
  |  |  |  | 1021|   433k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   433k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   433k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 433k]
  |  |  ------------------
  ------------------
  318|      0|    G_UNLOCK(notify_lock);
  ------------------
  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  319|      0|    g_warning ("%s: property-changed notification for %s(%p) is not frozen",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  320|      0|               G_STRFUNC, G_OBJECT_TYPE_NAME (object), object);
  321|      0|    return;
  322|      0|  }
  323|       |
  324|   433k|  nqueue->freeze_count--;
  325|   433k|  if (nqueue->freeze_count) {
  ------------------
  |  Branch (325:7): [True: 1.66k, False: 431k]
  ------------------
  326|  1.66k|    G_UNLOCK(notify_lock);
  ------------------
  |  |  136|  1.66k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  1.66k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  327|  1.66k|    return;
  328|  1.66k|  }
  329|       |
  330|   431k|  pspecs = nqueue->n_pspecs > 16 ? free_me = g_new (GParamSpec*, nqueue->n_pspecs) : pspecs_mem;
  ------------------
  |  |  290|      0|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      0|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      0|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      0|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      0|	  gpointer __p;						\
  |  |  |  |  239|      0|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|      0|	    __p = g_##func (__n);				\
  |  |  |  |  241|      0|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      0|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      0|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      0|	  else							\
  |  |  |  |  245|      0|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      0|	  __p;							\
  |  |  |  |  247|      0|	}))
  |  |  ------------------
  ------------------
  |  Branch (330:12): [True: 0, False: 431k]
  ------------------
  331|       |
  332|   867k|  for (slist = nqueue->pspecs; slist; slist = slist->next)
  ------------------
  |  Branch (332:32): [True: 435k, False: 431k]
  ------------------
  333|   435k|    {
  334|   435k|      pspecs[n_pspecs++] = slist->data;
  335|   435k|    }
  336|   431k|  g_datalist_id_set_data (&object->qdata, quark_notify_queue, NULL);
  ------------------
  |  |   99|   431k|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
  337|       |
  338|   431k|  G_UNLOCK(notify_lock);
  ------------------
  |  |  136|   431k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   431k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  339|       |
  340|   431k|  if (n_pspecs)
  ------------------
  |  Branch (340:7): [True: 431k, False: 0]
  ------------------
  341|   431k|    G_OBJECT_GET_CLASS (object)->dispatch_properties_changed (object, n_pspecs, pspecs);
  ------------------
  |  |   91|   431k|#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  527|   431k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|   431k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  342|   431k|  g_free (free_me);
  343|   431k|}
gobject.c:g_object_new_internal:
 1932|  1.29M|{
 1933|  1.29M|  GObjectNotifyQueue *nqueue = NULL;
 1934|  1.29M|  GObject *object;
 1935|       |
 1936|  1.29M|  if G_UNLIKELY (CLASS_HAS_CUSTOM_CONSTRUCTOR (class))
  ------------------
  |  | 1025|  1.29M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  1.29M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.29M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.29M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.29M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.29M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.29M|   else                                         \
  |  |  |  | 1021|  1.29M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.29M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.29M|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 1.29M]
  |  |  ------------------
  ------------------
 1937|      0|    return g_object_new_with_custom_constructor (class, params, n_params);
 1938|       |
 1939|  1.29M|  object = (GObject *) g_type_create_instance (class->g_type_class.g_type);
 1940|       |
 1941|  1.29M|  if (CLASS_HAS_PROPS (class))
  ------------------
  |  |  143|  1.29M|    ((class)->flags & CLASS_HAS_PROPS_FLAG)
  |  |  ------------------
  |  |  |  |  141|  1.29M|#define CLASS_HAS_PROPS_FLAG 0x1
  |  |  ------------------
  |  |  |  Branch (143:5): [True: 431k, False: 859k]
  |  |  ------------------
  ------------------
 1942|   431k|    {
 1943|   431k|      GSList *node;
 1944|       |
 1945|       |      /* This will have been setup in g_object_init() */
 1946|   431k|      nqueue = g_datalist_id_get_data (&object->qdata, quark_notify_queue);
 1947|   431k|      g_assert (nqueue != NULL);
  ------------------
  |  |  231|   431k|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   431k|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|   431k|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|   431k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   431k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   431k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   431k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   431k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 431k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   431k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   431k|   else                                         \
  |  |  |  |  |  | 1021|   431k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   431k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   431k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 431k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|   431k|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|   431k|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   431k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 431k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1948|       |
 1949|       |      /* We will set exactly n_construct_properties construct
 1950|       |       * properties, but they may come from either the class default
 1951|       |       * values or the passed-in parameter list.
 1952|       |       */
 1953|   866k|      for (node = class->construct_properties; node; node = node->next)
  ------------------
  |  Branch (1953:48): [True: 434k, False: 431k]
  ------------------
 1954|   434k|        {
 1955|   434k|          const GValue *value;
 1956|   434k|          GParamSpec *pspec;
 1957|   434k|          guint j;
 1958|       |
 1959|   434k|          pspec = node->data;
 1960|   434k|          value = NULL; /* to silence gcc... */
 1961|       |
 1962|   434k|          for (j = 0; j < n_params; j++)
  ------------------
  |  Branch (1962:23): [True: 0, False: 434k]
  ------------------
 1963|      0|            if (params[j].pspec == pspec)
  ------------------
  |  Branch (1963:17): [True: 0, False: 0]
  ------------------
 1964|      0|              {
 1965|      0|                consider_issuing_property_deprecation_warning (pspec);
 1966|      0|                value = params[j].value;
 1967|      0|                break;
 1968|      0|              }
 1969|       |
 1970|   434k|          if (value == NULL)
  ------------------
  |  Branch (1970:15): [True: 434k, False: 0]
  ------------------
 1971|   434k|            value = g_param_spec_get_default_value (pspec);
 1972|       |
 1973|   434k|          object_set_property (object, pspec, value, nqueue);
 1974|   434k|        }
 1975|   431k|    }
 1976|       |
 1977|       |  /* run 'constructed' handler if there is a custom one */
 1978|  1.29M|  if (CLASS_HAS_CUSTOM_CONSTRUCTED (class))
  ------------------
  |  |  147|  1.29M|    ((class)->constructed != g_object_constructed)
  |  |  ------------------
  |  |  |  Branch (147:5): [True: 430k, False: 860k]
  |  |  ------------------
  ------------------
 1979|   430k|    class->constructed (object);
 1980|       |
 1981|  1.29M|  if (nqueue)
  ------------------
  |  Branch (1981:7): [True: 431k, False: 859k]
  ------------------
 1982|   431k|    {
 1983|   431k|      guint i;
 1984|       |
 1985|       |      /* Set remaining properties.  The construct properties will
 1986|       |       * already have been taken, so set only the non-construct
 1987|       |       * ones.
 1988|       |       */
 1989|   431k|      for (i = 0; i < n_params; i++)
  ------------------
  |  Branch (1989:19): [True: 0, False: 431k]
  ------------------
 1990|      0|        if (!(params[i].pspec->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY)))
  ------------------
  |  Branch (1990:13): [True: 0, False: 0]
  ------------------
 1991|      0|          {
 1992|      0|            consider_issuing_property_deprecation_warning (params[i].pspec);
 1993|      0|            object_set_property (object, params[i].pspec, params[i].value, nqueue);
 1994|      0|          }
 1995|       |
 1996|   431k|      g_object_notify_queue_thaw (object, nqueue);
 1997|   431k|    }
 1998|       |
 1999|  1.29M|  return object;
 2000|  1.29M|}
gobject.c:object_set_property:
 1528|   434k|{
 1529|   434k|  GValue tmp_value = G_VALUE_INIT;
  ------------------
  |  |  202|   434k|#define G_VALUE_INIT  { 0, { { 0 } } }
  ------------------
 1530|   434k|  GObjectClass *class = g_type_class_peek (pspec->owner_type);
 1531|   434k|  guint param_id = PARAM_SPEC_PARAM_ID (pspec);
  ------------------
  |  |  133|   434k|#define PARAM_SPEC_PARAM_ID(pspec)		((pspec)->param_id)
  ------------------
 1532|   434k|  GParamSpec *redirect;
 1533|       |
 1534|   434k|  if (class == NULL)
  ------------------
  |  Branch (1534:7): [True: 0, False: 434k]
  ------------------
 1535|      0|    {
 1536|      0|      g_warning ("'%s::%s' is not a valid property name; '%s' is not a GObject subtype",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1537|      0|                 g_type_name (pspec->owner_type), pspec->name, g_type_name (pspec->owner_type));
 1538|      0|      return;
 1539|      0|    }
 1540|       |
 1541|   434k|  redirect = g_param_spec_get_redirect_target (pspec);
 1542|   434k|  if (redirect)
  ------------------
  |  Branch (1542:7): [True: 0, False: 434k]
  ------------------
 1543|      0|    pspec = redirect;
 1544|       |
 1545|       |  /* provide a copy to work from, convert (if necessary) and validate */
 1546|   434k|  g_value_init (&tmp_value, pspec->value_type);
 1547|   434k|  if (!g_value_transform (value, &tmp_value))
  ------------------
  |  Branch (1547:7): [True: 0, False: 434k]
  ------------------
 1548|      0|    g_warning ("unable to set property '%s' of type '%s' from value of type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1549|   434k|	       pspec->name,
 1550|   434k|	       g_type_name (pspec->value_type),
 1551|   434k|	       G_VALUE_TYPE_NAME (value));
 1552|   434k|  else if (g_param_value_validate (pspec, &tmp_value) && !(pspec->flags & G_PARAM_LAX_VALIDATION))
  ------------------
  |  Branch (1552:12): [True: 0, False: 434k]
  |  Branch (1552:58): [True: 0, False: 0]
  ------------------
 1553|      0|    {
 1554|      0|      gchar *contents = g_strdup_value_contents (value);
 1555|       |
 1556|      0|      g_warning ("value \"%s\" of type '%s' is invalid or out of range for property '%s' of type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1557|      0|		 contents,
 1558|      0|		 G_VALUE_TYPE_NAME (value),
 1559|      0|		 pspec->name,
 1560|      0|		 g_type_name (pspec->value_type));
 1561|      0|      g_free (contents);
 1562|      0|    }
 1563|   434k|  else
 1564|   434k|    {
 1565|   434k|      class->set_property (object, param_id, &tmp_value, pspec);
 1566|       |
 1567|   434k|      if (~pspec->flags & G_PARAM_EXPLICIT_NOTIFY)
  ------------------
  |  Branch (1567:11): [True: 434k, False: 0]
  ------------------
 1568|   434k|        {
 1569|   434k|          GParamSpec *notify_pspec;
 1570|       |
 1571|   434k|          notify_pspec = get_notify_pspec (pspec);
 1572|       |
 1573|   434k|          if (notify_pspec != NULL)
  ------------------
  |  Branch (1573:15): [True: 434k, False: 0]
  ------------------
 1574|   434k|            g_object_notify_queue_add (object, nqueue, notify_pspec);
 1575|   434k|        }
 1576|   434k|    }
 1577|   434k|  g_value_unset (&tmp_value);
 1578|   434k|}
gobject.c:weak_refs_notify:
 2962|  18.3k|{
 2963|  18.3k|  WeakRefStack *wstack = data;
 2964|  18.3k|  guint i;
 2965|       |
 2966|   164k|  for (i = 0; i < wstack->n_weak_refs; i++)
  ------------------
  |  Branch (2966:15): [True: 145k, False: 18.3k]
  ------------------
 2967|   145k|    wstack->weak_refs[i].notify (wstack->weak_refs[i].data, wstack->object);
 2968|  18.3k|  g_free (wstack);
 2969|  18.3k|}
gobject.c:g_value_object_init:
 3972|   434k|{
 3973|       |  value->data[0].v_pointer = NULL;
 3974|   434k|}
gobject.c:g_value_object_free_value:
 3978|   869k|{
 3979|   869k|  if (value->data[0].v_pointer)
  ------------------
  |  Branch (3979:7): [True: 1.37k, False: 868k]
  ------------------
 3980|  1.37k|    g_object_unref (value->data[0].v_pointer);
 3981|   869k|}
gobject.c:g_value_object_copy_value:
 3986|   434k|{
 3987|   434k|  if (src_value->data[0].v_pointer)
  ------------------
  |  Branch (3987:7): [True: 0, False: 434k]
  ------------------
 3988|      0|    dest_value->data[0].v_pointer = g_object_ref (src_value->data[0].v_pointer);
  ------------------
  |  |  523|      0|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
 3989|   434k|  else
 3990|   434k|    dest_value->data[0].v_pointer = NULL;
 3991|   434k|}
gobject.c:g_value_object_peek_pointer:
 4005|  4.11k|{
 4006|  4.11k|  return value->data[0].v_pointer;
 4007|  4.11k|}

_g_param_type_init:
  101|      2|{
  102|      2|  static const GTypeFundamentalInfo finfo = {
  103|      2|    (G_TYPE_FLAG_CLASSED |
  104|      2|     G_TYPE_FLAG_INSTANTIATABLE |
  105|      2|     G_TYPE_FLAG_DERIVABLE |
  106|      2|     G_TYPE_FLAG_DEEP_DERIVABLE),
  107|      2|  };
  108|      2|  static const GTypeValueTable param_value_table = {
  109|      2|    value_param_init,           /* value_init */
  110|      2|    value_param_free_value,     /* value_free */
  111|      2|    value_param_copy_value,     /* value_copy */
  112|      2|    value_param_peek_pointer,   /* value_peek_pointer */
  113|      2|    "p",			/* collect_format */
  114|      2|    value_param_collect_value,  /* collect_value */
  115|      2|    "p",			/* lcopy_format */
  116|      2|    value_param_lcopy_value,    /* lcopy_value */
  117|      2|  };
  118|      2|  const GTypeInfo param_spec_info = {
  119|      2|    sizeof (GParamSpecClass),
  120|       |
  121|      2|    (GBaseInitFunc) g_param_spec_class_base_init,
  122|      2|    (GBaseFinalizeFunc) g_param_spec_class_base_finalize,
  123|      2|    (GClassInitFunc) g_param_spec_class_init,
  124|      2|    (GClassFinalizeFunc) NULL,
  125|      2|    NULL,	/* class_data */
  126|       |
  127|      2|    sizeof (GParamSpec),
  128|      2|    0,		/* n_preallocs */
  129|      2|    (GInstanceInitFunc) g_param_spec_init,
  130|       |
  131|      2|    &param_value_table,
  132|      2|  };
  133|      2|  GType type;
  134|       |
  135|       |  /* This should be registered as GParamSpec instead of GParam, for
  136|       |   * consistency sake, so that type name can be mapped to struct name,
  137|       |   * However, some language bindings, most noticeable the python ones
  138|       |   * depends on the "GParam" identifier, see #548689
  139|       |   */
  140|      2|  type = g_type_register_fundamental (G_TYPE_PARAM, g_intern_static_string ("GParam"), &param_spec_info, &finfo, G_TYPE_FLAG_ABSTRACT);
  ------------------
  |  |  172|      2|#define G_TYPE_PARAM			G_TYPE_MAKE_FUNDAMENTAL (19)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  141|      2|  g_assert (type == G_TYPE_PARAM);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  142|      2|  g_param_private_offset = g_type_add_instance_private (type, sizeof (GParamSpecPrivate));
  143|      2|  g_value_register_transform_func (G_TYPE_PARAM, G_TYPE_PARAM, value_param_transform_value);
  ------------------
  |  |  172|      2|#define G_TYPE_PARAM			G_TYPE_MAKE_FUNDAMENTAL (19)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_PARAM, G_TYPE_PARAM, value_param_transform_value);
  ------------------
  |  |  172|      2|#define G_TYPE_PARAM			G_TYPE_MAKE_FUNDAMENTAL (19)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  144|      2|}
g_param_spec_ref:
  214|  1.40k|{
  215|  1.40k|  g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), NULL);
  ------------------
  |  |  643|  1.40k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.40k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.40k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.40k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.40k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.40k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.40k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.40k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.40k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.40k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.40k|   else                                         \
  |  |  |  |  |  | 1021|  1.40k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.40k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.40k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.40k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.40k|      { } \
  |  |  646|  1.40k|    else \
  |  |  647|  1.40k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.40k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.40k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.40k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  216|       |
  217|  1.40k|  g_atomic_int_inc ((int *)&pspec->ref_count);
  ------------------
  |  |  148|  1.40k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.40k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|  1.40k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.40k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|  1.40k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 1.40k]
  |  |  ------------------
  |  |  151|  1.40k|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|  1.40k|  }))
  ------------------
  218|       |
  219|  1.40k|  return pspec;
  220|  1.40k|}
g_param_spec_unref:
  230|  1.37k|{
  231|  1.37k|  gboolean is_zero;
  232|       |
  233|  1.37k|  g_return_if_fail (G_IS_PARAM_SPEC (pspec));
  ------------------
  |  |  630|  1.37k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.37k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.37k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.37k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.37k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.37k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.37k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.37k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.37k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.37k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.37k|   else                                         \
  |  |  |  |  |  | 1021|  1.37k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.37k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.37k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.37k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.37k|      { } \
  |  |  633|  1.37k|    else \
  |  |  634|  1.37k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  1.37k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.37k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.37k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  234|       |
  235|  1.37k|  is_zero = g_atomic_int_dec_and_test ((int *)&pspec->ref_count);
  ------------------
  |  |  154|  1.37k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.37k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  155|  1.37k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.37k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  156|  1.37k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (156:13): [Folded, False: 1.37k]
  |  |  ------------------
  |  |  157|  1.37k|    __atomic_fetch_sub ((atomic), 1, __ATOMIC_SEQ_CST) == 1;                 \
  |  |  158|  1.37k|  }))
  ------------------
  236|       |
  237|  1.37k|  if (G_UNLIKELY (is_zero))
  ------------------
  |  | 1025|  1.37k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  1.37k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.37k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.37k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.37k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.37k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.37k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.37k|   else                                         \
  |  |  |  | 1021|  1.37k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.37k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.37k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 1.37k]
  |  |  ------------------
  ------------------
  238|      0|    {
  239|      0|      G_PARAM_SPEC_GET_CLASS (pspec)->finalize (pspec);
  ------------------
  |  |   79|      0|#define G_PARAM_SPEC_GET_CLASS(pspec)	(G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass))
  |  |  ------------------
  |  |  |  |  527|      0|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|      0|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  240|      0|    }
  241|  1.37k|}
g_param_spec_ref_sink:
  277|     35|{
  278|     35|  gsize oldvalue;
  279|     35|  g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), NULL);
  ------------------
  |  |  643|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     35|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     35|      { } \
  |  |  646|     35|    else \
  |  |  647|     35|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  280|       |
  281|     35|  oldvalue = g_atomic_pointer_and (&pspec->qdata, ~(gsize)PARAM_FLOATING_FLAG);
  ------------------
  |  |  226|     35|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  227|     35|    gsize *gapa_atomic = (gsize *) (atomic);                                 \
  |  |  228|     35|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  ------------------
  |  |  |  |  765|     35|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  229|     35|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize));                    \
  |  |  ------------------
  |  |  |  |  765|     35|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  230|     35|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  ------------------
  |  |  |  Branch (230:13): [Folded, False: 35]
  |  |  ------------------
  |  |  231|     35|    (void) (0 ? (val) ^ (val) : 1);                                          \
  |  |  ------------------
  |  |  |  Branch (231:13): [Folded, False: 35]
  |  |  ------------------
  |  |  232|     35|    (gsize) __atomic_fetch_and (gapa_atomic, (val), __ATOMIC_SEQ_CST);       \
  |  |  233|     35|  }))
  ------------------
  282|     35|  if (!(oldvalue & PARAM_FLOATING_FLAG))
  ------------------
  |  |   56|     35|#define PARAM_FLOATING_FLAG                     0x2
  ------------------
  |  Branch (282:7): [True: 0, False: 35]
  ------------------
  283|      0|    g_param_spec_ref (pspec);
  284|       |
  285|     35|  return pspec;
  286|     35|}
g_param_spec_is_valid_name:
  400|     40|{
  401|     40|  const gchar *p;
  402|       |
  403|       |  /* First character must be a letter. */
  404|     40|  if ((name[0] < 'A' || name[0] > 'Z') &&
  ------------------
  |  Branch (404:8): [True: 0, False: 40]
  |  Branch (404:25): [True: 40, False: 0]
  ------------------
  405|     40|      (name[0] < 'a' || name[0] > 'z'))
  ------------------
  |  Branch (405:8): [True: 0, False: 40]
  |  Branch (405:25): [True: 0, False: 40]
  ------------------
  406|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  407|       |
  408|    401|  for (p = name; *p != 0; p++)
  ------------------
  |  Branch (408:18): [True: 361, False: 40]
  ------------------
  409|    361|    {
  410|    361|      const gchar c = *p;
  411|       |
  412|    361|      if (c != '-' && c != '_' &&
  ------------------
  |  Branch (412:11): [True: 342, False: 19]
  |  Branch (412:23): [True: 342, False: 0]
  ------------------
  413|    342|          (c < '0' || c > '9') &&
  ------------------
  |  Branch (413:12): [True: 0, False: 342]
  |  Branch (413:23): [True: 342, False: 0]
  ------------------
  414|    342|          (c < 'A' || c > 'Z') &&
  ------------------
  |  Branch (414:12): [True: 0, False: 342]
  |  Branch (414:23): [True: 342, False: 0]
  ------------------
  415|    342|          (c < 'a' || c > 'z'))
  ------------------
  |  Branch (415:12): [True: 0, False: 342]
  |  Branch (415:23): [True: 0, False: 342]
  ------------------
  416|      0|        return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  417|    361|    }
  418|       |
  419|     40|  return TRUE;
  ------------------
  |  |  818|     40|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     40|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  420|     40|}
g_param_spec_internal:
  451|     35|{
  452|     35|  GParamSpec *pspec;
  453|     35|  GParamSpecPrivate *priv;
  454|       |  
  455|     35|  g_return_val_if_fail (G_TYPE_IS_PARAM (param_type) && param_type != G_TYPE_PARAM, NULL);
  ------------------
  |  |  643|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    105|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     35|      { } \
  |  |  646|     35|    else \
  |  |  647|     35|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  456|     35|  g_return_val_if_fail (name != NULL, NULL);
  ------------------
  |  |  643|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     35|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     35|      { } \
  |  |  646|     35|    else \
  |  |  647|     35|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  457|     35|  g_return_val_if_fail (g_param_spec_is_valid_name (name), NULL);
  ------------------
  |  |  643|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     35|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     35|      { } \
  |  |  646|     35|    else \
  |  |  647|     35|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  458|     35|  g_return_val_if_fail (!(flags & G_PARAM_STATIC_NAME) || is_canonical (name), NULL);
  ------------------
  |  |  643|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    105|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 35]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     35|      { } \
  |  |  646|     35|    else \
  |  |  647|     35|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  459|       |  
  460|     35|  pspec = (gpointer) g_type_create_instance (param_type);
  461|       |
  462|     35|  if (flags & G_PARAM_STATIC_NAME)
  ------------------
  |  Branch (462:7): [True: 35, False: 0]
  ------------------
  463|     35|    {
  464|       |      /* pspec->name is not freed if (flags & G_PARAM_STATIC_NAME) */
  465|     35|      pspec->name = (gchar *) g_intern_static_string (name);
  466|     35|      if (!is_canonical (pspec->name))
  ------------------
  |  Branch (466:11): [True: 0, False: 35]
  ------------------
  467|      0|        g_warning ("G_PARAM_STATIC_NAME used with non-canonical pspec name: %s", pspec->name);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  468|     35|    }
  469|      0|  else
  470|      0|    {
  471|      0|      if (is_canonical (name))
  ------------------
  |  Branch (471:11): [True: 0, False: 0]
  ------------------
  472|      0|        pspec->name = (gchar *) g_intern_string (name);
  473|      0|      else
  474|      0|        {
  475|      0|          gchar *tmp = g_strdup (name);
  476|      0|          canonicalize_key (tmp);
  477|      0|          pspec->name = (gchar *) g_intern_string (tmp);
  478|      0|          g_free (tmp);
  479|      0|        }
  480|      0|    }
  481|       |
  482|     35|  priv = g_param_spec_get_private (pspec);
  483|     35|  priv->name_quark = g_quark_from_string (pspec->name);
  484|       |
  485|     35|  if (flags & G_PARAM_STATIC_NICK)
  ------------------
  |  Branch (485:7): [True: 0, False: 35]
  ------------------
  486|      0|    pspec->_nick = (gchar*) nick;
  487|     35|  else
  488|     35|    pspec->_nick = g_strdup (nick);
  489|       |
  490|     35|  if (flags & G_PARAM_STATIC_BLURB)
  ------------------
  |  Branch (490:7): [True: 0, False: 35]
  ------------------
  491|      0|    pspec->_blurb = (gchar*) blurb;
  492|     35|  else
  493|     35|    pspec->_blurb = g_strdup (blurb);
  494|       |
  495|     35|  pspec->flags = (flags & G_PARAM_USER_MASK) | (flags & G_PARAM_MASK);
  ------------------
  |  |   57|     35|#define	G_PARAM_USER_MASK			(~0U << G_PARAM_USER_SHIFT)
  |  |  ------------------
  |  |  |  |  189|     35|#define	G_PARAM_USER_SHIFT	(8)
  |  |  ------------------
  ------------------
                pspec->flags = (flags & G_PARAM_USER_MASK) | (flags & G_PARAM_MASK);
  ------------------
  |  |  182|     35|#define	G_PARAM_MASK		(0x000000ff)
  ------------------
  496|       |  
  497|     35|  return pspec;
  498|     35|}
g_param_spec_get_redirect_target:
  609|   872k|{
  610|   872k|  GTypeInstance *inst = (GTypeInstance *)pspec;
  611|       |
  612|   872k|  if (inst && inst->g_class && inst->g_class->g_type == G_TYPE_PARAM_OVERRIDE)
  ------------------
  |  |  507|   872k|#define	G_TYPE_PARAM_OVERRIDE		   (g_param_spec_types[20])
  ------------------
  |  Branch (612:7): [True: 872k, False: 0]
  |  Branch (612:15): [True: 872k, False: 0]
  |  Branch (612:32): [True: 0, False: 872k]
  ------------------
  613|      0|    return ((GParamSpecOverride*)pspec)->overridden;
  614|   872k|  else
  615|   872k|    return NULL;
  616|   872k|}
g_param_value_set_default:
  629|      6|{
  630|      6|  g_return_if_fail (G_IS_PARAM_SPEC (pspec));
  ------------------
  |  |  630|      6|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      6|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      6|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      6|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      6| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      6|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      6|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      6|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 6, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      6|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      6|   else                                         \
  |  |  |  |  |  | 1021|      6|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      6|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      6|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      6|      { } \
  |  |  633|      6|    else \
  |  |  634|      6|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      6|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      6|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  631|       |
  632|      6|  if (G_VALUE_TYPE (value) == G_TYPE_INVALID)
  ------------------
  |  |   59|      6|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
                if (G_VALUE_TYPE (value) == G_TYPE_INVALID)
  ------------------
  |  |   55|      6|#define G_TYPE_INVALID			G_TYPE_MAKE_FUNDAMENTAL (0)
  |  |  ------------------
  |  |  |  |  221|      6|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      6|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (632:7): [True: 0, False: 6]
  ------------------
  633|      0|    {
  634|      0|      g_value_init (value, G_PARAM_SPEC_VALUE_TYPE (pspec));
  ------------------
  |  |  103|      0|#define	G_PARAM_SPEC_VALUE_TYPE(pspec)	(G_PARAM_SPEC (pspec)->value_type)
  |  |  ------------------
  |  |  |  |   45|      0|#define G_PARAM_SPEC(pspec)		(G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM, GParamSpec))
  |  |  |  |  ------------------
  |  |  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  635|      0|    }
  636|      6|  else
  637|      6|    {
  638|      6|      g_return_if_fail (G_IS_VALUE (value));
  ------------------
  |  |  630|      6|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      6|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      6|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      6|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      6| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      6|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      6|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      6|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 6, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      6|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      6|   else                                         \
  |  |  |  |  |  | 1021|      6|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      6|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      6|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      6|      { } \
  |  |  633|      6|    else \
  |  |  634|      6|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      6|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      6|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  639|      6|      g_return_if_fail (PSPEC_APPLIES_TO_VALUE (pspec, value));
  ------------------
  |  |  630|      6|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      6|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      6|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      6|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      6| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      6|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      6|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     30|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 6, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 6]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 6, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      6|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      6|   else                                         \
  |  |  |  |  |  | 1021|      6|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      6|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      6|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      6|      { } \
  |  |  633|      6|    else \
  |  |  634|      6|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      6|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      6|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  640|      6|      g_value_reset (value);
  641|      6|    }
  642|       |
  643|      6|  G_PARAM_SPEC_GET_CLASS (pspec)->value_set_default (pspec, value);
  ------------------
  |  |   79|      6|#define G_PARAM_SPEC_GET_CLASS(pspec)	(G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass))
  |  |  ------------------
  |  |  |  |  527|      6|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|      6|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  644|      6|}
g_param_value_validate:
  691|   434k|{
  692|   434k|  g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), FALSE);
  ------------------
  |  |  643|   434k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   434k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   434k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   434k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   434k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   434k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   434k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   434k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 434k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   434k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   434k|   else                                         \
  |  |  |  |  |  | 1021|   434k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   434k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   434k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 434k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   434k|      { } \
  |  |  646|   434k|    else \
  |  |  647|   434k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   434k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   434k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 434k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  693|   434k|  g_return_val_if_fail (G_IS_VALUE (value), FALSE);
  ------------------
  |  |  643|   434k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   434k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   434k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   434k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   434k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   434k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   434k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   434k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 434k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   434k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   434k|   else                                         \
  |  |  |  |  |  | 1021|   434k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   434k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   434k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 434k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   434k|      { } \
  |  |  646|   434k|    else \
  |  |  647|   434k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   434k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   434k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 434k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  694|   434k|  g_return_val_if_fail (PSPEC_APPLIES_TO_VALUE (pspec, value), FALSE);
  ------------------
  |  |  643|   434k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   434k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   434k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   434k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   434k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   434k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   434k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.17M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 434k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 434k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 434k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   434k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   434k|   else                                         \
  |  |  |  |  |  | 1021|   434k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   434k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   434k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 434k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   434k|      { } \
  |  |  646|   434k|    else \
  |  |  647|   434k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   434k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   434k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 434k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  695|       |
  696|   434k|  if (G_PARAM_SPEC_GET_CLASS (pspec)->value_validate)
  ------------------
  |  |   79|   434k|#define G_PARAM_SPEC_GET_CLASS(pspec)	(G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass))
  |  |  ------------------
  |  |  |  |  527|   434k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|   434k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (696:7): [True: 434k, False: 0]
  ------------------
  697|   434k|    {
  698|   434k|      GValue oval = *value;
  699|       |
  700|   434k|      if (G_PARAM_SPEC_GET_CLASS (pspec)->value_validate (pspec, value) ||
  ------------------
  |  |   79|   434k|#define G_PARAM_SPEC_GET_CLASS(pspec)	(G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass))
  |  |  ------------------
  |  |  |  |  527|   434k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|   434k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (700:11): [True: 0, False: 434k]
  ------------------
  701|   434k|	  memcmp (&oval.data, &value->data, sizeof (oval.data)))
  ------------------
  |  Branch (701:4): [True: 0, False: 434k]
  ------------------
  702|      0|	return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  703|   434k|    }
  704|       |
  705|   434k|  return FALSE;
  ------------------
  |  |  814|   434k|#define	FALSE	(0)
  ------------------
  706|   434k|}
g_param_spec_pool_new:
  943|      1|{
  944|      1|  static GMutex init_mutex;
  945|      1|  GParamSpecPool *pool = g_new (GParamSpecPool, 1);
  ------------------
  |  |  290|      1|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      1|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      1|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      1|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      1|	  gpointer __p;						\
  |  |  |  |  239|      1|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  240|      1|	    __p = g_##func (__n);				\
  |  |  |  |  241|      1|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      1|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      1|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      1|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 1]
  |  |  |  |  |  Branch (242:26): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      1|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      1|	  else							\
  |  |  |  |  245|      1|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      1|	  __p;							\
  |  |  |  |  247|      1|	}))
  |  |  ------------------
  ------------------
  946|       |
  947|      1|  memcpy (&pool->mutex, &init_mutex, sizeof (init_mutex));
  948|      1|  pool->type_prefixing = type_prefixing != FALSE;
  ------------------
  |  |  814|      1|#define	FALSE	(0)
  ------------------
  949|      1|  pool->hash_table = g_hash_table_new (param_spec_pool_hash, param_spec_pool_equals);
  950|       |
  951|      1|  return pool;
  952|      1|}
g_param_spec_pool_insert:
  966|     35|{
  967|     35|  const gchar *p;
  968|       |  
  969|     35|  if (pool && pspec && owner_type > 0 && pspec->owner_type == 0)
  ------------------
  |  Branch (969:7): [True: 35, False: 0]
  |  Branch (969:15): [True: 35, False: 0]
  |  Branch (969:24): [True: 35, False: 0]
  |  Branch (969:42): [True: 35, False: 0]
  ------------------
  970|     35|    {
  971|    352|      for (p = pspec->name; *p; p++)
  ------------------
  |  Branch (971:29): [True: 317, False: 35]
  ------------------
  972|    317|	{
  973|    317|	  if (!strchr (G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "-_", *p))
  ------------------
  |  |   49|    317|#define G_CSET_A_2_Z	"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  ------------------
  |  Branch (973:8): [True: 0, False: 317]
  ------------------
  974|      0|	    {
  975|      0|	      g_warning (G_STRLOC ": pspec name \"%s\" contains invalid characters", pspec->name);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  976|      0|	      return;
  977|      0|	    }
  978|    317|	}
  979|     35|      g_mutex_lock (&pool->mutex);
  980|     35|      pspec->owner_type = owner_type;
  981|     35|      g_param_spec_ref (pspec);
  982|     35|      g_hash_table_add (pool->hash_table, pspec);
  983|     35|      g_mutex_unlock (&pool->mutex);
  984|     35|    }
  985|      0|  else
  986|      0|    {
  987|      0|      g_return_if_fail (pool != NULL);
  ------------------
  |  |  630|      0|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      0|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      0|      { } \
  |  |  633|      0|    else \
  |  |  634|      0|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      0|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  988|      0|      g_return_if_fail (pspec);
  ------------------
  |  |  630|      0|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      0|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      0|      { } \
  |  |  633|      0|    else \
  |  |  634|      0|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      0|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  989|      0|      g_return_if_fail (owner_type > 0);
  ------------------
  |  |  630|      0|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      0|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      0|      { } \
  |  |  633|      0|    else \
  |  |  634|      0|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      0|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  990|      0|      g_return_if_fail (pspec->owner_type == 0);
  ------------------
  |  |  630|      0|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      0|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      0|      { } \
  |  |  633|      0|    else \
  |  |  634|      0|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      0|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  991|      0|    }
  992|     35|}
g_param_spec_pool_lookup:
 1093|  3.10k|{
 1094|  3.10k|  GParamSpec *pspec;
 1095|  3.10k|  gchar *delim;
 1096|       |
 1097|  3.10k|  g_return_val_if_fail (pool != NULL, NULL);
  ------------------
  |  |  643|  3.10k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.10k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.10k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.10k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.10k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.10k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.10k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.10k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.10k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.10k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.10k|   else                                         \
  |  |  |  |  |  | 1021|  3.10k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.10k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.10k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.10k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.10k|      { } \
  |  |  646|  3.10k|    else \
  |  |  647|  3.10k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  3.10k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.10k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.10k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1098|  3.10k|  g_return_val_if_fail (param_name != NULL, NULL);
  ------------------
  |  |  643|  3.10k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.10k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.10k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.10k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.10k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.10k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.10k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.10k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.10k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.10k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.10k|   else                                         \
  |  |  |  |  |  | 1021|  3.10k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.10k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.10k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.10k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.10k|      { } \
  |  |  646|  3.10k|    else \
  |  |  647|  3.10k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  3.10k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.10k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.10k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1099|       |
 1100|  3.10k|  g_mutex_lock (&pool->mutex);
 1101|       |
 1102|  3.10k|  delim = pool->type_prefixing ? strchr (param_name, ':') : NULL;
  ------------------
  |  Branch (1102:11): [True: 3.10k, False: 0]
  ------------------
 1103|       |
 1104|       |  /* try quick and away, i.e. without prefix */
 1105|  3.10k|  if (!delim)
  ------------------
  |  Branch (1105:7): [True: 3.10k, False: 0]
  ------------------
 1106|  3.10k|    {
 1107|  3.10k|      pspec = param_spec_ht_lookup (pool->hash_table, param_name, owner_type, walk_ancestors);
 1108|  3.10k|      g_mutex_unlock (&pool->mutex);
 1109|       |
 1110|  3.10k|      return pspec;
 1111|  3.10k|    }
 1112|       |
 1113|       |  /* strip type prefix */
 1114|      0|  if (pool->type_prefixing && delim[1] == ':')
  ------------------
  |  Branch (1114:7): [True: 0, False: 0]
  |  Branch (1114:31): [True: 0, False: 0]
  ------------------
 1115|      0|    {
 1116|      0|      guint l = delim - param_name;
 1117|      0|      gchar stack_buffer[32], *buffer = l < 32 ? stack_buffer : g_new (gchar, l + 1);
  ------------------
  |  |  290|      0|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      0|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      0|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      0|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      0|	  gpointer __p;						\
  |  |  |  |  239|      0|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|      0|	    __p = g_##func (__n);				\
  |  |  |  |  241|      0|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      0|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      0|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      0|	  else							\
  |  |  |  |  245|      0|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      0|	  __p;							\
  |  |  |  |  247|      0|	}))
  |  |  ------------------
  ------------------
  |  Branch (1117:41): [True: 0, False: 0]
  ------------------
 1118|      0|      GType type;
 1119|       |      
 1120|      0|      strncpy (buffer, param_name, delim - param_name);
 1121|      0|      buffer[l] = 0;
 1122|      0|      type = g_type_from_name (buffer);
 1123|      0|      if (l >= 32)
  ------------------
  |  Branch (1123:11): [True: 0, False: 0]
  ------------------
 1124|      0|	g_free (buffer);
 1125|      0|      if (type)		/* type==0 isn't a valid type pefix */
  ------------------
  |  Branch (1125:11): [True: 0, False: 0]
  ------------------
 1126|      0|	{
 1127|       |	  /* sanity check, these cases don't make a whole lot of sense */
 1128|      0|	  if ((!walk_ancestors && type != owner_type) || !g_type_is_a (owner_type, type))
  ------------------
  |  Branch (1128:9): [True: 0, False: 0]
  |  Branch (1128:28): [True: 0, False: 0]
  |  Branch (1128:51): [True: 0, False: 0]
  ------------------
 1129|      0|	    {
 1130|      0|	      g_mutex_unlock (&pool->mutex);
 1131|       |
 1132|      0|	      return NULL;
 1133|      0|	    }
 1134|      0|	  owner_type = type;
 1135|      0|	  param_name += l + 2;
 1136|      0|	  pspec = param_spec_ht_lookup (pool->hash_table, param_name, owner_type, walk_ancestors);
 1137|      0|	  g_mutex_unlock (&pool->mutex);
 1138|       |
 1139|      0|	  return pspec;
 1140|      0|	}
 1141|      0|    }
 1142|       |  /* malformed param_name */
 1143|       |
 1144|      0|  g_mutex_unlock (&pool->mutex);
 1145|       |
 1146|       |  return NULL;
 1147|      0|}
g_param_spec_pool_list:
 1309|     11|{
 1310|     11|  GParamSpec **pspecs, **p;
 1311|     11|  GSList **slists, *node;
 1312|     11|  gpointer data[4];
 1313|     11|  guint d, i;
 1314|     11|  int n_pspecs = 0;
 1315|       |
 1316|     11|  g_return_val_if_fail (pool != NULL, NULL);
  ------------------
  |  |  643|     11|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     11|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     11|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     11|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     11| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     11|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     11|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     11|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     11|   else                                         \
  |  |  |  |  |  | 1021|     11|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     11|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     11|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     11|      { } \
  |  |  646|     11|    else \
  |  |  647|     11|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     11|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     11|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1317|     11|  g_return_val_if_fail (owner_type > 0, NULL);
  ------------------
  |  |  643|     11|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     11|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     11|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     11|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     11| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     11|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     11|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     11|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     11|   else                                         \
  |  |  |  |  |  | 1021|     11|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     11|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     11|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     11|      { } \
  |  |  646|     11|    else \
  |  |  647|     11|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     11|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     11|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1318|     11|  g_return_val_if_fail (n_pspecs_p != NULL, NULL);
  ------------------
  |  |  643|     11|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     11|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     11|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     11|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     11| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     11|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     11|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     11|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     11|   else                                         \
  |  |  |  |  |  | 1021|     11|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     11|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     11|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     11|      { } \
  |  |  646|     11|    else \
  |  |  647|     11|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     11|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     11|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1319|       |  
 1320|     11|  g_mutex_lock (&pool->mutex);
 1321|     11|  d = g_type_depth (owner_type);
 1322|     11|  slists = g_new0 (GSList*, d);
  ------------------
  |  |  307|     11|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|     11|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|     11|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|     11|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|     11|	  gpointer __p;						\
  |  |  |  |  239|     11|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  |  |  240|     11|	    __p = g_##func (__n);				\
  |  |  |  |  241|     11|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  |  |  242|     11|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|     11|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|     11|	  else							\
  |  |  |  |  245|     11|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|     11|	  __p;							\
  |  |  |  |  247|     11|	}))
  |  |  ------------------
  ------------------
 1323|     11|  data[0] = slists;
 1324|     11|  data[1] = (gpointer) owner_type;
 1325|     11|  data[2] = pool->hash_table;
 1326|     11|  data[3] = &n_pspecs;
 1327|       |
 1328|     11|  g_hash_table_foreach (pool->hash_table,
 1329|     11|                        G_TYPE_IS_INTERFACE (owner_type) ?
  ------------------
  |  |  293|     11|#define G_TYPE_IS_INTERFACE(type)               (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   38|     11|#define G_TYPE_FUNDAMENTAL(type)	(g_type_fundamental (type))
  |  |  ------------------
  |  |               #define G_TYPE_IS_INTERFACE(type)               (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     11|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     11|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     11|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (293:49): [True: 11, False: 0]
  |  |  ------------------
  ------------------
 1330|     11|                          pool_depth_list_for_interface :
 1331|     11|                          pool_depth_list,
 1332|     11|                        &data);
 1333|       |
 1334|     11|  pspecs = g_new (GParamSpec*, n_pspecs + 1);
  ------------------
  |  |  290|     11|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|     11|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|     11|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|     11|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|     11|	  gpointer __p;						\
  |  |  |  |  239|     11|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  |  |  240|     11|	    __p = g_##func (__n);				\
  |  |  |  |  241|     11|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  |  |  242|     11|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|     11|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|     11|	  else							\
  |  |  |  |  245|     11|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|     11|	  __p;							\
  |  |  |  |  247|     11|	}))
  |  |  ------------------
  ------------------
 1335|     11|  p = pspecs;
 1336|     33|  for (i = 0; i < d; i++)
  ------------------
  |  Branch (1336:15): [True: 22, False: 11]
  ------------------
 1337|     22|    {
 1338|     22|      slists[i] = g_slist_sort (slists[i], pspec_compare_id);
 1339|     22|      for (node = slists[i]; node; node = node->next)
  ------------------
  |  Branch (1339:30): [True: 0, False: 22]
  ------------------
 1340|      0|	*p++ = node->data;
 1341|     22|      g_slist_free (slists[i]);
 1342|     22|    }
 1343|     11|  *p++ = NULL;
 1344|     11|  g_free (slists);
 1345|     11|  g_mutex_unlock (&pool->mutex);
 1346|       |
 1347|     11|  *n_pspecs_p = n_pspecs;
 1348|       |
 1349|     11|  return pspecs;
 1350|     11|}
g_param_type_register_static:
 1414|     46|{
 1415|     46|  GTypeInfo info = {
 1416|     46|    sizeof (GParamSpecClass),      /* class_size */
 1417|     46|    NULL,                          /* base_init */
 1418|     46|    NULL,                          /* base_destroy */
 1419|     46|    param_spec_generic_class_init, /* class_init */
 1420|     46|    NULL,                          /* class_destroy */
 1421|     46|    NULL,                          /* class_data */
 1422|     46|    0,                             /* instance_size */
 1423|     46|    16,                            /* n_preallocs */
 1424|     46|    NULL,                          /* instance_init */
 1425|     46|    NULL,                          /* value_table */
 1426|     46|  };
 1427|     46|  ParamSpecClassInfo *cinfo;
 1428|       |
 1429|     46|  g_return_val_if_fail (name != NULL, 0);
  ------------------
  |  |  643|     46|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     46|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     46|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     46|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     46| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     46|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     46|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     46|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 46, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     46|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     46|   else                                         \
  |  |  |  |  |  | 1021|     46|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     46|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     46|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 46, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     46|      { } \
  |  |  646|     46|    else \
  |  |  647|     46|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     46|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     46|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 46]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1430|     46|  g_return_val_if_fail (pspec_info != NULL, 0);
  ------------------
  |  |  643|     46|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     46|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     46|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     46|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     46| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     46|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     46|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     46|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 46, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     46|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     46|   else                                         \
  |  |  |  |  |  | 1021|     46|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     46|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     46|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 46, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     46|      { } \
  |  |  646|     46|    else \
  |  |  647|     46|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     46|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     46|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 46]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1431|     46|  g_return_val_if_fail (g_type_from_name (name) == 0, 0);
  ------------------
  |  |  643|     46|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     46|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     46|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     46|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     46| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     46|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     46|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     46|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 46, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     46|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     46|   else                                         \
  |  |  |  |  |  | 1021|     46|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     46|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     46|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 46, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     46|      { } \
  |  |  646|     46|    else \
  |  |  647|     46|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     46|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     46|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 46]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1432|     46|  g_return_val_if_fail (pspec_info->instance_size >= sizeof (GParamSpec), 0);
  ------------------
  |  |  643|     46|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     46|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     46|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     46|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     46| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     46|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     46|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     46|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 46, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     46|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     46|   else                                         \
  |  |  |  |  |  | 1021|     46|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     46|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     46|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 46, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     46|      { } \
  |  |  646|     46|    else \
  |  |  647|     46|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     46|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     46|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 46]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1433|     46|  g_return_val_if_fail (g_type_name (pspec_info->value_type) != NULL, 0);
  ------------------
  |  |  643|     46|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     46|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     46|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     46|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     46| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     46|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     46|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     46|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 46, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     46|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     46|   else                                         \
  |  |  |  |  |  | 1021|     46|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     46|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     46|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 46, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     46|      { } \
  |  |  646|     46|    else \
  |  |  647|     46|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     46|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     46|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 46]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1434|       |  /* default: g_return_val_if_fail (pspec_info->value_set_default != NULL, 0); */
 1435|       |  /* optional: g_return_val_if_fail (pspec_info->value_validate != NULL, 0); */
 1436|       |  /* default: g_return_val_if_fail (pspec_info->values_cmp != NULL, 0); */
 1437|       |
 1438|     46|  info.instance_size = pspec_info->instance_size;
 1439|     46|  info.n_preallocs = pspec_info->n_preallocs;
 1440|     46|  info.instance_init = (GInstanceInitFunc) pspec_info->instance_init;
 1441|     46|  cinfo = g_new (ParamSpecClassInfo, 1);
  ------------------
  |  |  290|     46|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|     46|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     46|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|     46|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|     46|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|     46|	  gpointer __p;						\
  |  |  |  |  239|     46|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 46]
  |  |  |  |  ------------------
  |  |  |  |  240|     46|	    __p = g_##func (__n);				\
  |  |  |  |  241|     46|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 46, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|     46|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|     46|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|     46|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 46]
  |  |  |  |  |  Branch (242:26): [True: 46, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|     46|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|     46|	  else							\
  |  |  |  |  245|     46|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|     46|	  __p;							\
  |  |  |  |  247|     46|	}))
  |  |  ------------------
  ------------------
 1442|     46|  cinfo->value_type = pspec_info->value_type;
 1443|     46|  cinfo->finalize = pspec_info->finalize;
 1444|     46|  cinfo->value_set_default = pspec_info->value_set_default ? pspec_info->value_set_default : default_value_set_default;
  ------------------
  |  Branch (1444:30): [True: 46, False: 0]
  ------------------
 1445|     46|  cinfo->value_validate = pspec_info->value_validate;
 1446|     46|  cinfo->values_cmp = pspec_info->values_cmp ? pspec_info->values_cmp : default_values_cmp;
  ------------------
  |  Branch (1446:23): [True: 46, False: 0]
  ------------------
 1447|     46|  info.class_data = cinfo;
 1448|       |
 1449|     46|  return g_type_register_static (G_TYPE_PARAM, name, &info, 0);
  ------------------
  |  |  172|     46|#define G_TYPE_PARAM			G_TYPE_MAKE_FUNDAMENTAL (19)
  |  |  ------------------
  |  |  |  |  221|     46|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|     46|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1450|     46|}
g_value_get_param:
 1524|  2.74k|{
 1525|  2.74k|  g_return_val_if_fail (G_VALUE_HOLDS_PARAM (value), NULL);
  ------------------
  |  |  643|  2.74k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.74k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.74k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.74k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.74k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.74k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.74k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  13.7k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.74k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 2.74k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.74k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.74k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.74k|   else                                         \
  |  |  |  |  |  | 1021|  2.74k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.74k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.74k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.74k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.74k|      { } \
  |  |  646|  2.74k|    else \
  |  |  647|  2.74k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  2.74k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.74k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.74k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1526|       |
 1527|  2.74k|  return value->data[0].v_pointer;
 1528|  2.74k|}
g_param_spec_get_default_value:
 1562|   434k|{
 1563|   434k|  GParamSpecPrivate *priv = g_param_spec_get_private (pspec);
 1564|       |
 1565|       |  /* We use the type field of the GValue as the key for the once because
 1566|       |   * it will be zero before it is initialised and non-zero after.  We
 1567|       |   * have to take care that we don't write a non-zero value to the type
 1568|       |   * field before we are completely done, however, because then another
 1569|       |   * thread could come along and find the value partially-initialised.
 1570|       |   *
 1571|       |   * In order to accomplish this we store the default value in a
 1572|       |   * stack-allocated GValue.  We then set the type field in that value
 1573|       |   * to zero and copy the contents into place.  We then end by storing
 1574|       |   * the type as the last step in order to ensure that we're completely
 1575|       |   * done before a g_once_init_enter() could take the fast path in
 1576|       |   * another thread.
 1577|       |   */
 1578|   434k|  if (g_once_init_enter (&priv->default_value.g_type))
  ------------------
  |  |  257|   434k|  (G_GNUC_EXTENSION ({                                               \
  |  |  ------------------
  |  |  |  |   54|   434k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  |  Branch (257:3): [True: 6, False: 434k]
  |  |  ------------------
  |  |  258|   434k|    G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer));       \
  |  |  ------------------
  |  |  |  |  765|   434k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  259|   434k|    (void) (0 ? (gpointer) *(location) : NULL);                      \
  |  |  ------------------
  |  |  |  Branch (259:13): [Folded, False: 434k]
  |  |  ------------------
  |  |  260|   434k|    (!g_atomic_pointer_get (location) &&                             \
  |  |  ------------------
  |  |  |  |  113|   869k|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   434k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|   869k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   434k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|   869k|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   434k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|   869k|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   434k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|   869k|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|   869k|    gapg_temp_newval;                                                      \
  |  |  |  |  119|   869k|  }))
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 6, False: 434k]
  |  |  ------------------
  |  |  261|   434k|     g_once_init_enter (location));                                  \
  |  |  ------------------
  |  |  |  Branch (261:6): [True: 6, False: 0]
  |  |  ------------------
  |  |  262|   434k|  }))
  ------------------
 1579|      6|    {
 1580|      6|      GValue default_value = G_VALUE_INIT;
  ------------------
  |  |  202|      6|#define G_VALUE_INIT  { 0, { { 0 } } }
  ------------------
 1581|       |
 1582|      6|      g_value_init (&default_value, pspec->value_type);
 1583|      6|      g_param_value_set_default (pspec, &default_value);
 1584|       |
 1585|       |      /* store all but the type */
 1586|      6|      memcpy (priv->default_value.data, default_value.data, sizeof (default_value.data));
 1587|       |
 1588|      6|      g_once_init_leave (&priv->default_value.g_type, pspec->value_type);
  ------------------
  |  |  264|      6|  (G_GNUC_EXTENSION ({                                               \
  |  |  ------------------
  |  |  |  |   54|      6|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  265|      6|    G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer));       \
  |  |  ------------------
  |  |  |  |  765|      6|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  266|      6|    0 ? (void) (*(location) = (result)) : (void) 0;                  \
  |  |  ------------------
  |  |  |  Branch (266:5): [Folded, False: 6]
  |  |  ------------------
  |  |  267|      6|    g_once_init_leave ((location), (gsize) (result));                \
  |  |  268|      6|  }))
  ------------------
 1589|      6|    }
 1590|       |
 1591|   434k|  return &priv->default_value;
 1592|   434k|}
g_param_spec_get_name_quark:
 1606|   437k|{
 1607|   437k|  GParamSpecPrivate *priv = g_param_spec_get_private (pspec);
 1608|       |
 1609|       |  /* Return the quark that we've stashed away at creation time.
 1610|       |   * This lets us avoid a lock and a hash table lookup when
 1611|       |   * dispatching property change notification.
 1612|       |   */
 1613|       |
 1614|   437k|  return priv->name_quark;
 1615|   437k|}
gparam.c:g_param_spec_class_base_init:
  148|      6|{
  149|      6|}
gparam.c:g_param_spec_class_init:
  159|      1|{
  160|      1|  class->value_type = G_TYPE_NONE;
  ------------------
  |  |   62|      1|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  161|      1|  class->finalize = g_param_spec_finalize;
  162|      1|  class->value_set_default = NULL;
  163|      1|  class->value_validate = NULL;
  164|      1|  class->values_cmp = NULL;
  165|       |
  166|      1|  g_type_class_adjust_private_offset (class, &g_param_private_offset);
  167|      1|}
gparam.c:g_param_spec_init:
  172|     35|{
  173|     35|  pspec->name = NULL;
  174|     35|  pspec->_nick = NULL;
  175|     35|  pspec->_blurb = NULL;
  176|     35|  pspec->flags = 0;
  177|     35|  pspec->value_type = class->value_type;
  178|     35|  pspec->owner_type = 0;
  179|     35|  pspec->qdata = NULL;
  180|     35|  g_datalist_set_flags (&pspec->qdata, PARAM_FLOATING_FLAG);
  ------------------
  |  |   56|     35|#define PARAM_FLOATING_FLAG                     0x2
  ------------------
  181|     35|  pspec->ref_count = 1;
  182|     35|  pspec->param_id = 0;
  183|     35|}
gparam.c:is_canonical:
  380|    139|{
  381|       |  return (strchr (key, '_') == NULL);
  382|    139|}
gparam.c:g_param_spec_get_private:
   95|   872k|{
   96|   872k|  return &G_STRUCT_MEMBER (GParamSpecPrivate, pspec, g_param_private_offset);
  ------------------
  |  |  862|   872k|    (*(member_type*) G_STRUCT_MEMBER_P ((struct_p), (struct_offset)))
  |  |  ------------------
  |  |  |  |  860|   872k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
   97|   872k|}
gparam.c:value_param_free_value:
  805|  1.37k|{
  806|  1.37k|  if (value->data[0].v_pointer)
  ------------------
  |  Branch (806:7): [True: 1.37k, False: 0]
  ------------------
  807|  1.37k|    g_param_spec_unref (value->data[0].v_pointer);
  808|  1.37k|}
gparam.c:value_param_collect_value:
  842|  1.37k|{
  843|  1.37k|  if (collect_values[0].v_pointer)
  ------------------
  |  Branch (843:7): [True: 1.37k, False: 0]
  ------------------
  844|  1.37k|    {
  845|  1.37k|      GParamSpec *param = collect_values[0].v_pointer;
  846|       |
  847|  1.37k|      if (param->g_type_instance.g_class == NULL)
  ------------------
  |  Branch (847:11): [True: 0, False: 1.37k]
  ------------------
  848|      0|	return g_strconcat ("invalid unclassed param spec pointer for value type '",
  849|      0|			    G_VALUE_TYPE_NAME (value),
  ------------------
  |  |   68|      0|#define	G_VALUE_TYPE_NAME(value)	(g_type_name (G_VALUE_TYPE (value)))
  |  |  ------------------
  |  |  |  |   59|      0|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  |  |  ------------------
  ------------------
  850|      0|			    "'",
  851|      0|			    NULL);
  852|  1.37k|      else if (!g_value_type_compatible (G_PARAM_SPEC_TYPE (param), G_VALUE_TYPE (value)))
  ------------------
  |  |   89|  1.37k|#define G_PARAM_SPEC_TYPE(pspec)	(G_TYPE_FROM_INSTANCE (pspec))
  |  |  ------------------
  |  |  |  |  602|  1.37k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|  1.37k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                    else if (!g_value_type_compatible (G_PARAM_SPEC_TYPE (param), G_VALUE_TYPE (value)))
  ------------------
  |  |   59|  1.37k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  |  Branch (852:16): [True: 0, False: 1.37k]
  ------------------
  853|      0|	return g_strconcat ("invalid param spec type '",
  854|      0|			    G_PARAM_SPEC_TYPE_NAME (param),
  ------------------
  |  |   96|      0|#define G_PARAM_SPEC_TYPE_NAME(pspec)	(g_type_name (G_PARAM_SPEC_TYPE (pspec)))
  |  |  ------------------
  |  |  |  |   89|      0|#define G_PARAM_SPEC_TYPE(pspec)	(G_TYPE_FROM_INSTANCE (pspec))
  |  |  |  |  ------------------
  |  |  |  |  |  |  602|      0|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  855|      0|			    "' for value type '",
  856|      0|			    G_VALUE_TYPE_NAME (value),
  ------------------
  |  |   68|      0|#define	G_VALUE_TYPE_NAME(value)	(g_type_name (G_VALUE_TYPE (value)))
  |  |  ------------------
  |  |  |  |   59|      0|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  |  |  ------------------
  ------------------
  857|      0|			    "'",
  858|      0|			    NULL);
  859|  1.37k|      value->data[0].v_pointer = g_param_spec_ref (param);
  860|  1.37k|    }
  861|      0|  else
  862|      0|    value->data[0].v_pointer = NULL;
  863|       |
  864|  1.37k|  return NULL;
  865|  1.37k|}
gparam.c:param_spec_pool_hash:
  906|  9.24k|{
  907|  9.24k|  const GParamSpec *key = key_spec;
  908|  9.24k|  const gchar *p;
  909|  9.24k|  guint h = key->owner_type;
  910|       |
  911|  50.2k|  for (p = key->name; *p; p++)
  ------------------
  |  Branch (911:23): [True: 41.0k, False: 9.24k]
  ------------------
  912|  41.0k|    h = (h << 5) - h + *p;
  913|       |
  914|  9.24k|  return h;
  915|  9.24k|}
gparam.c:param_spec_pool_equals:
  920|  3.03k|{
  921|  3.03k|  const GParamSpec *key1 = key_spec_1;
  922|  3.03k|  const GParamSpec *key2 = key_spec_2;
  923|       |
  924|  3.03k|  return (key1->owner_type == key2->owner_type &&
  ------------------
  |  Branch (924:11): [True: 3.03k, False: 0]
  ------------------
  925|  3.03k|	  strcmp (key1->name, key2->name) == 0);
  ------------------
  |  Branch (925:4): [True: 3.03k, False: 0]
  ------------------
  926|  3.03k|}
gparam.c:param_spec_ht_lookup:
 1026|  3.10k|{
 1027|  3.10k|  GParamSpec key, *pspec;
 1028|       |
 1029|  3.10k|  key.owner_type = owner_type;
 1030|  3.10k|  key.name = (gchar*) param_name;
 1031|  3.10k|  if (walk_ancestors)
  ------------------
  |  Branch (1031:7): [True: 3.07k, False: 35]
  ------------------
 1032|  3.07k|    do
 1033|  9.17k|      {
 1034|  9.17k|	pspec = g_hash_table_lookup (hash_table, &key);
 1035|  9.17k|	if (pspec)
  ------------------
  |  Branch (1035:6): [True: 3.03k, False: 6.13k]
  ------------------
 1036|  3.03k|	  return pspec;
 1037|  6.13k|	key.owner_type = g_type_parent (key.owner_type);
 1038|  6.13k|      }
 1039|  6.13k|    while (key.owner_type);
  ------------------
  |  Branch (1039:12): [True: 6.10k, False: 34]
  ------------------
 1040|     35|  else
 1041|     35|    pspec = g_hash_table_lookup (hash_table, &key);
 1042|       |
 1043|     69|  if (!pspec && !is_canonical (param_name))
  ------------------
  |  Branch (1043:7): [True: 69, False: 0]
  |  Branch (1043:17): [True: 0, False: 69]
  ------------------
 1044|      0|    {
 1045|      0|      gchar *canonical;
 1046|       |
 1047|      0|      canonical = g_strdup (key.name);
 1048|      0|      canonicalize_key (canonical);
 1049|       |
 1050|       |      /* try canonicalized form */
 1051|      0|      key.name = canonical;
 1052|      0|      key.owner_type = owner_type;
 1053|       |
 1054|      0|      if (walk_ancestors)
  ------------------
  |  Branch (1054:11): [True: 0, False: 0]
  ------------------
 1055|      0|        do
 1056|      0|          {
 1057|      0|            pspec = g_hash_table_lookup (hash_table, &key);
 1058|      0|            if (pspec)
  ------------------
  |  Branch (1058:17): [True: 0, False: 0]
  ------------------
 1059|      0|              {
 1060|      0|                g_free (canonical);
 1061|      0|                return pspec;
 1062|      0|              }
 1063|      0|            key.owner_type = g_type_parent (key.owner_type);
 1064|      0|          }
 1065|      0|        while (key.owner_type);
  ------------------
  |  Branch (1065:16): [True: 0, False: 0]
  ------------------
 1066|      0|      else
 1067|      0|        pspec = g_hash_table_lookup (hash_table, &key);
 1068|       |
 1069|      0|      g_free (canonical);
 1070|      0|    }
 1071|       |
 1072|     69|  return pspec;
 1073|     69|}
gparam.c:pool_depth_list_for_interface:
 1276|    363|{
 1277|    363|  GParamSpec *pspec = value;
 1278|    363|  gpointer *data = user_data;
 1279|    363|  GSList **slists = data[0];
 1280|    363|  GType owner_type = (GType) data[1];
 1281|    363|  GHashTable *ht = data[2];
 1282|    363|  int *count = data[3];
 1283|       |
 1284|    363|  if (pspec->owner_type == owner_type &&
  ------------------
  |  Branch (1284:7): [True: 0, False: 363]
  ------------------
 1285|      0|      should_list_pspec (pspec, owner_type, ht))
  ------------------
  |  Branch (1285:7): [True: 0, False: 0]
  ------------------
 1286|      0|    {
 1287|      0|      slists[0] = g_slist_prepend (slists[0], pspec);
 1288|      0|      *count = *count + 1;
 1289|      0|    }
 1290|    363|}
gparam.c:param_spec_generic_class_init:
 1370|      5|{
 1371|      5|  GParamSpecClass *class = g_class;
 1372|      5|  ParamSpecClassInfo *info = class_data;
 1373|       |
 1374|      5|  class->value_type = info->value_type;
 1375|      5|  if (info->finalize)
  ------------------
  |  Branch (1375:7): [True: 1, False: 4]
  ------------------
 1376|      1|    class->finalize = info->finalize;			/* optional */
 1377|      5|  class->value_set_default = info->value_set_default;
 1378|      5|  if (info->value_validate)
  ------------------
  |  Branch (1378:7): [True: 5, False: 0]
  ------------------
 1379|      5|    class->value_validate = info->value_validate;	/* optional */
 1380|      5|  class->values_cmp = info->values_cmp;
 1381|      5|  g_free (class_data);
 1382|      5|}

_g_param_spec_types_init:
 1197|      2|{
 1198|      2|  const guint n_types = 23;
 1199|      2|  GType type, *spec_types;
 1200|      2|#ifndef G_DISABLE_ASSERT
 1201|      2|  GType *spec_types_bound;
 1202|      2|#endif
 1203|       |
 1204|      2|  g_param_spec_types = g_new0 (GType, n_types);
  ------------------
  |  |  307|      2|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|      2|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      2|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      2|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      2|	  gpointer __p;						\
  |  |  |  |  239|      2|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  240|      2|	    __p = g_##func (__n);				\
  |  |  |  |  241|      2|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      2|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      2|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      2|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 2]
  |  |  |  |  |  Branch (242:26): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      2|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      2|	  else							\
  |  |  |  |  245|      2|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      2|	  __p;							\
  |  |  |  |  247|      2|	}))
  |  |  ------------------
  ------------------
 1205|      2|  spec_types = g_param_spec_types;
 1206|      2|#ifndef G_DISABLE_ASSERT
 1207|      2|  spec_types_bound = g_param_spec_types + n_types;
 1208|      2|#endif
 1209|       |  
 1210|       |  /* G_TYPE_PARAM_CHAR
 1211|       |   */
 1212|      2|  {
 1213|      2|    const GParamSpecTypeInfo pspec_info = {
 1214|      2|      sizeof (GParamSpecChar),	/* instance_size */
 1215|      2|      16,			/* n_preallocs */
 1216|      2|      param_char_init,		/* instance_init */
 1217|      2|      G_TYPE_CHAR,		/* value_type */
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1218|      2|      NULL,			/* finalize */
 1219|      2|      param_char_set_default,	/* value_set_default */
 1220|      2|      param_char_validate,	/* value_validate */
 1221|      2|      param_int_values_cmp,	/* values_cmp */
 1222|      2|    };
 1223|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamChar"), &pspec_info);
 1224|      2|    *spec_types++ = type;
 1225|      2|    g_assert (type == G_TYPE_PARAM_CHAR);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1226|      2|  }
 1227|       |  
 1228|       |  /* G_TYPE_PARAM_UCHAR
 1229|       |   */
 1230|      2|  {
 1231|      2|    const GParamSpecTypeInfo pspec_info = {
 1232|      2|      sizeof (GParamSpecUChar), /* instance_size */
 1233|      2|      16,                       /* n_preallocs */
 1234|      2|      param_uchar_init,         /* instance_init */
 1235|      2|      G_TYPE_UCHAR,		/* value_type */
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1236|      2|      NULL,			/* finalize */
 1237|      2|      param_uchar_set_default,	/* value_set_default */
 1238|      2|      param_uchar_validate,	/* value_validate */
 1239|      2|      param_uint_values_cmp,	/* values_cmp */
 1240|      2|    };
 1241|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamUChar"), &pspec_info);
 1242|      2|    *spec_types++ = type;
 1243|      2|    g_assert (type == G_TYPE_PARAM_UCHAR);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1244|      2|  }
 1245|       |  
 1246|       |  /* G_TYPE_PARAM_BOOLEAN
 1247|       |   */
 1248|      2|  {
 1249|      2|    const GParamSpecTypeInfo pspec_info = {
 1250|      2|      sizeof (GParamSpecBoolean), /* instance_size */
 1251|      2|      16,                         /* n_preallocs */
 1252|      2|      NULL,			  /* instance_init */
 1253|      2|      G_TYPE_BOOLEAN,             /* value_type */
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1254|      2|      NULL,                       /* finalize */
 1255|      2|      param_boolean_set_default,  /* value_set_default */
 1256|      2|      param_boolean_validate,     /* value_validate */
 1257|      2|      param_int_values_cmp,       /* values_cmp */
 1258|      2|    };
 1259|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamBoolean"), &pspec_info);
 1260|      2|    *spec_types++ = type;
 1261|      2|    g_assert (type == G_TYPE_PARAM_BOOLEAN);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1262|      2|  }
 1263|       |  
 1264|       |  /* G_TYPE_PARAM_INT
 1265|       |   */
 1266|      2|  {
 1267|      2|    const GParamSpecTypeInfo pspec_info = {
 1268|      2|      sizeof (GParamSpecInt),   /* instance_size */
 1269|      2|      16,                       /* n_preallocs */
 1270|      2|      param_int_init,           /* instance_init */
 1271|      2|      G_TYPE_INT,		/* value_type */
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1272|      2|      NULL,			/* finalize */
 1273|      2|      param_int_set_default,	/* value_set_default */
 1274|      2|      param_int_validate,	/* value_validate */
 1275|      2|      param_int_values_cmp,	/* values_cmp */
 1276|      2|    };
 1277|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamInt"), &pspec_info);
 1278|      2|    *spec_types++ = type;
 1279|      2|    g_assert (type == G_TYPE_PARAM_INT);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1280|      2|  }
 1281|       |  
 1282|       |  /* G_TYPE_PARAM_UINT
 1283|       |   */
 1284|      2|  {
 1285|      2|    const GParamSpecTypeInfo pspec_info = {
 1286|      2|      sizeof (GParamSpecUInt),  /* instance_size */
 1287|      2|      16,                       /* n_preallocs */
 1288|      2|      param_uint_init,          /* instance_init */
 1289|      2|      G_TYPE_UINT,		/* value_type */
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1290|      2|      NULL,			/* finalize */
 1291|      2|      param_uint_set_default,	/* value_set_default */
 1292|      2|      param_uint_validate,	/* value_validate */
 1293|      2|      param_uint_values_cmp,	/* values_cmp */
 1294|      2|    };
 1295|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamUInt"), &pspec_info);
 1296|      2|    *spec_types++ = type;
 1297|      2|    g_assert (type == G_TYPE_PARAM_UINT);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1298|      2|  }
 1299|       |  
 1300|       |  /* G_TYPE_PARAM_LONG
 1301|       |   */
 1302|      2|  {
 1303|      2|    const GParamSpecTypeInfo pspec_info = {
 1304|      2|      sizeof (GParamSpecLong),  /* instance_size */
 1305|      2|      16,                       /* n_preallocs */
 1306|      2|      param_long_init,          /* instance_init */
 1307|      2|      G_TYPE_LONG,		/* value_type */
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1308|      2|      NULL,			/* finalize */
 1309|      2|      param_long_set_default,	/* value_set_default */
 1310|      2|      param_long_validate,	/* value_validate */
 1311|      2|      param_long_values_cmp,	/* values_cmp */
 1312|      2|    };
 1313|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamLong"), &pspec_info);
 1314|      2|    *spec_types++ = type;
 1315|      2|    g_assert (type == G_TYPE_PARAM_LONG);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1316|      2|  }
 1317|       |  
 1318|       |  /* G_TYPE_PARAM_ULONG
 1319|       |   */
 1320|      2|  {
 1321|      2|    const GParamSpecTypeInfo pspec_info = {
 1322|      2|      sizeof (GParamSpecULong), /* instance_size */
 1323|      2|      16,                       /* n_preallocs */
 1324|      2|      param_ulong_init,         /* instance_init */
 1325|      2|      G_TYPE_ULONG,		/* value_type */
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1326|      2|      NULL,			/* finalize */
 1327|      2|      param_ulong_set_default,	/* value_set_default */
 1328|      2|      param_ulong_validate,	/* value_validate */
 1329|      2|      param_ulong_values_cmp,	/* values_cmp */
 1330|      2|    };
 1331|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamULong"), &pspec_info);
 1332|      2|    *spec_types++ = type;
 1333|      2|    g_assert (type == G_TYPE_PARAM_ULONG);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1334|      2|  }
 1335|       |
 1336|       |  /* G_TYPE_PARAM_INT64
 1337|       |   */
 1338|      2|  {
 1339|      2|    const GParamSpecTypeInfo pspec_info = {
 1340|      2|      sizeof (GParamSpecInt64),  /* instance_size */
 1341|      2|      16,                       /* n_preallocs */
 1342|      2|      param_int64_init,         /* instance_init */
 1343|      2|      G_TYPE_INT64,		/* value_type */
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1344|      2|      NULL,			/* finalize */
 1345|      2|      param_int64_set_default,	/* value_set_default */
 1346|      2|      param_int64_validate,	/* value_validate */
 1347|      2|      param_int64_values_cmp,	/* values_cmp */
 1348|      2|    };
 1349|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamInt64"), &pspec_info);
 1350|      2|    *spec_types++ = type;
 1351|      2|    g_assert (type == G_TYPE_PARAM_INT64);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1352|      2|  }
 1353|       |  
 1354|       |  /* G_TYPE_PARAM_UINT64
 1355|       |   */
 1356|      2|  {
 1357|      2|    const GParamSpecTypeInfo pspec_info = {
 1358|      2|      sizeof (GParamSpecUInt64), /* instance_size */
 1359|      2|      16,                       /* n_preallocs */
 1360|      2|      param_uint64_init,        /* instance_init */
 1361|      2|      G_TYPE_UINT64,		/* value_type */
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1362|      2|      NULL,			/* finalize */
 1363|      2|      param_uint64_set_default,	/* value_set_default */
 1364|      2|      param_uint64_validate,	/* value_validate */
 1365|      2|      param_uint64_values_cmp,	/* values_cmp */
 1366|      2|    };
 1367|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamUInt64"), &pspec_info);
 1368|      2|    *spec_types++ = type;
 1369|      2|    g_assert (type == G_TYPE_PARAM_UINT64);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1370|      2|  }
 1371|       |
 1372|       |  /* G_TYPE_PARAM_UNICHAR
 1373|       |   */
 1374|      2|  {
 1375|      2|    const GParamSpecTypeInfo pspec_info = {
 1376|      2|      sizeof (GParamSpecUnichar), /* instance_size */
 1377|      2|      16,                        /* n_preallocs */
 1378|      2|      param_unichar_init,	 /* instance_init */
 1379|      2|      G_TYPE_UINT,		 /* value_type */
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1380|      2|      NULL,			 /* finalize */
 1381|      2|      param_unichar_set_default, /* value_set_default */
 1382|      2|      param_unichar_validate,	 /* value_validate */
 1383|      2|      param_unichar_values_cmp,	 /* values_cmp */
 1384|      2|    };
 1385|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamUnichar"), &pspec_info);
 1386|      2|    *spec_types++ = type;
 1387|      2|    g_assert (type == G_TYPE_PARAM_UNICHAR);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1388|      2|  }
 1389|       |
 1390|       | /* G_TYPE_PARAM_ENUM
 1391|       |   */
 1392|      2|  {
 1393|      2|    const GParamSpecTypeInfo pspec_info = {
 1394|      2|      sizeof (GParamSpecEnum),  /* instance_size */
 1395|      2|      16,                       /* n_preallocs */
 1396|      2|      param_enum_init,          /* instance_init */
 1397|      2|      G_TYPE_ENUM,		/* value_type */
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1398|      2|      param_enum_finalize,	/* finalize */
 1399|      2|      param_enum_set_default,	/* value_set_default */
 1400|      2|      param_enum_validate,	/* value_validate */
 1401|      2|      param_long_values_cmp,	/* values_cmp */
 1402|      2|    };
 1403|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamEnum"), &pspec_info);
 1404|      2|    *spec_types++ = type;
 1405|      2|    g_assert (type == G_TYPE_PARAM_ENUM);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1406|      2|  }
 1407|       |  
 1408|       |  /* G_TYPE_PARAM_FLAGS
 1409|       |   */
 1410|      2|  {
 1411|      2|    const GParamSpecTypeInfo pspec_info = {
 1412|      2|      sizeof (GParamSpecFlags),	/* instance_size */
 1413|      2|      16,			/* n_preallocs */
 1414|      2|      param_flags_init,		/* instance_init */
 1415|      2|      G_TYPE_FLAGS,		/* value_type */
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1416|      2|      param_flags_finalize,	/* finalize */
 1417|      2|      param_flags_set_default,	/* value_set_default */
 1418|      2|      param_flags_validate,	/* value_validate */
 1419|      2|      param_ulong_values_cmp,	/* values_cmp */
 1420|      2|    };
 1421|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamFlags"), &pspec_info);
 1422|      2|    *spec_types++ = type;
 1423|      2|    g_assert (type == G_TYPE_PARAM_FLAGS);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1424|      2|  }
 1425|       |  
 1426|       |  /* G_TYPE_PARAM_FLOAT
 1427|       |   */
 1428|      2|  {
 1429|      2|    const GParamSpecTypeInfo pspec_info = {
 1430|      2|      sizeof (GParamSpecFloat), /* instance_size */
 1431|      2|      16,                       /* n_preallocs */
 1432|      2|      param_float_init,         /* instance_init */
 1433|      2|      G_TYPE_FLOAT,		/* value_type */
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1434|      2|      NULL,			/* finalize */
 1435|      2|      param_float_set_default,	/* value_set_default */
 1436|      2|      param_float_validate,	/* value_validate */
 1437|      2|      param_float_values_cmp,	/* values_cmp */
 1438|      2|    };
 1439|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamFloat"), &pspec_info);
 1440|      2|    *spec_types++ = type;
 1441|      2|    g_assert (type == G_TYPE_PARAM_FLOAT);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1442|      2|  }
 1443|       |  
 1444|       |  /* G_TYPE_PARAM_DOUBLE
 1445|       |   */
 1446|      2|  {
 1447|      2|    const GParamSpecTypeInfo pspec_info = {
 1448|      2|      sizeof (GParamSpecDouble),	/* instance_size */
 1449|      2|      16,				/* n_preallocs */
 1450|      2|      param_double_init,		/* instance_init */
 1451|      2|      G_TYPE_DOUBLE,			/* value_type */
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1452|      2|      NULL,				/* finalize */
 1453|      2|      param_double_set_default,		/* value_set_default */
 1454|      2|      param_double_validate,		/* value_validate */
 1455|      2|      param_double_values_cmp,		/* values_cmp */
 1456|      2|    };
 1457|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamDouble"), &pspec_info);
 1458|      2|    *spec_types++ = type;
 1459|      2|    g_assert (type == G_TYPE_PARAM_DOUBLE);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1460|      2|  }
 1461|       |  
 1462|       |  /* G_TYPE_PARAM_STRING
 1463|       |   */
 1464|      2|  {
 1465|      2|    const GParamSpecTypeInfo pspec_info = {
 1466|      2|      sizeof (GParamSpecString),	/* instance_size */
 1467|      2|      16,				/* n_preallocs */
 1468|      2|      param_string_init,		/* instance_init */
 1469|      2|      G_TYPE_STRING,			/* value_type */
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1470|      2|      param_string_finalize,		/* finalize */
 1471|      2|      param_string_set_default,		/* value_set_default */
 1472|      2|      param_string_validate,		/* value_validate */
 1473|      2|      param_string_values_cmp,		/* values_cmp */
 1474|      2|    };
 1475|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamString"), &pspec_info);
 1476|      2|    *spec_types++ = type;
 1477|      2|    g_assert (type == G_TYPE_PARAM_STRING);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1478|      2|  }
 1479|       |  
 1480|       |  /* G_TYPE_PARAM_PARAM
 1481|       |   */
 1482|      2|  {
 1483|      2|    const GParamSpecTypeInfo pspec_info = {
 1484|      2|      sizeof (GParamSpecParam),	/* instance_size */
 1485|      2|      16,			/* n_preallocs */
 1486|      2|      param_param_init,		/* instance_init */
 1487|      2|      G_TYPE_PARAM,		/* value_type */
  ------------------
  |  |  172|      2|#define G_TYPE_PARAM			G_TYPE_MAKE_FUNDAMENTAL (19)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1488|      2|      NULL,			/* finalize */
 1489|      2|      param_param_set_default,	/* value_set_default */
 1490|      2|      param_param_validate,	/* value_validate */
 1491|      2|      param_pointer_values_cmp,	/* values_cmp */
 1492|      2|    };
 1493|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamParam"), &pspec_info);
 1494|      2|    *spec_types++ = type;
 1495|      2|    g_assert (type == G_TYPE_PARAM_PARAM);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1496|      2|  }
 1497|       |  
 1498|       |  /* G_TYPE_PARAM_BOXED
 1499|       |   */
 1500|      2|  {
 1501|      2|    const GParamSpecTypeInfo pspec_info = {
 1502|      2|      sizeof (GParamSpecBoxed),	/* instance_size */
 1503|      2|      4,			/* n_preallocs */
 1504|      2|      param_boxed_init,		/* instance_init */
 1505|      2|      G_TYPE_BOXED,		/* value_type */
  ------------------
  |  |  166|      2|#define G_TYPE_BOXED			G_TYPE_MAKE_FUNDAMENTAL (18)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1506|      2|      NULL,			/* finalize */
 1507|      2|      param_boxed_set_default,	/* value_set_default */
 1508|      2|      param_boxed_validate,	/* value_validate */
 1509|      2|      param_boxed_values_cmp,	/* values_cmp */
 1510|      2|    };
 1511|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamBoxed"), &pspec_info);
 1512|      2|    *spec_types++ = type;
 1513|      2|    g_assert (type == G_TYPE_PARAM_BOXED);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1514|      2|  }
 1515|       |
 1516|       |  /* G_TYPE_PARAM_POINTER
 1517|       |   */
 1518|      2|  {
 1519|      2|    const GParamSpecTypeInfo pspec_info = {
 1520|      2|      sizeof (GParamSpecPointer),  /* instance_size */
 1521|      2|      0,                           /* n_preallocs */
 1522|      2|      param_pointer_init,	   /* instance_init */
 1523|      2|      G_TYPE_POINTER,  		   /* value_type */
  ------------------
  |  |  160|      2|#define G_TYPE_POINTER			G_TYPE_MAKE_FUNDAMENTAL (17)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1524|      2|      NULL,			   /* finalize */
 1525|      2|      param_pointer_set_default,   /* value_set_default */
 1526|      2|      param_pointer_validate,	   /* value_validate */
 1527|      2|      param_pointer_values_cmp,	   /* values_cmp */
 1528|      2|    };
 1529|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamPointer"), &pspec_info);
 1530|      2|    *spec_types++ = type;
 1531|      2|    g_assert (type == G_TYPE_PARAM_POINTER);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1532|      2|  }
 1533|       |  
 1534|       |  /* G_TYPE_PARAM_VALUE_ARRAY
 1535|       |   */
 1536|      2|  {
 1537|      2|    /* const */ GParamSpecTypeInfo pspec_info = {
 1538|      2|      sizeof (GParamSpecValueArray),	/* instance_size */
 1539|      2|      0,				/* n_preallocs */
 1540|      2|      param_value_array_init,		/* instance_init */
 1541|      2|      0xdeadbeef,			/* value_type, assigned further down */
 1542|      2|      param_value_array_finalize,	/* finalize */
 1543|      2|      param_value_array_set_default,	/* value_set_default */
 1544|      2|      param_value_array_validate,	/* value_validate */
 1545|      2|      param_value_array_values_cmp,	/* values_cmp */
 1546|      2|    };
 1547|      2|    pspec_info.value_type = G_TYPE_VALUE_ARRAY;
  ------------------
  |  |   38|      2|#define G_TYPE_VALUE_ARRAY (g_value_array_get_type ()) GLIB_DEPRECATED_MACRO_IN_2_32_FOR(G_TYPE_ARRAY)
  ------------------
 1548|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamValueArray"), &pspec_info);
 1549|      2|    *spec_types++ = type;
 1550|      2|    g_assert (type == G_TYPE_PARAM_VALUE_ARRAY);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1551|      2|  }
 1552|       |
 1553|       |  /* G_TYPE_PARAM_OBJECT
 1554|       |   */
 1555|      2|  {
 1556|      2|    const GParamSpecTypeInfo pspec_info = {
 1557|      2|      sizeof (GParamSpecObject), /* instance_size */
 1558|      2|      16,                        /* n_preallocs */
 1559|      2|      param_object_init,	 /* instance_init */
 1560|      2|      G_TYPE_OBJECT,		 /* value_type */
  ------------------
  |  |  178|      2|#define G_TYPE_OBJECT			G_TYPE_MAKE_FUNDAMENTAL (20)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1561|      2|      NULL,			 /* finalize */
 1562|      2|      param_object_set_default,	 /* value_set_default */
 1563|      2|      param_object_validate,	 /* value_validate */
 1564|      2|      param_object_values_cmp,	 /* values_cmp */
 1565|      2|    };
 1566|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamObject"), &pspec_info);
 1567|      2|    *spec_types++ = type;
 1568|      2|    g_assert (type == G_TYPE_PARAM_OBJECT);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1569|      2|  }
 1570|       |
 1571|       |  /* G_TYPE_PARAM_OVERRIDE
 1572|       |   */
 1573|      2|  {
 1574|      2|    const GParamSpecTypeInfo pspec_info = {
 1575|      2|      sizeof (GParamSpecOverride), /* instance_size */
 1576|      2|      16,                        /* n_preallocs */
 1577|      2|      param_override_init,	 /* instance_init */
 1578|      2|      G_TYPE_NONE,		 /* value_type */
  ------------------
  |  |   62|      2|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1579|      2|      param_override_finalize,	 /* finalize */
 1580|      2|      param_override_set_default, /* value_set_default */
 1581|      2|      param_override_validate,	  /* value_validate */
 1582|      2|      param_override_values_cmp,  /* values_cmp */
 1583|      2|    };
 1584|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamOverride"), &pspec_info);
 1585|      2|    *spec_types++ = type;
 1586|      2|    g_assert (type == G_TYPE_PARAM_OVERRIDE);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1587|      2|  }
 1588|       |
 1589|       |  /* G_TYPE_PARAM_GTYPE
 1590|       |   */
 1591|      2|  {
 1592|      2|    GParamSpecTypeInfo pspec_info = {
 1593|      2|      sizeof (GParamSpecGType),	/* instance_size */
 1594|      2|      0,			/* n_preallocs */
 1595|      2|      param_gtype_init,		/* instance_init */
 1596|      2|      0xdeadbeef,		/* value_type, assigned further down */
 1597|      2|      NULL,			/* finalize */
 1598|      2|      param_gtype_set_default,	/* value_set_default */
 1599|      2|      param_gtype_validate,	/* value_validate */
 1600|      2|      param_gtype_values_cmp,	/* values_cmp */
 1601|      2|    };
 1602|      2|    pspec_info.value_type = G_TYPE_GTYPE;
  ------------------
  |  |  166|      2|#define	G_TYPE_GTYPE			 (g_gtype_get_type())
  ------------------
 1603|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamGType"), &pspec_info);
 1604|      2|    *spec_types++ = type;
 1605|      2|    g_assert (type == G_TYPE_PARAM_GTYPE);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1606|      2|  }
 1607|       |
 1608|       |  /* G_TYPE_PARAM_VARIANT
 1609|       |   */
 1610|      2|  {
 1611|      2|    const GParamSpecTypeInfo pspec_info = {
 1612|      2|      sizeof (GParamSpecVariant), /* instance_size */
 1613|      2|      0,                          /* n_preallocs */
 1614|      2|      param_variant_init,         /* instance_init */
 1615|      2|      G_TYPE_VARIANT,             /* value_type */
  ------------------
  |  |  196|      2|#define	G_TYPE_VARIANT                  G_TYPE_MAKE_FUNDAMENTAL (21)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1616|      2|      param_variant_finalize,     /* finalize */
 1617|      2|      param_variant_set_default,  /* value_set_default */
 1618|      2|      param_variant_validate,     /* value_validate */
 1619|      2|      param_variant_values_cmp,   /* values_cmp */
 1620|      2|    };
 1621|      2|    type = g_param_type_register_static (g_intern_static_string ("GParamVariant"), &pspec_info);
 1622|      2|    *spec_types++ = type;
 1623|      2|    g_assert (type == G_TYPE_PARAM_VARIANT);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1624|      2|  }
 1625|       |
 1626|      2|  g_assert (spec_types == spec_types_bound);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1627|      2|}
g_param_spec_uint:
 1825|      8|{
 1826|      8|  GParamSpecUInt *uspec;
 1827|       |
 1828|      8|  g_return_val_if_fail (default_value >= minimum && default_value <= maximum, NULL);
  ------------------
  |  |  643|      8|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      8|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      8|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      8|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      8| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      8|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      8|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     24|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 8, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      8|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      8|   else                                         \
  |  |  |  |  |  | 1021|      8|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      8|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      8|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      8|      { } \
  |  |  646|      8|    else \
  |  |  647|      8|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      8|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      8|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1829|       |
 1830|      8|  uspec = g_param_spec_internal (G_TYPE_PARAM_UINT,
  ------------------
  |  |  131|      8|#define	G_TYPE_PARAM_UINT		   (g_param_spec_types[4])
  ------------------
 1831|      8|				 name,
 1832|      8|				 nick,
 1833|      8|				 blurb,
 1834|      8|				 flags);
 1835|      8|  if (uspec == NULL)
  ------------------
  |  Branch (1835:7): [True: 0, False: 8]
  ------------------
 1836|      0|    return NULL;
 1837|       |  
 1838|      8|  uspec->minimum = minimum;
 1839|      8|  uspec->maximum = maximum;
 1840|      8|  uspec->default_value = default_value;
 1841|       |  
 1842|      8|  return G_PARAM_SPEC (uspec);
  ------------------
  |  |   45|      8|#define G_PARAM_SPEC(pspec)		(G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM, GParamSpec))
  |  |  ------------------
  |  |  |  |  484|      8|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      8|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1843|      8|}
g_param_spec_uint64:
 2003|      5|{
 2004|      5|  GParamSpecUInt64 *uspec;
 2005|       |  
 2006|      5|  g_return_val_if_fail (default_value >= minimum && default_value <= maximum, NULL);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     15|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2007|       |  
 2008|      5|  uspec = g_param_spec_internal (G_TYPE_PARAM_UINT64,
  ------------------
  |  |  223|      5|#define	G_TYPE_PARAM_UINT64		   (g_param_spec_types[8])
  ------------------
 2009|      5|				 name,
 2010|      5|				 nick,
 2011|      5|				 blurb,
 2012|      5|				 flags);
 2013|      5|  if (uspec == NULL)
  ------------------
  |  Branch (2013:7): [True: 0, False: 5]
  ------------------
 2014|      0|    return NULL;
 2015|       |  
 2016|      5|  uspec->minimum = minimum;
 2017|      5|  uspec->maximum = maximum;
 2018|      5|  uspec->default_value = default_value;
 2019|       |  
 2020|      5|  return G_PARAM_SPEC (uspec);
  ------------------
  |  |   45|      5|#define G_PARAM_SPEC(pspec)		(G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM, GParamSpec))
  |  |  ------------------
  |  |  |  |  484|      5|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      5|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2021|      5|}
g_param_spec_string:
 2272|     15|{
 2273|     15|  GParamSpecString *sspec = g_param_spec_internal (G_TYPE_PARAM_STRING,
  ------------------
  |  |  361|     15|#define	G_TYPE_PARAM_STRING		   (g_param_spec_types[14])
  ------------------
 2274|     15|						   name,
 2275|     15|						   nick,
 2276|     15|						   blurb,
 2277|     15|						   flags);
 2278|     15|  if (sspec == NULL)
  ------------------
  |  Branch (2278:7): [True: 0, False: 15]
  ------------------
 2279|      0|    return NULL;
 2280|       |
 2281|     15|  g_free (sspec->default_value);
 2282|     15|  sspec->default_value = g_strdup (default_value);
 2283|       |  
 2284|     15|  return G_PARAM_SPEC (sspec);
  ------------------
  |  |   45|     15|#define G_PARAM_SPEC(pspec)		(G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM, GParamSpec))
  |  |  ------------------
  |  |  |  |  484|     15|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|     15|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2285|     15|}
g_param_spec_pointer:
 2386|      1|{
 2387|      1|  GParamSpecPointer *pspec;
 2388|       |  
 2389|      1|  pspec = g_param_spec_internal (G_TYPE_PARAM_POINTER,
  ------------------
  |  |  430|      1|#define	G_TYPE_PARAM_POINTER		   (g_param_spec_types[17])
  ------------------
 2390|      1|				 name,
 2391|      1|				 nick,
 2392|      1|				 blurb,
 2393|      1|				 flags);
 2394|      1|  if (pspec == NULL)
  ------------------
  |  Branch (2394:7): [True: 0, False: 1]
  ------------------
 2395|      0|    return NULL;
 2396|       |
 2397|      1|  return G_PARAM_SPEC (pspec);
  ------------------
  |  |   45|      1|#define G_PARAM_SPEC(pspec)		(G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM, GParamSpec))
  |  |  ------------------
  |  |  |  |  484|      1|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      1|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2398|      1|}
g_param_spec_object:
 2508|      6|{
 2509|      6|  GParamSpecObject *ospec;
 2510|       |  
 2511|      6|  g_return_val_if_fail (g_type_is_a (object_type, G_TYPE_OBJECT), NULL);
  ------------------
  |  |  643|      6|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      6|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      6|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      6|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      6| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      6|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      6|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      6|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 6, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      6|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      6|   else                                         \
  |  |  |  |  |  | 1021|      6|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      6|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      6|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      6|      { } \
  |  |  646|      6|    else \
  |  |  647|      6|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      6|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      6|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2512|       |  
 2513|      6|  ospec = g_param_spec_internal (G_TYPE_PARAM_OBJECT,
  ------------------
  |  |  482|      6|#define	G_TYPE_PARAM_OBJECT		   (g_param_spec_types[19])
  ------------------
 2514|      6|				 name,
 2515|      6|				 nick,
 2516|      6|				 blurb,
 2517|      6|				 flags);
 2518|      6|  if (ospec == NULL)
  ------------------
  |  Branch (2518:7): [True: 0, False: 6]
  ------------------
 2519|      0|    return NULL;
 2520|       |
 2521|      6|  G_PARAM_SPEC (ospec)->value_type = object_type;
  ------------------
  |  |   45|      6|#define G_PARAM_SPEC(pspec)		(G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM, GParamSpec))
  |  |  ------------------
  |  |  |  |  484|      6|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      6|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2522|       |  
 2523|      6|  return G_PARAM_SPEC (ospec);
  ------------------
  |  |   45|      6|#define G_PARAM_SPEC(pspec)		(G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM, GParamSpec))
  |  |  ------------------
  |  |  |  |  484|      6|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      6|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2524|      6|}
gparamspecs.c:param_uint_init:
  181|      8|{
  182|      8|  GParamSpecUInt *uspec = G_PARAM_SPEC_UINT (pspec);
  ------------------
  |  |  147|      8|#define G_PARAM_SPEC_UINT(pspec)           (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UINT, GParamSpecUInt))
  |  |  ------------------
  |  |  |  |  484|      8|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      8|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  183|       |  
  184|      8|  uspec->minimum = 0;
  185|      8|  uspec->maximum = 0xffffffff;
  186|      8|  uspec->default_value = 0;
  187|      8|}
gparamspecs.c:param_uint64_init:
  350|      5|{
  351|      5|  GParamSpecUInt64 *uspec = G_PARAM_SPEC_UINT64 (pspec);
  ------------------
  |  |  239|      5|#define G_PARAM_SPEC_UINT64(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UINT64, GParamSpecUInt64))
  |  |  ------------------
  |  |  |  |  484|      5|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|      5|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  352|       |  
  353|      5|  uspec->minimum = 0;
  354|      5|  uspec->maximum = G_MAXUINT64;
  ------------------
  |  |  101|      5|#define G_MAXUINT64	G_GUINT64_CONSTANT(0xffffffffffffffff)
  |  |  ------------------
  |  |  |  |   65|      5|#define G_GUINT64_CONSTANT(val)	(val##UL)
  |  |  ------------------
  ------------------
  355|      5|  uspec->default_value = 0;
  356|      5|}
gparamspecs.c:param_string_init:
  609|     15|{
  610|     15|  GParamSpecString *sspec = G_PARAM_SPEC_STRING (pspec);
  ------------------
  |  |  377|     15|#define G_PARAM_SPEC_STRING(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_STRING, GParamSpecString))
  |  |  ------------------
  |  |  |  |  484|     15|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|     15|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  611|       |  
  612|     15|  sspec->default_value = NULL;
  613|     15|  sspec->cset_first = NULL;
  614|     15|  sspec->cset_nth = NULL;
  615|     15|  sspec->substitutor = '_';
  616|     15|  sspec->null_fold_if_empty = FALSE;
  ------------------
  |  |  814|     15|#define	FALSE	(0)
  ------------------
  617|     15|  sspec->ensure_non_null = FALSE;
  ------------------
  |  |  814|     15|#define	FALSE	(0)
  ------------------
  618|     15|}
gparamspecs.c:param_pointer_init:
  786|      1|{
  787|       |  /* GParamSpecPointer *spec = G_PARAM_SPEC_POINTER (pspec); */
  788|      1|}
gparamspecs.c:param_pointer_set_default:
  793|      1|{
  794|       |  value->data[0].v_pointer = NULL;
  795|      1|}
gparamspecs.c:param_pointer_validate:
  800|    832|{
  801|       |  /* GParamSpecPointer *spec = G_PARAM_SPEC_POINTER (pspec); */
  802|    832|  guint changed = 0;
  803|       |  
  804|    832|  return changed;
  805|    832|}
gparamspecs.c:param_object_init:
  973|      6|{
  974|       |  /* GParamSpecObject *ospec = G_PARAM_SPEC_OBJECT (pspec); */
  975|      6|}
gparamspecs.c:param_object_set_default:
  980|      5|{
  981|       |  value->data[0].v_pointer = NULL;
  982|      5|}
gparamspecs.c:param_object_validate:
  987|   434k|{
  988|   434k|  GParamSpecObject *ospec = G_PARAM_SPEC_OBJECT (pspec);
  ------------------
  |  |  498|   434k|#define G_PARAM_SPEC_OBJECT(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_OBJECT, GParamSpecObject))
  |  |  ------------------
  |  |  |  |  484|   434k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   434k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  989|   434k|  GObject *object = value->data[0].v_pointer;
  990|   434k|  guint changed = 0;
  991|       |  
  992|   434k|  if (object && !g_value_type_compatible (G_OBJECT_TYPE (object), G_PARAM_SPEC_VALUE_TYPE (ospec)))
  ------------------
  |  |  100|      0|#define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
  |  |  ------------------
  |  |  |  |  602|      0|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (object && !g_value_type_compatible (G_OBJECT_TYPE (object), G_PARAM_SPEC_VALUE_TYPE (ospec)))
  ------------------
  |  |  103|      0|#define	G_PARAM_SPEC_VALUE_TYPE(pspec)	(G_PARAM_SPEC (pspec)->value_type)
  |  |  ------------------
  |  |  |  |   45|      0|#define G_PARAM_SPEC(pspec)		(G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM, GParamSpec))
  |  |  |  |  ------------------
  |  |  |  |  |  |  484|      0|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 2300|      0|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (992:7): [True: 0, False: 434k]
  |  Branch (992:17): [True: 0, False: 0]
  ------------------
  993|      0|    {
  994|      0|      g_object_unref (object);
  995|      0|      value->data[0].v_pointer = NULL;
  996|      0|      changed++;
  997|      0|    }
  998|       |  
  999|   434k|  return changed;
 1000|   434k|}

g_signal_is_valid_name:
  386|      5|{
  387|       |  /* FIXME: We allow this, against our own documentation (the leading `-` is
  388|       |   * invalid), because GTK has historically used this. */
  389|      5|  if (g_str_equal (name, "-gtk-private-changed"))
  ------------------
  |  Branch (389:7): [True: 0, False: 5]
  ------------------
  390|      0|    return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  391|       |
  392|      5|  return g_param_spec_is_valid_name (name);
  393|      5|}
_g_signal_init:
  926|      2|{
  927|      2|  SIGNAL_LOCK ();
  ------------------
  |  |  328|      2|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|      2|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      2|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  928|      2|  if (!g_n_signal_nodes)
  ------------------
  |  Branch (928:7): [True: 2, False: 0]
  ------------------
  929|      2|    {
  930|       |      /* setup handler list binary searchable array hash table (in german, that'd be one word ;) */
  931|      2|      g_handler_list_bsa_ht = g_hash_table_new (g_direct_hash, NULL);
  932|      2|      g_signal_key_bsa = g_bsearch_array_create (&g_signal_key_bconfig);
  933|       |      
  934|       |      /* invalid (0) signal_id */
  935|      2|      g_n_signal_nodes = 1;
  936|      2|      g_signal_nodes = g_renew (SignalNode*, g_signal_nodes, g_n_signal_nodes);
  ------------------
  |  |  321|      2|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|      2|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|      2|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|      2|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|      2|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|      2|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  254|      2|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|      2|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  256|      2|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      2|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      2|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (256:14): [True: 0, False: 2]
  |  |  |  |  |  Branch (256:26): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  257|      2|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|      2|	  else							\
  |  |  |  |  259|      2|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|      2|	  __p;							\
  |  |  |  |  261|      2|	}))
  |  |  ------------------
  ------------------
  937|      2|      g_signal_nodes[0] = NULL;
  938|      2|      g_handlers = g_hash_table_new (handler_hash, handler_equal);
  939|      2|    }
  940|      2|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      2|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      2|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      2|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  941|      2|}
g_signal_new:
 1504|      5|{
 1505|      5|  va_list args;
 1506|      5|  guint signal_id;
 1507|       |
 1508|      5|  g_return_val_if_fail (signal_name != NULL, 0);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1509|       |  
 1510|      5|  va_start (args, n_params);
 1511|       |
 1512|      5|  signal_id = g_signal_new_valist (signal_name, itype, signal_flags,
 1513|      5|                                   class_offset ? g_signal_type_cclosure_new (itype, class_offset) : NULL,
  ------------------
  |  Branch (1513:36): [True: 4, False: 1]
  ------------------
 1514|      5|				   accumulator, accu_data, c_marshaller,
 1515|      5|                                   return_type, n_params, args);
 1516|       |
 1517|      5|  va_end (args);
 1518|       |
 1519|      5|  return signal_id;
 1520|      5|}
g_signal_newv:
 1701|      5|{
 1702|      5|  const gchar *name;
 1703|      5|  gchar *signal_name_copy = NULL;
 1704|      5|  guint signal_id, i;
 1705|      5|  SignalNode *node;
 1706|      5|  GSignalCMarshaller builtin_c_marshaller;
 1707|      5|  GSignalCVaMarshaller builtin_va_marshaller;
 1708|      5|  GSignalCVaMarshaller va_marshaller;
 1709|       |  
 1710|      5|  g_return_val_if_fail (signal_name != NULL, 0);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1711|      5|  g_return_val_if_fail (g_signal_is_valid_name (signal_name), 0);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1712|      5|  g_return_val_if_fail (G_TYPE_IS_INSTANTIATABLE (itype) || G_TYPE_IS_INTERFACE (itype), 0);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     10|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1713|      5|  if (n_params)
  ------------------
  |  Branch (1713:7): [True: 4, False: 1]
  ------------------
 1714|      5|    g_return_val_if_fail (param_types != NULL, 0);
  ------------------
  |  |  643|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      4|      { } \
  |  |  646|      4|    else \
  |  |  647|      4|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1715|      5|  g_return_val_if_fail ((return_type & G_SIGNAL_TYPE_STATIC_SCOPE) == 0, 0);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1716|      5|  if (return_type == (G_TYPE_NONE & ~G_SIGNAL_TYPE_STATIC_SCOPE))
  ------------------
  |  |   62|      5|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      5|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      5|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (return_type == (G_TYPE_NONE & ~G_SIGNAL_TYPE_STATIC_SCOPE))
  ------------------
  |  |  213|      5|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  ------------------
  |  |  |  | 2353|      5|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  ------------------
  ------------------
  |  Branch (1716:7): [True: 5, False: 0]
  ------------------
 1717|      5|    g_return_val_if_fail (accumulator == NULL, 0);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1718|      5|  if (!accumulator)
  ------------------
  |  Branch (1718:7): [True: 5, False: 0]
  ------------------
 1719|      5|    g_return_val_if_fail (accu_data == NULL, 0);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1720|      5|  g_return_val_if_fail ((signal_flags & G_SIGNAL_ACCUMULATOR_FIRST_RUN) == 0, 0);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1721|       |
 1722|      5|  if (!is_canonical (signal_name))
  ------------------
  |  Branch (1722:7): [True: 0, False: 5]
  ------------------
 1723|      0|    {
 1724|      0|      signal_name_copy = g_strdup (signal_name);
 1725|      0|      canonicalize_key (signal_name_copy);
 1726|      0|      name = signal_name_copy;
 1727|      0|    }
 1728|      5|  else
 1729|      5|    {
 1730|      5|      name = signal_name;
 1731|      5|    }
 1732|       |  
 1733|      5|  SIGNAL_LOCK ();
  ------------------
  |  |  328|      5|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|      5|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      5|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1734|       |  
 1735|      5|  signal_id = signal_id_lookup (name, itype);
 1736|      5|  node = LOOKUP_SIGNAL_NODE (signal_id);
 1737|      5|  if (node && !node->destroyed)
  ------------------
  |  Branch (1737:7): [True: 0, False: 5]
  |  Branch (1737:15): [True: 0, False: 0]
  ------------------
 1738|      0|    {
 1739|      0|      g_warning (G_STRLOC ": signal \"%s\" already exists in the '%s' %s",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (347:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1740|      0|                 name,
 1741|      0|                 type_debug_name (node->itype),
 1742|      0|                 G_TYPE_IS_INTERFACE (node->itype) ? "interface" : "class ancestry");
 1743|      0|      g_free (signal_name_copy);
 1744|      0|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1745|      0|      return 0;
 1746|      0|    }
 1747|      5|  if (node && node->itype != itype)
  ------------------
  |  Branch (1747:7): [True: 0, False: 5]
  |  Branch (1747:15): [True: 0, False: 0]
  ------------------
 1748|      0|    {
 1749|      0|      g_warning (G_STRLOC ": signal \"%s\" for type '%s' was previously created for type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1750|      0|                 name,
 1751|      0|                 type_debug_name (itype),
 1752|      0|                 type_debug_name (node->itype));
 1753|      0|      g_free (signal_name_copy);
 1754|      0|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1755|      0|      return 0;
 1756|      0|    }
 1757|      9|  for (i = 0; i < n_params; i++)
  ------------------
  |  Branch (1757:15): [True: 4, False: 5]
  ------------------
 1758|      4|    if (!G_TYPE_IS_VALUE (param_types[i] & ~G_SIGNAL_TYPE_STATIC_SCOPE))
  ------------------
  |  |   41|      4|#define	G_TYPE_IS_VALUE(type)		(g_type_check_is_value_type (type))
  ------------------
  |  Branch (1758:9): [True: 0, False: 4]
  ------------------
 1759|      0|      {
 1760|      0|	g_warning (G_STRLOC ": parameter %d of type '%s' for signal \"%s::%s\" is not a value type",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1761|      0|		   i + 1, type_debug_name (param_types[i]), type_debug_name (itype), name);
 1762|      0|	g_free (signal_name_copy);
 1763|      0|	SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1764|      0|	return 0;
 1765|      0|      }
 1766|      5|  if (return_type != G_TYPE_NONE && !G_TYPE_IS_VALUE (return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE))
  ------------------
  |  |   62|      5|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|     10|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      5|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (return_type != G_TYPE_NONE && !G_TYPE_IS_VALUE (return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE))
  ------------------
  |  |   41|      0|#define	G_TYPE_IS_VALUE(type)		(g_type_check_is_value_type (type))
  ------------------
  |  Branch (1766:7): [True: 0, False: 5]
  |  Branch (1766:37): [True: 0, False: 0]
  ------------------
 1767|      0|    {
 1768|      0|      g_warning (G_STRLOC ": return value of type '%s' for signal \"%s::%s\" is not a value type",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1769|      0|		 type_debug_name (return_type), type_debug_name (itype), name);
 1770|      0|      g_free (signal_name_copy);
 1771|      0|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1772|      0|      return 0;
 1773|      0|    }
 1774|       |  
 1775|       |  /* setup permanent portion of signal node */
 1776|      5|  if (!node)
  ------------------
  |  Branch (1776:7): [True: 5, False: 0]
  ------------------
 1777|      5|    {
 1778|      5|      SignalKey key;
 1779|       |      
 1780|      5|      signal_id = g_n_signal_nodes++;
 1781|      5|      node = g_new (SignalNode, 1);
  ------------------
  |  |  290|      5|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      5|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      5|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      5|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      5|	  gpointer __p;						\
  |  |  |  |  239|      5|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  |  |  240|      5|	    __p = g_##func (__n);				\
  |  |  |  |  241|      5|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      5|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      5|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      5|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 5]
  |  |  |  |  |  Branch (242:26): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      5|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      5|	  else							\
  |  |  |  |  245|      5|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      5|	  __p;							\
  |  |  |  |  247|      5|	}))
  |  |  ------------------
  ------------------
 1782|      5|      node->signal_id = signal_id;
 1783|      5|      g_signal_nodes = g_renew (SignalNode*, g_signal_nodes, g_n_signal_nodes);
  ------------------
  |  |  321|      5|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|      5|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|      5|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|      5|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|      5|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|      5|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  |  |  254|      5|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|      5|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  |  |  256|      5|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (256:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (256:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  257|      5|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|      5|	  else							\
  |  |  |  |  259|      5|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|      5|	  __p;							\
  |  |  |  |  261|      5|	}))
  |  |  ------------------
  ------------------
 1784|      5|      g_signal_nodes[signal_id] = node;
 1785|      5|      node->itype = itype;
 1786|      5|      key.itype = itype;
 1787|      5|      key.signal_id = signal_id;
 1788|      5|      node->name = g_intern_string (name);
 1789|      5|      key.quark = g_quark_from_string (name);
 1790|      5|      g_signal_key_bsa = g_bsearch_array_insert (g_signal_key_bsa, &g_signal_key_bconfig, &key);
 1791|       |
 1792|      5|      TRACE(GOBJECT_SIGNAL_NEW(signal_id, name, itype));
 1793|      5|    }
 1794|      5|  node->destroyed = FALSE;
  ------------------
  |  |  814|      5|#define	FALSE	(0)
  ------------------
 1795|       |
 1796|       |  /* setup reinitializable portion */
 1797|      5|  node->single_va_closure_is_valid = FALSE;
  ------------------
  |  |  814|      5|#define	FALSE	(0)
  ------------------
 1798|      5|  node->flags = signal_flags & G_SIGNAL_FLAGS_MASK;
  ------------------
  |  |  149|      5|#define G_SIGNAL_FLAGS_MASK  0x1ff
  ------------------
 1799|      5|  node->n_params = n_params;
 1800|      5|  node->param_types = g_memdup2 (param_types, sizeof (GType) * n_params);
 1801|      5|  node->return_type = return_type;
 1802|      5|  node->class_closure_bsa = NULL;
 1803|      5|  if (accumulator)
  ------------------
  |  Branch (1803:7): [True: 0, False: 5]
  ------------------
 1804|      0|    {
 1805|      0|      node->accumulator = g_new (SignalAccumulator, 1);
  ------------------
  |  |  290|      0|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      0|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      0|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      0|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      0|	  gpointer __p;						\
  |  |  |  |  239|      0|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|      0|	    __p = g_##func (__n);				\
  |  |  |  |  241|      0|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      0|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      0|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      0|	  else							\
  |  |  |  |  245|      0|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      0|	  __p;							\
  |  |  |  |  247|      0|	}))
  |  |  ------------------
  ------------------
 1806|      0|      node->accumulator->func = accumulator;
 1807|      0|      node->accumulator->data = accu_data;
 1808|      0|    }
 1809|      5|  else
 1810|      5|    node->accumulator = NULL;
 1811|       |
 1812|      5|  builtin_c_marshaller = NULL;
 1813|      5|  builtin_va_marshaller = NULL;
 1814|       |
 1815|       |  /* Pick up built-in va marshallers for standard types, and
 1816|       |     instead of generic marshaller if no marshaller specified */
 1817|      5|  if (n_params == 0 && return_type == G_TYPE_NONE)
  ------------------
  |  |   62|      1|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1817:7): [True: 1, False: 4]
  |  Branch (1817:24): [True: 1, False: 0]
  ------------------
 1818|      1|    {
 1819|      1|      builtin_c_marshaller = g_cclosure_marshal_VOID__VOID;
 1820|      1|      builtin_va_marshaller = g_cclosure_marshal_VOID__VOIDv;
 1821|      1|    }
 1822|      4|  else if (n_params == 1 && return_type == G_TYPE_NONE)
  ------------------
  |  |   62|      4|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1822:12): [True: 4, False: 0]
  |  Branch (1822:29): [True: 4, False: 0]
  ------------------
 1823|      4|    {
 1824|      4|#define ADD_CHECK(__type__) \
 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
 1826|      4|	{                                                                \
 1827|      4|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
 1828|      4|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
 1829|      4|	}
 1830|       |
 1831|      4|      if (0) {}
  ------------------
  |  Branch (1831:11): [Folded, False: 4]
  ------------------
 1832|      4|      ADD_CHECK (BOOLEAN)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |   88|      4|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1833|      4|      ADD_CHECK (CHAR)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |   76|      4|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1834|      4|      ADD_CHECK (UCHAR)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |   82|      4|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1835|      4|      ADD_CHECK (INT)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |   94|      4|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1836|      4|      ADD_CHECK (UINT)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  100|      4|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1837|      4|      ADD_CHECK (LONG)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  106|      4|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1838|      4|      ADD_CHECK (ULONG)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  112|      4|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1839|      4|      ADD_CHECK (ENUM)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  130|      4|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1840|      4|      ADD_CHECK (FLAGS)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  136|      4|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1841|      4|      ADD_CHECK (FLOAT)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  142|      4|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1842|      4|      ADD_CHECK (DOUBLE)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  148|      4|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1843|      4|      ADD_CHECK (STRING)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  154|      4|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1844|      4|      ADD_CHECK (PARAM)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  172|      4|#define G_TYPE_PARAM			G_TYPE_MAKE_FUNDAMENTAL (19)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 1, False: 3]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      1|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      1|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      1|	}
  ------------------
 1845|      4|      ADD_CHECK (BOXED)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      3|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      3|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  166|      3|#define G_TYPE_BOXED			G_TYPE_MAKE_FUNDAMENTAL (18)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      3|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      3|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 3]
  |  |  ------------------
  |  | 1826|      3|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1846|      3|      ADD_CHECK (POINTER)
  ------------------
  |  | 1825|      3|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      3|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      3|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  160|      3|#define G_TYPE_POINTER			G_TYPE_MAKE_FUNDAMENTAL (17)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      3|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      3|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 3]
  |  |  ------------------
  |  | 1826|      3|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1847|      3|      ADD_CHECK (OBJECT)
  ------------------
  |  | 1825|      3|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      3|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      3|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  178|      3|#define G_TYPE_OBJECT			G_TYPE_MAKE_FUNDAMENTAL (20)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      3|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      3|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 3, False: 0]
  |  |  ------------------
  |  | 1826|      3|	{                                                                \
  |  | 1827|      3|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      3|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      3|	}
  ------------------
 1848|      3|      ADD_CHECK (VARIANT)
  ------------------
  |  | 1825|      3|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      0|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      0|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  196|      0|#define	G_TYPE_VARIANT                  G_TYPE_MAKE_FUNDAMENTAL (21)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      0|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      0|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 1826|      0|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1849|      4|    }
 1850|       |
 1851|      5|  if (c_marshaller == NULL)
  ------------------
  |  Branch (1851:7): [True: 1, False: 4]
  ------------------
 1852|      1|    {
 1853|      1|      if (builtin_c_marshaller)
  ------------------
  |  Branch (1853:11): [True: 1, False: 0]
  ------------------
 1854|      1|        {
 1855|      1|	  c_marshaller = builtin_c_marshaller;
 1856|      1|          va_marshaller = builtin_va_marshaller;
 1857|      1|        }
 1858|      0|      else
 1859|      0|	{
 1860|      0|	  c_marshaller = g_cclosure_marshal_generic;
 1861|      0|	  va_marshaller = g_cclosure_marshal_generic_va;
 1862|      0|	}
 1863|      1|    }
 1864|      4|  else
 1865|      4|    va_marshaller = NULL;
 1866|       |
 1867|      5|  node->c_marshaller = c_marshaller;
 1868|      5|  node->va_marshaller = va_marshaller;
 1869|      5|  node->emission_hooks = NULL;
 1870|      5|  if (class_closure)
  ------------------
  |  Branch (1870:7): [True: 4, False: 1]
  ------------------
 1871|      4|    signal_add_class_closure (node, 0, class_closure);
 1872|       |
 1873|      5|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      5|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      5|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      5|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1874|       |
 1875|      5|  g_free (signal_name_copy);
 1876|       |
 1877|      5|  return signal_id;
 1878|      5|}
g_signal_new_valist:
 1960|      5|{
 1961|       |  /* Somewhat arbitrarily reserve 200 bytes. That should cover the majority
 1962|       |   * of cases where n_params is small and still be small enough for what we
 1963|       |   * want to put on the stack. */
 1964|      5|  GType param_types_stack[200 / sizeof (GType)];
 1965|      5|  GType *param_types_heap = NULL;
 1966|      5|  GType *param_types;
 1967|      5|  guint i;
 1968|      5|  guint signal_id;
 1969|       |
 1970|      5|  param_types = param_types_stack;
 1971|      5|  if (n_params > 0)
  ------------------
  |  Branch (1971:7): [True: 4, False: 1]
  ------------------
 1972|      4|    {
 1973|      4|      if (G_UNLIKELY (n_params > G_N_ELEMENTS (param_types_stack)))
  ------------------
  |  | 1025|      4|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      4|   else                                         \
  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  | 1023|      4|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1974|      0|        {
 1975|      0|          param_types_heap = g_new (GType, n_params);
  ------------------
  |  |  290|      0|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      0|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      0|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      0|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      0|	  gpointer __p;						\
  |  |  |  |  239|      0|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|      0|	    __p = g_##func (__n);				\
  |  |  |  |  241|      0|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      0|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      0|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      0|	  else							\
  |  |  |  |  245|      0|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      0|	  __p;							\
  |  |  |  |  247|      0|	}))
  |  |  ------------------
  ------------------
 1976|      0|          param_types = param_types_heap;
 1977|      0|        }
 1978|       |
 1979|      8|      for (i = 0; i < n_params; i++)
  ------------------
  |  Branch (1979:19): [True: 4, False: 4]
  ------------------
 1980|      4|        param_types[i] = va_arg (args, GType);
 1981|      4|    }
 1982|       |
 1983|      5|  signal_id = g_signal_newv (signal_name, itype, signal_flags,
 1984|      5|                             class_closure, accumulator, accu_data, c_marshaller,
 1985|      5|                             return_type, n_params, param_types);
 1986|      5|  g_free (param_types_heap);
 1987|       |
 1988|      5|  return signal_id;
 1989|      5|}
g_signal_connect_data:
 2564|  3.32k|{
 2565|  3.32k|  guint signal_id;
 2566|  3.32k|  gulong handler_seq_no = 0;
 2567|  3.32k|  GQuark detail = 0;
 2568|  3.32k|  GType itype;
 2569|  3.32k|  gboolean swapped, after;
 2570|       |  
 2571|  3.32k|  g_return_val_if_fail (G_TYPE_CHECK_INSTANCE (instance), 0);
  ------------------
  |  |  643|  3.32k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.32k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.32k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.32k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.32k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.32k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.32k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.32k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.32k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.32k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.32k|   else                                         \
  |  |  |  |  |  | 1021|  3.32k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.32k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.32k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.32k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.32k|      { } \
  |  |  646|  3.32k|    else \
  |  |  647|  3.32k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  3.32k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.32k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.32k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2572|  3.32k|  g_return_val_if_fail (detailed_signal != NULL, 0);
  ------------------
  |  |  643|  3.32k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.32k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.32k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.32k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.32k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.32k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.32k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.32k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.32k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.32k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.32k|   else                                         \
  |  |  |  |  |  | 1021|  3.32k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.32k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.32k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.32k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.32k|      { } \
  |  |  646|  3.32k|    else \
  |  |  647|  3.32k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  3.32k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.32k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.32k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2573|  3.32k|  g_return_val_if_fail (c_handler != NULL, 0);
  ------------------
  |  |  643|  3.32k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.32k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.32k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.32k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.32k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.32k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.32k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.32k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.32k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.32k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.32k|   else                                         \
  |  |  |  |  |  | 1021|  3.32k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.32k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.32k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.32k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.32k|      { } \
  |  |  646|  3.32k|    else \
  |  |  647|  3.32k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  3.32k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.32k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.32k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2574|       |
 2575|  3.32k|  swapped = (connect_flags & G_CONNECT_SWAPPED) != FALSE;
  ------------------
  |  |  814|  3.32k|#define	FALSE	(0)
  ------------------
 2576|  3.32k|  after = (connect_flags & G_CONNECT_AFTER) != FALSE;
  ------------------
  |  |  814|  3.32k|#define	FALSE	(0)
  ------------------
 2577|       |
 2578|  3.32k|  SIGNAL_LOCK ();
  ------------------
  |  |  328|  3.32k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  3.32k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  3.32k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2579|  3.32k|  itype = G_TYPE_FROM_INSTANCE (instance);
  ------------------
  |  |  602|  3.32k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|  3.32k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
 2580|  3.32k|  signal_id = signal_parse_name (detailed_signal, itype, &detail, TRUE);
  ------------------
  |  |  818|  3.32k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  3.32k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2581|  3.32k|  if (signal_id)
  ------------------
  |  Branch (2581:7): [True: 3.32k, False: 0]
  ------------------
 2582|  3.32k|    {
 2583|  3.32k|      SignalNode *node = LOOKUP_SIGNAL_NODE (signal_id);
 2584|       |
 2585|  3.32k|      node_check_deprecated (node);
 2586|       |
 2587|  3.32k|      if (detail && !(node->flags & G_SIGNAL_DETAILED))
  ------------------
  |  Branch (2587:11): [True: 3.32k, False: 0]
  |  Branch (2587:21): [True: 0, False: 3.32k]
  ------------------
 2588|      0|	g_warning ("%s: signal '%s' does not support details", G_STRLOC, detailed_signal);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 2589|  3.32k|      else if (!g_type_is_a (itype, node->itype))
  ------------------
  |  Branch (2589:16): [True: 0, False: 3.32k]
  ------------------
 2590|      0|        g_warning ("%s: signal '%s' is invalid for instance '%p' of type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 2591|  3.32k|                   G_STRLOC, detailed_signal, instance, g_type_name (itype));
 2592|  3.32k|      else
 2593|  3.32k|	{
 2594|  3.32k|	  Handler *handler = handler_new (signal_id, instance, after);
 2595|       |
 2596|  3.32k|          if (G_TYPE_IS_OBJECT (node->itype))
  ------------------
  |  |   47|  3.32k|#define G_TYPE_IS_OBJECT(type)      (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT)
  |  |  ------------------
  |  |  |  |   38|  3.32k|#define G_TYPE_FUNDAMENTAL(type)	(g_type_fundamental (type))
  |  |  ------------------
  |  |               #define G_TYPE_IS_OBJECT(type)      (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT)
  |  |  ------------------
  |  |  |  |  178|  3.32k|#define G_TYPE_OBJECT			G_TYPE_MAKE_FUNDAMENTAL (20)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|  3.32k|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|  3.32k|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (47:37): [True: 3.32k, False: 0]
  |  |  ------------------
  ------------------
 2597|  3.32k|            _g_object_set_has_signal_handler ((GObject *)instance);
 2598|       |
 2599|  3.32k|	  handler_seq_no = handler->sequential_number;
 2600|  3.32k|	  handler->detail = detail;
 2601|  3.32k|	  handler->closure = g_closure_ref ((swapped ? g_cclosure_new_swap : g_cclosure_new) (c_handler, data, destroy_data));
  ------------------
  |  Branch (2601:39): [True: 0, False: 3.32k]
  ------------------
 2602|  3.32k|	  g_closure_sink (handler->closure);
 2603|  3.32k|	  handler_insert (signal_id, instance, handler);
 2604|  3.32k|	  if (node->c_marshaller && G_CLOSURE_NEEDS_MARSHAL (handler->closure))
  ------------------
  |  |   39|  3.32k|#define	G_CLOSURE_NEEDS_MARSHAL(closure) (((GClosure*) (closure))->marshal == NULL)
  |  |  ------------------
  |  |  |  Branch (39:42): [True: 3.32k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2604:8): [True: 3.32k, False: 0]
  ------------------
 2605|  3.32k|	    {
 2606|  3.32k|	      g_closure_set_marshal (handler->closure, node->c_marshaller);
 2607|  3.32k|	      if (node->va_marshaller)
  ------------------
  |  Branch (2607:12): [True: 3.32k, False: 0]
  ------------------
 2608|  3.32k|		_g_closure_set_va_marshal (handler->closure, node->va_marshaller);
 2609|  3.32k|	    }
 2610|  3.32k|        }
 2611|  3.32k|    }
 2612|      0|  else
 2613|      0|    g_warning ("%s: signal '%s' is invalid for instance '%p' of type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 2614|  3.32k|               G_STRLOC, detailed_signal, instance, g_type_name (itype));
 2615|  3.32k|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  3.32k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  3.32k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  3.32k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2616|       |
 2617|  3.32k|  return handler_seq_no;
 2618|  3.32k|}
g_signal_handlers_destroy:
 2772|  2.58M|{
 2773|  2.58M|  GBSearchArray *hlbsa;
 2774|       |  
 2775|  2.58M|  g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance));
  ------------------
  |  |  630|  2.58M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.58M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.58M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.58M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.58M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.58M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.58M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.58M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.58M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.58M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.58M|   else                                         \
  |  |  |  |  |  | 1021|  2.58M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.58M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.58M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.58M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.58M|      { } \
  |  |  633|  2.58M|    else \
  |  |  634|  2.58M|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  2.58M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.58M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.58M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2776|       |  
 2777|  2.58M|  SIGNAL_LOCK ();
  ------------------
  |  |  328|  2.58M|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  2.58M|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  2.58M|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2778|  2.58M|  hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance);
 2779|  2.58M|  if (hlbsa)
  ------------------
  |  Branch (2779:7): [True: 832, False: 2.58M]
  ------------------
 2780|    832|    {
 2781|    832|      guint i;
 2782|       |      
 2783|       |      /* reentrancy caution, delete instance trace first */
 2784|    832|      g_hash_table_remove (g_handler_list_bsa_ht, instance);
 2785|       |      
 2786|  1.66k|      for (i = 0; i < hlbsa->n_nodes; i++)
  ------------------
  |  Branch (2786:19): [True: 832, False: 832]
  ------------------
 2787|    832|        {
 2788|    832|          HandlerList *hlist = g_bsearch_array_get_nth (hlbsa, &g_signal_hlbsa_bconfig, i);
 2789|    832|          Handler *handler = hlist->handlers;
 2790|       |	  
 2791|  4.16k|          while (handler)
  ------------------
  |  Branch (2791:18): [True: 3.32k, False: 832]
  ------------------
 2792|  3.32k|            {
 2793|  3.32k|              Handler *tmp = handler;
 2794|       |	      
 2795|  3.32k|              handler = tmp->next;
 2796|  3.32k|              tmp->block_count = 1;
 2797|       |              /* cruel unlink, this works because _all_ handlers vanish */
 2798|  3.32k|              tmp->next = NULL;
 2799|  3.32k|              tmp->prev = tmp;
 2800|  3.32k|              if (tmp->sequential_number)
  ------------------
  |  Branch (2800:19): [True: 3.32k, False: 0]
  ------------------
 2801|  3.32k|		{
 2802|  3.32k|                  g_hash_table_remove (g_handlers, tmp);
 2803|  3.32k|		  remove_invalid_closure_notify (tmp, instance);
 2804|  3.32k|		  tmp->sequential_number = 0;
 2805|  3.32k|		  handler_unref_R (0, NULL, tmp);
 2806|  3.32k|		}
 2807|  3.32k|            }
 2808|    832|        }
 2809|    832|      g_bsearch_array_free (hlbsa, &g_signal_hlbsa_bconfig);
 2810|    832|    }
 2811|  2.58M|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  2.58M|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  2.58M|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  2.58M|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2812|  2.58M|}
g_signal_emit_valist:
 3269|   437k|{
 3270|   437k|  GValue *instance_and_params;
 3271|   437k|  GType signal_return_type;
 3272|   437k|  GValue *param_values;
 3273|   437k|  SignalNode *node;
 3274|   437k|  guint i, n_params;
 3275|       |
 3276|   437k|  g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance));
  ------------------
  |  |  630|   437k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   437k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   437k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   437k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   437k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   437k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   437k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   437k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 437k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   437k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   437k|   else                                         \
  |  |  |  |  |  | 1021|   437k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   437k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   437k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 437k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   437k|      { } \
  |  |  633|   437k|    else \
  |  |  634|   437k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   437k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   437k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 437k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3277|   437k|  g_return_if_fail (signal_id > 0);
  ------------------
  |  |  630|   437k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   437k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   437k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   437k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   437k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   437k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   437k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   437k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 437k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   437k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   437k|   else                                         \
  |  |  |  |  |  | 1021|   437k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   437k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   437k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 437k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   437k|      { } \
  |  |  633|   437k|    else \
  |  |  634|   437k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   437k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   437k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 437k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3278|       |
 3279|   437k|  SIGNAL_LOCK ();
  ------------------
  |  |  328|   437k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|   437k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|   437k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3280|   437k|  node = LOOKUP_SIGNAL_NODE (signal_id);
 3281|   437k|  if (!node || !g_type_is_a (G_TYPE_FROM_INSTANCE (instance), node->itype))
  ------------------
  |  |  602|   437k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|   437k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
  |  Branch (3281:7): [True: 0, False: 437k]
  |  Branch (3281:16): [True: 0, False: 437k]
  ------------------
 3282|      0|    {
 3283|      0|      g_warning ("%s: signal id '%u' is invalid for instance '%p'", G_STRLOC, signal_id, instance);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 3284|      0|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3285|      0|      return;
 3286|      0|    }
 3287|   437k|#ifndef G_DISABLE_CHECKS
 3288|   437k|  if (detail && !(node->flags & G_SIGNAL_DETAILED))
  ------------------
  |  Branch (3288:7): [True: 437k, False: 0]
  |  Branch (3288:17): [True: 0, False: 437k]
  ------------------
 3289|      0|    {
 3290|      0|      g_warning ("%s: signal id '%u' does not support detail (%u)", G_STRLOC, signal_id, detail);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 3291|      0|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3292|      0|      return;
 3293|      0|    }
 3294|   437k|#endif  /* !G_DISABLE_CHECKS */
 3295|       |
 3296|   437k|  if (!node->single_va_closure_is_valid)
  ------------------
  |  Branch (3296:7): [True: 1, False: 437k]
  ------------------
 3297|      1|    node_update_single_va_closure (node);
 3298|       |
 3299|   437k|  if (node->single_va_closure != NULL)
  ------------------
  |  Branch (3299:7): [True: 437k, False: 0]
  ------------------
 3300|   437k|    {
 3301|   437k|      HandlerList* hlist;
 3302|   437k|      Handler *fastpath_handler = NULL;
 3303|   437k|      Handler *l;
 3304|   437k|      GClosure *closure = NULL;
 3305|   437k|      gboolean fastpath = TRUE;
  ------------------
  |  |  818|   437k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   437k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3306|   437k|      GSignalFlags run_type = G_SIGNAL_RUN_FIRST;
 3307|       |
 3308|   437k|      if (node->single_va_closure != SINGLE_VA_CLOSURE_EMPTY_MAGIC &&
  ------------------
  |  |  250|   437k|#define	SINGLE_VA_CLOSURE_EMPTY_MAGIC GINT_TO_POINTER(1)	/* indicates single_va_closure is valid but empty */
  |  |  ------------------
  |  |  |  |  101|   874k|#define GINT_TO_POINTER(i)	((gpointer) (glong) (i))
  |  |  ------------------
  ------------------
  |  Branch (3308:11): [True: 437k, False: 0]
  ------------------
 3309|   437k|	  !_g_closure_is_void (node->single_va_closure, instance))
  ------------------
  |  Branch (3309:4): [True: 0, False: 437k]
  ------------------
 3310|      0|	{
 3311|      0|	  if (_g_closure_supports_invoke_va (node->single_va_closure))
  ------------------
  |  Branch (3311:8): [True: 0, False: 0]
  ------------------
 3312|      0|	    {
 3313|      0|	      closure = node->single_va_closure;
 3314|      0|	      if (node->single_va_closure_is_after)
  ------------------
  |  Branch (3314:12): [True: 0, False: 0]
  ------------------
 3315|      0|		run_type = G_SIGNAL_RUN_LAST;
 3316|      0|	      else
 3317|      0|		run_type = G_SIGNAL_RUN_FIRST;
 3318|      0|	    }
 3319|      0|	  else
 3320|      0|	    fastpath = FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 3321|      0|	}
 3322|       |
 3323|       |      /* single_va_closure is only true for GObjects, so fast path if no handler ever connected to the signal */
 3324|   437k|      if (_g_object_has_signal_handler ((GObject *)instance))
  ------------------
  |  Branch (3324:11): [True: 6.36k, False: 430k]
  ------------------
 3325|  6.36k|        hlist = handler_list_lookup (node->signal_id, instance);
 3326|   430k|      else
 3327|   430k|        hlist = NULL;
 3328|       |
 3329|   460k|      for (l = hlist ? hlist->handlers : NULL; fastpath && l != NULL; l = l->next)
  ------------------
  |  Branch (3329:16): [True: 6.36k, False: 430k]
  |  Branch (3329:48): [True: 460k, False: 0]
  |  Branch (3329:60): [True: 24.7k, False: 435k]
  ------------------
 3330|  24.7k|	{
 3331|  24.7k|	  if (!l->block_count &&
  ------------------
  |  Branch (3331:8): [True: 24.7k, False: 0]
  ------------------
 3332|  24.7k|	      (!l->detail || l->detail == detail))
  ------------------
  |  Branch (3332:9): [True: 0, False: 24.7k]
  |  Branch (3332:23): [True: 2.74k, False: 22.0k]
  ------------------
 3333|  2.74k|	    {
 3334|  2.74k|	      if (closure != NULL || !_g_closure_supports_invoke_va (l->closure))
  ------------------
  |  Branch (3334:12): [True: 1.37k, False: 1.37k]
  |  Branch (3334:31): [True: 0, False: 1.37k]
  ------------------
 3335|  1.37k|		{
 3336|  1.37k|		  fastpath = FALSE;
  ------------------
  |  |  814|  1.37k|#define	FALSE	(0)
  ------------------
 3337|  1.37k|		  break;
 3338|  1.37k|		}
 3339|  1.37k|	      else
 3340|  1.37k|		{
 3341|  1.37k|                  fastpath_handler = l;
 3342|  1.37k|		  closure = l->closure;
 3343|  1.37k|		  if (l->after)
  ------------------
  |  Branch (3343:9): [True: 0, False: 1.37k]
  ------------------
 3344|      0|		    run_type = G_SIGNAL_RUN_LAST;
 3345|  1.37k|		  else
 3346|  1.37k|		    run_type = G_SIGNAL_RUN_FIRST;
 3347|  1.37k|		}
 3348|  2.74k|	    }
 3349|  24.7k|	}
 3350|       |
 3351|   437k|      if (fastpath && closure == NULL && node->return_type == G_TYPE_NONE)
  ------------------
  |  |   62|   435k|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|   435k|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|   435k|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3351:11): [True: 435k, False: 1.37k]
  |  Branch (3351:23): [True: 435k, False: 0]
  |  Branch (3351:42): [True: 435k, False: 0]
  ------------------
 3352|   435k|	{
 3353|   435k|	  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|   435k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|   435k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|   435k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3354|   435k|	  return;
 3355|   435k|	}
 3356|       |
 3357|       |      /* Don't allow no-recurse emission as we might have to restart, which means
 3358|       |	 we will run multiple handlers and thus must ref all arguments */
 3359|  1.37k|      if (closure != NULL && (node->flags & (G_SIGNAL_NO_RECURSE)) != 0)
  ------------------
  |  Branch (3359:11): [True: 1.37k, False: 0]
  |  Branch (3359:30): [True: 1.37k, False: 0]
  ------------------
 3360|  1.37k|	fastpath = FALSE;
  ------------------
  |  |  814|  1.37k|#define	FALSE	(0)
  ------------------
 3361|       |      
 3362|  1.37k|      if (fastpath)
  ------------------
  |  Branch (3362:11): [True: 0, False: 1.37k]
  ------------------
 3363|      0|	{
 3364|      0|	  SignalAccumulator *accumulator;
 3365|      0|	  Emission emission;
 3366|      0|	  GValue *return_accu, accu = G_VALUE_INIT;
  ------------------
  |  |  202|      0|#define G_VALUE_INIT  { 0, { { 0 } } }
  ------------------
 3367|      0|	  guint signal_id;
 3368|      0|	  GType instance_type = G_TYPE_FROM_INSTANCE (instance);
  ------------------
  |  |  602|      0|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|      0|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
 3369|      0|	  GValue emission_return = G_VALUE_INIT;
  ------------------
  |  |  202|      0|#define G_VALUE_INIT  { 0, { { 0 } } }
  ------------------
 3370|      0|          GType rtype = node->return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE;
  ------------------
  |  |  213|      0|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  ------------------
  |  |  |  | 2353|      0|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  ------------------
  ------------------
 3371|      0|	  gboolean static_scope = node->return_type & G_SIGNAL_TYPE_STATIC_SCOPE;
  ------------------
  |  |  213|      0|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  ------------------
  |  |  |  | 2353|      0|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  ------------------
  ------------------
 3372|       |
 3373|      0|	  signal_id = node->signal_id;
 3374|      0|	  accumulator = node->accumulator;
 3375|      0|	  if (rtype == G_TYPE_NONE)
  ------------------
  |  |   62|      0|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      0|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3375:8): [True: 0, False: 0]
  ------------------
 3376|      0|	    return_accu = NULL;
 3377|      0|	  else if (accumulator)
  ------------------
  |  Branch (3377:13): [True: 0, False: 0]
  ------------------
 3378|      0|	    return_accu = &accu;
 3379|      0|	  else
 3380|      0|	    return_accu = &emission_return;
 3381|       |
 3382|      0|	  emission.instance = instance;
 3383|      0|	  emission.ihint.signal_id = signal_id;
 3384|      0|	  emission.ihint.detail = detail;
 3385|      0|	  emission.ihint.run_type = run_type | G_SIGNAL_ACCUMULATOR_FIRST_RUN;
 3386|      0|	  emission.state = EMISSION_RUN;
 3387|      0|	  emission.chain_type = instance_type;
 3388|      0|	  emission_push (&emission);
 3389|       |
 3390|      0|          if (fastpath_handler)
  ------------------
  |  Branch (3390:15): [True: 0, False: 0]
  ------------------
 3391|      0|            handler_ref (fastpath_handler);
 3392|       |
 3393|      0|	  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3394|       |
 3395|      0|	  TRACE(GOBJECT_SIGNAL_EMIT(signal_id, detail, instance, instance_type));
 3396|       |
 3397|      0|	  if (rtype != G_TYPE_NONE)
  ------------------
  |  |   62|      0|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      0|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3397:8): [True: 0, False: 0]
  ------------------
 3398|      0|	    g_value_init (&emission_return, rtype);
 3399|       |
 3400|      0|	  if (accumulator)
  ------------------
  |  Branch (3400:8): [True: 0, False: 0]
  ------------------
 3401|      0|	    g_value_init (&accu, rtype);
 3402|       |
 3403|      0|	  if (closure != NULL)
  ------------------
  |  Branch (3403:8): [True: 0, False: 0]
  ------------------
 3404|      0|	    {
 3405|      0|	      g_object_ref (instance);
  ------------------
  |  |  523|      0|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
 3406|      0|	      _g_closure_invoke_va (closure,
 3407|      0|				    return_accu,
 3408|      0|				    instance,
 3409|      0|				    var_args,
 3410|      0|				    node->n_params,
 3411|      0|				    node->param_types);
 3412|      0|	      accumulate (&emission.ihint, &emission_return, &accu, accumulator);
 3413|      0|	    }
 3414|       |
 3415|      0|	  SIGNAL_LOCK ();
  ------------------
  |  |  328|      0|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|      0|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3416|       |
 3417|      0|	  emission.chain_type = G_TYPE_NONE;
  ------------------
  |  |   62|      0|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      0|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3418|      0|	  emission_pop (&emission);
 3419|       |
 3420|      0|          if (fastpath_handler)
  ------------------
  |  Branch (3420:15): [True: 0, False: 0]
  ------------------
 3421|      0|            handler_unref_R (signal_id, instance, fastpath_handler);
 3422|       |
 3423|      0|	  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3424|       |
 3425|      0|	  if (accumulator)
  ------------------
  |  Branch (3425:8): [True: 0, False: 0]
  ------------------
 3426|      0|	    g_value_unset (&accu);
 3427|       |
 3428|      0|	  if (rtype != G_TYPE_NONE)
  ------------------
  |  |   62|      0|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      0|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3428:8): [True: 0, False: 0]
  ------------------
 3429|      0|	    {
 3430|      0|	      gchar *error = NULL;
 3431|      0|	      for (i = 0; i < node->n_params; i++)
  ------------------
  |  Branch (3431:20): [True: 0, False: 0]
  ------------------
 3432|      0|		{
 3433|      0|		  GType ptype = node->param_types[i] & ~G_SIGNAL_TYPE_STATIC_SCOPE;
  ------------------
  |  |  213|      0|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  ------------------
  |  |  |  | 2353|      0|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  ------------------
  ------------------
 3434|      0|		  G_VALUE_COLLECT_SKIP (ptype, var_args);
  ------------------
  |  |  166|      0|#define G_VALUE_COLLECT_SKIP(_value_type, var_args)					\
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  167|      0|G_STMT_START {										\
  |  |  168|      0|  GTypeValueTable *g_vcs_vtable = g_type_value_table_peek (_value_type);			\
  |  |  169|      0|  const gchar *g_vcs_collect_format = g_vcs_vtable->collect_format;				\
  |  |  170|      0|                                                                                        \
  |  |  171|      0|  while (*g_vcs_collect_format)								\
  |  |  ------------------
  |  |  |  Branch (171:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  172|      0|    {											\
  |  |  173|      0|      switch (*g_vcs_collect_format++)							\
  |  |  174|      0|	{										\
  |  |  175|      0|	case G_VALUE_COLLECT_INT:							\
  |  |  ------------------
  |  |  |  Branch (175:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  176|      0|	  va_arg ((var_args), gint);							\
  |  |  177|      0|	  break;									\
  |  |  178|      0|	case G_VALUE_COLLECT_LONG:							\
  |  |  ------------------
  |  |  |  Branch (178:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  179|      0|	  va_arg ((var_args), glong);							\
  |  |  180|      0|	  break;									\
  |  |  181|      0|	case G_VALUE_COLLECT_INT64:							\
  |  |  ------------------
  |  |  |  Branch (181:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  182|      0|	  va_arg ((var_args), gint64);							\
  |  |  183|      0|	  break;									\
  |  |  184|      0|	case G_VALUE_COLLECT_DOUBLE:							\
  |  |  ------------------
  |  |  |  Branch (184:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  185|      0|	  va_arg ((var_args), gdouble);							\
  |  |  186|      0|	  break;									\
  |  |  187|      0|	case G_VALUE_COLLECT_POINTER:							\
  |  |  ------------------
  |  |  |  Branch (187:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  188|      0|	  va_arg ((var_args), gpointer);						\
  |  |  189|      0|	  break;									\
  |  |  190|      0|	default:									\
  |  |  ------------------
  |  |  |  Branch (190:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  191|      0|	  g_assert_not_reached ();							\
  |  |  ------------------
  |  |  |  |  230|      0|#define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |               #define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  |  |  ------------------
  |  |  |  |               #define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  192|      0|	}										\
  |  |  193|      0|    }											\
  |  |  194|      0|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3435|      0|		}
 3436|       |
 3437|      0|	      G_VALUE_LCOPY (&emission_return,
  ------------------
  |  |  209|      0|#define G_VALUE_LCOPY(value, var_args, flags, __error)					\
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  210|      0|G_STMT_START {										\
  |  |  211|      0|  const GValue *g_vl_value = (value);							\
  |  |  212|      0|  guint g_vl_flags = (flags);								\
  |  |  ------------------
  |  |  |  Branch (212:23): [True: 0, False: 0]
  |  |  ------------------
  |  |  213|      0|  GType g_vl_value_type = G_VALUE_TYPE (g_vl_value);						\
  |  |  ------------------
  |  |  |  |   59|      0|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  |  |  ------------------
  |  |  214|      0|  GTypeValueTable *g_vl_vtable = g_type_value_table_peek (g_vl_value_type);			\
  |  |  215|      0|  const gchar *g_vl_lcopy_format = g_vl_vtable->lcopy_format;					\
  |  |  216|      0|  GTypeCValue g_vl_cvalues[G_VALUE_COLLECT_FORMAT_MAX_LENGTH] = { { 0, }, };		\
  |  |  217|      0|  guint g_vl_n_values = 0;									\
  |  |  218|      0|                                                                                        \
  |  |  219|      0|  while (*g_vl_lcopy_format)								\
  |  |  ------------------
  |  |  |  Branch (219:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  220|      0|    {											\
  |  |  221|      0|      GTypeCValue *g_vl_cvalue = g_vl_cvalues + g_vl_n_values++;					\
  |  |  222|      0|                                                                                        \
  |  |  223|      0|      switch (*g_vl_lcopy_format++)								\
  |  |  224|      0|	{										\
  |  |  225|      0|	case G_VALUE_COLLECT_INT:							\
  |  |  ------------------
  |  |  |  Branch (225:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  226|      0|	  g_vl_cvalue->v_int = va_arg ((var_args), gint);					\
  |  |  227|      0|	  break;									\
  |  |  228|      0|	case G_VALUE_COLLECT_LONG:							\
  |  |  ------------------
  |  |  |  Branch (228:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  229|      0|	  g_vl_cvalue->v_long = va_arg ((var_args), glong);					\
  |  |  230|      0|	  break;									\
  |  |  231|      0|	case G_VALUE_COLLECT_INT64:							\
  |  |  ------------------
  |  |  |  Branch (231:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  232|      0|	  g_vl_cvalue->v_int64 = va_arg ((var_args), gint64);				\
  |  |  233|      0|	  break;									\
  |  |  234|      0|	case G_VALUE_COLLECT_DOUBLE:							\
  |  |  ------------------
  |  |  |  Branch (234:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  235|      0|	  g_vl_cvalue->v_double = va_arg ((var_args), gdouble);				\
  |  |  236|      0|	  break;									\
  |  |  237|      0|	case G_VALUE_COLLECT_POINTER:							\
  |  |  ------------------
  |  |  |  Branch (237:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  238|      0|	  g_vl_cvalue->v_pointer = va_arg ((var_args), gpointer);				\
  |  |  239|      0|	  break;									\
  |  |  240|      0|	default:									\
  |  |  ------------------
  |  |  |  Branch (240:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  241|      0|	  g_assert_not_reached ();							\
  |  |  ------------------
  |  |  |  |  230|      0|#define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |               #define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  |  |  ------------------
  |  |  |  |               #define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  242|      0|	}										\
  |  |  243|      0|    }											\
  |  |  244|      0|  *(__error) = g_vl_vtable->lcopy_value (g_vl_value,						\
  |  |  245|      0|				     g_vl_n_values,						\
  |  |  246|      0|				     g_vl_cvalues,						\
  |  |  247|      0|				     g_vl_flags);						\
  |  |  248|      0|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3438|      0|			     var_args,
 3439|      0|			     static_scope ? G_VALUE_NOCOPY_CONTENTS : 0,
 3440|      0|			     &error);
 3441|      0|	      if (!error)
  ------------------
  |  Branch (3441:12): [True: 0, False: 0]
  ------------------
 3442|      0|		g_value_unset (&emission_return);
 3443|      0|	      else
 3444|      0|		{
 3445|      0|		  g_warning ("%s: %s", G_STRLOC, error);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 3446|      0|		  g_free (error);
 3447|       |		  /* we purposely leak the value here, it might not be
 3448|       |		   * in a correct state if an error condition occurred
 3449|       |		   */
 3450|      0|		}
 3451|      0|	    }
 3452|       |	  
 3453|      0|	  TRACE(GOBJECT_SIGNAL_EMIT_END(signal_id, detail, instance, instance_type));
 3454|       |
 3455|      0|          if (closure != NULL)
  ------------------
  |  Branch (3455:15): [True: 0, False: 0]
  ------------------
 3456|      0|            g_object_unref (instance);
 3457|       |
 3458|      0|	  return;
 3459|      0|	}
 3460|  1.37k|    }
 3461|  1.37k|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  1.37k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  1.37k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  1.37k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3462|       |
 3463|  1.37k|  n_params = node->n_params;
 3464|  1.37k|  signal_return_type = node->return_type;
 3465|  1.37k|  instance_and_params = g_alloca (sizeof (GValue) * (n_params + 1));
  ------------------
  |  |   91|  1.37k|#define g_alloca(size)		 alloca (size)
  ------------------
 3466|  1.37k|  memset (instance_and_params, 0, sizeof (GValue) * (n_params + 1));
 3467|  1.37k|  param_values = instance_and_params + 1;
 3468|       |
 3469|  2.74k|  for (i = 0; i < node->n_params; i++)
  ------------------
  |  Branch (3469:15): [True: 1.37k, False: 1.37k]
  ------------------
 3470|  1.37k|    {
 3471|  1.37k|      gchar *error;
 3472|  1.37k|      GType ptype = node->param_types[i] & ~G_SIGNAL_TYPE_STATIC_SCOPE;
  ------------------
  |  |  213|  1.37k|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  ------------------
  |  |  |  | 2353|  1.37k|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  ------------------
  ------------------
 3473|  1.37k|      gboolean static_scope = node->param_types[i] & G_SIGNAL_TYPE_STATIC_SCOPE;
  ------------------
  |  |  213|  1.37k|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  ------------------
  |  |  |  | 2353|  1.37k|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  ------------------
  ------------------
 3474|       |
 3475|  1.37k|      G_VALUE_COLLECT_INIT (param_values + i, ptype,
  ------------------
  |  |   88|  1.37k|#define G_VALUE_COLLECT_INIT(value, _value_type, var_args, flags, __error)		\
  |  |  ------------------
  |  |  |  |  874|  1.37k|#define G_STMT_START  do
  |  |  ------------------
  |  |   89|  1.37k|G_STMT_START {										\
  |  |   90|  1.37k|  GValue *g_vci_val = (value);								\
  |  |   91|  2.74k|  guint g_vci_flags = (flags);								\
  |  |  ------------------
  |  |  |  Branch (91:24): [True: 0, False: 1.37k]
  |  |  ------------------
  |  |   92|  1.37k|  GTypeValueTable *g_vci_vtab = g_type_value_table_peek (_value_type);			\
  |  |   93|  1.37k|  const gchar *g_vci_collect_format = g_vci_vtab->collect_format;					\
  |  |   94|  1.37k|  GTypeCValue g_vci_cvalues[G_VALUE_COLLECT_FORMAT_MAX_LENGTH] = { { 0, }, };		\
  |  |   95|  1.37k|  guint g_vci_n_values = 0;									\
  |  |   96|  1.37k|                                                                                        \
  |  |   97|  1.37k|  g_vci_val->g_type = _value_type;		/* value_meminit() from gvalue.c */		\
  |  |   98|  2.74k|  while (*g_vci_collect_format)								\
  |  |  ------------------
  |  |  |  Branch (98:10): [True: 1.37k, False: 1.37k]
  |  |  ------------------
  |  |   99|  1.37k|    {											\
  |  |  100|  1.37k|      GTypeCValue *g_vci_cvalue = g_vci_cvalues + g_vci_n_values++;					\
  |  |  101|  1.37k|                                                                                        \
  |  |  102|  1.37k|      switch (*g_vci_collect_format++)							\
  |  |  103|  1.37k|	{										\
  |  |  104|      0|	case G_VALUE_COLLECT_INT:							\
  |  |  ------------------
  |  |  |  Branch (104:2): [True: 0, False: 1.37k]
  |  |  ------------------
  |  |  105|      0|	  g_vci_cvalue->v_int = va_arg ((var_args), gint);					\
  |  |  106|      0|	  break;									\
  |  |  107|      0|	case G_VALUE_COLLECT_LONG:							\
  |  |  ------------------
  |  |  |  Branch (107:2): [True: 0, False: 1.37k]
  |  |  ------------------
  |  |  108|      0|	  g_vci_cvalue->v_long = va_arg ((var_args), glong);					\
  |  |  109|      0|	  break;									\
  |  |  110|      0|	case G_VALUE_COLLECT_INT64:							\
  |  |  ------------------
  |  |  |  Branch (110:2): [True: 0, False: 1.37k]
  |  |  ------------------
  |  |  111|      0|	  g_vci_cvalue->v_int64 = va_arg ((var_args), gint64);				\
  |  |  112|      0|	  break;									\
  |  |  113|      0|	case G_VALUE_COLLECT_DOUBLE:							\
  |  |  ------------------
  |  |  |  Branch (113:2): [True: 0, False: 1.37k]
  |  |  ------------------
  |  |  114|      0|	  g_vci_cvalue->v_double = va_arg ((var_args), gdouble);				\
  |  |  115|      0|	  break;									\
  |  |  116|  1.37k|	case G_VALUE_COLLECT_POINTER:							\
  |  |  ------------------
  |  |  |  Branch (116:2): [True: 1.37k, False: 0]
  |  |  ------------------
  |  |  117|  1.37k|	  g_vci_cvalue->v_pointer = va_arg ((var_args), gpointer);				\
  |  |  118|  1.37k|	  break;									\
  |  |  119|      0|	default:									\
  |  |  ------------------
  |  |  |  Branch (119:2): [True: 0, False: 1.37k]
  |  |  ------------------
  |  |  120|      0|	  g_assert_not_reached ();							\
  |  |  ------------------
  |  |  |  |  230|      0|#define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |               #define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  |  |  ------------------
  |  |  |  |               #define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  121|  1.37k|	}										\
  |  |  122|  1.37k|    }											\
  |  |  123|  1.37k|  *(__error) = g_vci_vtab->collect_value (g_vci_val,						\
  |  |  124|  1.37k|				       g_vci_n_values,					\
  |  |  125|  1.37k|				       g_vci_cvalues,					\
  |  |  126|  1.37k|				       g_vci_flags);						\
  |  |  127|  1.37k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.37k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.37k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3476|  1.37k|			    var_args,
 3477|  1.37k|			    static_scope ? G_VALUE_NOCOPY_CONTENTS : 0,
 3478|  1.37k|			    &error);
 3479|  1.37k|      if (error)
  ------------------
  |  Branch (3479:11): [True: 0, False: 1.37k]
  ------------------
 3480|      0|	{
 3481|      0|	  g_warning ("%s: %s", G_STRLOC, error);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 3482|      0|	  g_free (error);
 3483|       |
 3484|       |	  /* we purposely leak the value here, it might not be
 3485|       |	   * in a correct state if an error condition occurred
 3486|       |	   */
 3487|      0|	  while (i--)
  ------------------
  |  Branch (3487:11): [True: 0, False: 0]
  ------------------
 3488|      0|	    g_value_unset (param_values + i);
 3489|       |
 3490|      0|	  return;
 3491|      0|	}
 3492|  1.37k|    }
 3493|       |
 3494|  1.37k|  instance_and_params->g_type = 0;
 3495|  1.37k|  g_value_init_from_instance (instance_and_params, instance);
 3496|  1.37k|  if (signal_return_type == G_TYPE_NONE)
  ------------------
  |  |   62|  1.37k|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|  1.37k|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|  1.37k|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3496:7): [True: 1.37k, False: 0]
  ------------------
 3497|  1.37k|    signal_emit_unlocked_R (node, detail, instance, NULL, instance_and_params);
 3498|      0|  else
 3499|      0|    {
 3500|      0|      GValue return_value = G_VALUE_INIT;
  ------------------
  |  |  202|      0|#define G_VALUE_INIT  { 0, { { 0 } } }
  ------------------
 3501|      0|      gchar *error = NULL;
 3502|      0|      GType rtype = signal_return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE;
  ------------------
  |  |  213|      0|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  ------------------
  |  |  |  | 2353|      0|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  ------------------
  ------------------
 3503|      0|      gboolean static_scope = signal_return_type & G_SIGNAL_TYPE_STATIC_SCOPE;
  ------------------
  |  |  213|      0|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  ------------------
  |  |  |  | 2353|      0|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  ------------------
  ------------------
 3504|       |      
 3505|      0|      g_value_init (&return_value, rtype);
 3506|       |
 3507|      0|      signal_emit_unlocked_R (node, detail, instance, &return_value, instance_and_params);
 3508|       |
 3509|      0|      G_VALUE_LCOPY (&return_value,
  ------------------
  |  |  209|      0|#define G_VALUE_LCOPY(value, var_args, flags, __error)					\
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  210|      0|G_STMT_START {										\
  |  |  211|      0|  const GValue *g_vl_value = (value);							\
  |  |  212|      0|  guint g_vl_flags = (flags);								\
  |  |  ------------------
  |  |  |  Branch (212:23): [True: 0, False: 0]
  |  |  ------------------
  |  |  213|      0|  GType g_vl_value_type = G_VALUE_TYPE (g_vl_value);						\
  |  |  ------------------
  |  |  |  |   59|      0|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  |  |  ------------------
  |  |  214|      0|  GTypeValueTable *g_vl_vtable = g_type_value_table_peek (g_vl_value_type);			\
  |  |  215|      0|  const gchar *g_vl_lcopy_format = g_vl_vtable->lcopy_format;					\
  |  |  216|      0|  GTypeCValue g_vl_cvalues[G_VALUE_COLLECT_FORMAT_MAX_LENGTH] = { { 0, }, };		\
  |  |  217|      0|  guint g_vl_n_values = 0;									\
  |  |  218|      0|                                                                                        \
  |  |  219|      0|  while (*g_vl_lcopy_format)								\
  |  |  ------------------
  |  |  |  Branch (219:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  220|      0|    {											\
  |  |  221|      0|      GTypeCValue *g_vl_cvalue = g_vl_cvalues + g_vl_n_values++;					\
  |  |  222|      0|                                                                                        \
  |  |  223|      0|      switch (*g_vl_lcopy_format++)								\
  |  |  224|      0|	{										\
  |  |  225|      0|	case G_VALUE_COLLECT_INT:							\
  |  |  ------------------
  |  |  |  Branch (225:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  226|      0|	  g_vl_cvalue->v_int = va_arg ((var_args), gint);					\
  |  |  227|      0|	  break;									\
  |  |  228|      0|	case G_VALUE_COLLECT_LONG:							\
  |  |  ------------------
  |  |  |  Branch (228:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  229|      0|	  g_vl_cvalue->v_long = va_arg ((var_args), glong);					\
  |  |  230|      0|	  break;									\
  |  |  231|      0|	case G_VALUE_COLLECT_INT64:							\
  |  |  ------------------
  |  |  |  Branch (231:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  232|      0|	  g_vl_cvalue->v_int64 = va_arg ((var_args), gint64);				\
  |  |  233|      0|	  break;									\
  |  |  234|      0|	case G_VALUE_COLLECT_DOUBLE:							\
  |  |  ------------------
  |  |  |  Branch (234:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  235|      0|	  g_vl_cvalue->v_double = va_arg ((var_args), gdouble);				\
  |  |  236|      0|	  break;									\
  |  |  237|      0|	case G_VALUE_COLLECT_POINTER:							\
  |  |  ------------------
  |  |  |  Branch (237:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  238|      0|	  g_vl_cvalue->v_pointer = va_arg ((var_args), gpointer);				\
  |  |  239|      0|	  break;									\
  |  |  240|      0|	default:									\
  |  |  ------------------
  |  |  |  Branch (240:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  241|      0|	  g_assert_not_reached ();							\
  |  |  ------------------
  |  |  |  |  230|      0|#define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |               #define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  |  |  ------------------
  |  |  |  |               #define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  242|      0|	}										\
  |  |  243|      0|    }											\
  |  |  244|      0|  *(__error) = g_vl_vtable->lcopy_value (g_vl_value,						\
  |  |  245|      0|				     g_vl_n_values,						\
  |  |  246|      0|				     g_vl_cvalues,						\
  |  |  247|      0|				     g_vl_flags);						\
  |  |  248|      0|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3510|      0|		     var_args,
 3511|      0|		     static_scope ? G_VALUE_NOCOPY_CONTENTS : 0,
 3512|      0|		     &error);
 3513|      0|      if (!error)
  ------------------
  |  Branch (3513:11): [True: 0, False: 0]
  ------------------
 3514|      0|	g_value_unset (&return_value);
 3515|      0|      else
 3516|      0|	{
 3517|      0|	  g_warning ("%s: %s", G_STRLOC, error);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 3518|      0|	  g_free (error);
 3519|       |	  
 3520|       |	  /* we purposely leak the value here, it might not be
 3521|       |	   * in a correct state if an error condition occurred
 3522|       |	   */
 3523|      0|	}
 3524|      0|    }
 3525|  2.74k|  for (i = 0; i < n_params; i++)
  ------------------
  |  Branch (3525:15): [True: 1.37k, False: 1.37k]
  ------------------
 3526|  1.37k|    g_value_unset (param_values + i);
 3527|  1.37k|  g_value_unset (instance_and_params);
 3528|  1.37k|}
g_signal_emit:
 3549|   437k|{
 3550|   437k|  va_list var_args;
 3551|       |
 3552|   437k|  va_start (var_args, detail);
 3553|   437k|  g_signal_emit_valist (instance, signal_id, detail, var_args);
 3554|       |  va_end (var_args);
 3555|   437k|}
gsignal.c:signal_key_cmp:
  915|  43.3k|{
  916|  43.3k|  const SignalKey *key1 = node1, *key2 = node2;
  917|       |  
  918|  43.3k|  if (key1->itype == key2->itype)
  ------------------
  |  Branch (918:7): [True: 13.3k, False: 29.9k]
  ------------------
  919|  13.3k|    return G_BSEARCH_ARRAY_CMP (key1->quark, key2->quark);
  ------------------
  |  |   34|  13.3k|#define G_BSEARCH_ARRAY_CMP(v1,v2) ((v1) > (v2) ? +1 : (v1) == (v2) ? 0 : -1)
  |  |  ------------------
  |  |  |  Branch (34:37): [True: 3, False: 13.3k]
  |  |  |  Branch (34:56): [True: 3.32k, False: 9.99k]
  |  |  ------------------
  ------------------
  920|  29.9k|  else
  921|  29.9k|    return G_BSEARCH_ARRAY_CMP (key1->itype, key2->itype);
  ------------------
  |  |   34|  29.9k|#define G_BSEARCH_ARRAY_CMP(v1,v2) ((v1) > (v2) ? +1 : (v1) == (v2) ? 0 : -1)
  |  |  ------------------
  |  |  |  Branch (34:37): [True: 16.6k, False: 13.3k]
  |  |  |  Branch (34:56): [True: 0, False: 13.3k]
  |  |  ------------------
  ------------------
  922|  43.3k|}
gsignal.c:handler_hash:
  517|  6.65k|{
  518|  6.65k|  return (guint)((Handler*)key)->sequential_number;
  519|  6.65k|}
gsignal.c:handler_equal:
  523|  3.32k|{
  524|  3.32k|  Handler *ha = (Handler *)a;
  525|  3.32k|  Handler *hb = (Handler *)b;
  526|  3.32k|  return (ha->sequential_number == hb->sequential_number) &&
  ------------------
  |  Branch (526:10): [True: 3.32k, False: 1]
  ------------------
  527|  3.32k|      (ha->instance  == hb->instance);
  ------------------
  |  Branch (527:7): [True: 3.32k, False: 0]
  ------------------
  528|  3.32k|}
gsignal.c:LOOKUP_SIGNAL_NODE:
  338|   440k|{
  339|   440k|  if (signal_id < g_n_signal_nodes)
  ------------------
  |  Branch (339:7): [True: 440k, False: 0]
  ------------------
  340|   440k|    return g_signal_nodes[signal_id];
  341|      0|  else
  342|      0|    return NULL;
  343|   440k|}
gsignal.c:emission_find:
  889|  1.37k|{
  890|  1.37k|  Emission *emission;
  891|       |  
  892|  1.37k|  for (emission = g_emissions; emission; emission = emission->next)
  ------------------
  |  Branch (892:32): [True: 0, False: 1.37k]
  ------------------
  893|      0|    if (emission->instance == instance &&
  ------------------
  |  Branch (893:9): [True: 0, False: 0]
  ------------------
  894|      0|	emission->ihint.signal_id == signal_id &&
  ------------------
  |  Branch (894:2): [True: 0, False: 0]
  ------------------
  895|      0|	emission->ihint.detail == detail)
  ------------------
  |  Branch (895:2): [True: 0, False: 0]
  ------------------
  896|      0|      return emission;
  897|  1.37k|  return NULL;
  898|  1.37k|}
gsignal.c:signal_parse_name:
 1146|  3.32k|{
 1147|  3.32k|  const gchar *colon = strchr (name, ':');
 1148|  3.32k|  guint signal_id;
 1149|       |  
 1150|  3.32k|  if (!colon)
  ------------------
  |  Branch (1150:7): [True: 0, False: 3.32k]
  ------------------
 1151|      0|    {
 1152|      0|      signal_id = signal_id_lookup (name, itype);
 1153|      0|      if (signal_id && detail_p)
  ------------------
  |  Branch (1153:11): [True: 0, False: 0]
  |  Branch (1153:24): [True: 0, False: 0]
  ------------------
 1154|      0|	*detail_p = 0;
 1155|      0|    }
 1156|  3.32k|  else if (colon[1] == ':')
  ------------------
  |  Branch (1156:12): [True: 3.32k, False: 0]
  ------------------
 1157|  3.32k|    {
 1158|  3.32k|      gchar buffer[32];
 1159|  3.32k|      guint l = colon - name;
 1160|       |      
 1161|  3.32k|      if (colon[2] == '\0')
  ------------------
  |  Branch (1161:11): [True: 0, False: 3.32k]
  ------------------
 1162|      0|        return 0;
 1163|       |
 1164|  3.32k|      if (l < 32)
  ------------------
  |  Branch (1164:11): [True: 3.32k, False: 0]
  ------------------
 1165|  3.32k|	{
 1166|  3.32k|	  memcpy (buffer, name, l);
 1167|  3.32k|	  buffer[l] = 0;
 1168|  3.32k|	  signal_id = signal_id_lookup (buffer, itype);
 1169|  3.32k|	}
 1170|      0|      else
 1171|      0|	{
 1172|      0|	  gchar *signal = g_new (gchar, l + 1);
  ------------------
  |  |  290|      0|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      0|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      0|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      0|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      0|	  gpointer __p;						\
  |  |  |  |  239|      0|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|      0|	    __p = g_##func (__n);				\
  |  |  |  |  241|      0|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      0|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      0|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      0|	  else							\
  |  |  |  |  245|      0|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      0|	  __p;							\
  |  |  |  |  247|      0|	}))
  |  |  ------------------
  ------------------
 1173|       |	  
 1174|      0|	  memcpy (signal, name, l);
 1175|      0|	  signal[l] = 0;
 1176|      0|	  signal_id = signal_id_lookup (signal, itype);
 1177|      0|	  g_free (signal);
 1178|      0|	}
 1179|       |      
 1180|  3.32k|      if (signal_id && detail_p)
  ------------------
  |  Branch (1180:11): [True: 3.32k, False: 0]
  |  Branch (1180:24): [True: 3.32k, False: 0]
  ------------------
 1181|  3.32k|        *detail_p = (force_quark ? g_quark_from_string : g_quark_try_string) (colon + 2);
  ------------------
  |  Branch (1181:22): [True: 3.32k, False: 0]
  ------------------
 1182|  3.32k|    }
 1183|      0|  else
 1184|      0|    signal_id = 0;
 1185|  3.32k|  return signal_id;
 1186|  3.32k|}
gsignal.c:signal_id_lookup:
  398|  3.33k|{
  399|  3.33k|  GQuark quark;
  400|  3.33k|  GType *ifaces, type = itype;
  401|  3.33k|  SignalKey key;
  402|  3.33k|  guint n_ifaces;
  403|       |
  404|  3.33k|  quark = g_quark_try_string (name);
  405|  3.33k|  key.quark = quark;
  406|       |
  407|       |  /* try looking up signals for this type and its ancestors */
  408|  3.33k|  do
  409|  14.9k|    {
  410|  14.9k|      SignalKey *signal_key;
  411|       |      
  412|  14.9k|      key.itype = type;
  413|  14.9k|      signal_key = g_bsearch_array_lookup (g_signal_key_bsa, &g_signal_key_bconfig, &key);
  ------------------
  |  |   97|  14.9k|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
  ------------------
  414|       |      
  415|  14.9k|      if (signal_key)
  ------------------
  |  Branch (415:11): [True: 3.32k, False: 11.6k]
  ------------------
  416|  3.32k|	return signal_key->signal_id;
  417|       |      
  418|  11.6k|      type = g_type_parent (type);
  419|  11.6k|    }
  420|  11.6k|  while (type);
  ------------------
  |  Branch (420:10): [True: 11.6k, False: 5]
  ------------------
  421|       |
  422|       |  /* no luck, try interfaces it exports */
  423|      5|  ifaces = g_type_interfaces (itype, &n_ifaces);
  424|      9|  while (n_ifaces--)
  ------------------
  |  Branch (424:10): [True: 4, False: 5]
  ------------------
  425|      4|    {
  426|      4|      SignalKey *signal_key;
  427|       |
  428|      4|      key.itype = ifaces[n_ifaces];
  429|      4|      signal_key = g_bsearch_array_lookup (g_signal_key_bsa, &g_signal_key_bconfig, &key);
  ------------------
  |  |   97|      4|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
  ------------------
  430|       |
  431|      4|      if (signal_key)
  ------------------
  |  Branch (431:11): [True: 0, False: 4]
  ------------------
  432|      0|	{
  433|      0|	  g_free (ifaces);
  434|      0|	  return signal_key->signal_id;
  435|      0|	}
  436|      4|    }
  437|      5|  g_free (ifaces);
  438|       |
  439|       |  /* If the @name is non-canonical, try again. This is the slow path — people
  440|       |   * should use canonical names in their queries if they want performance. */
  441|      5|  if (!is_canonical (name))
  ------------------
  |  Branch (441:7): [True: 0, False: 5]
  ------------------
  442|      0|    {
  443|      0|      guint signal_id;
  444|      0|      gchar *name_copy = g_strdup (name);
  445|      0|      canonicalize_key (name_copy);
  446|       |
  447|      0|      signal_id = signal_id_lookup (name_copy, itype);
  448|       |
  449|      0|      g_free (name_copy);
  450|       |
  451|      0|      return signal_id;
  452|      0|    }
  453|       |
  454|      5|  return 0;
  455|      5|}
gsignal.c:is_canonical:
  366|     10|{
  367|       |  return (strchr (key, '_') == NULL);
  368|     10|}
gsignal.c:signal_add_class_closure:
 1639|      4|{
 1640|      4|  ClassClosure key;
 1641|       |
 1642|      4|  node->single_va_closure_is_valid = FALSE;
  ------------------
  |  |  814|      4|#define	FALSE	(0)
  ------------------
 1643|       |
 1644|      4|  if (!node->class_closure_bsa)
  ------------------
  |  Branch (1644:7): [True: 4, False: 0]
  ------------------
 1645|      4|    node->class_closure_bsa = g_bsearch_array_create (&g_class_closure_bconfig);
 1646|      4|  key.instance_type = itype;
 1647|      4|  key.closure = g_closure_ref (closure);
 1648|      4|  node->class_closure_bsa = g_bsearch_array_insert (node->class_closure_bsa,
 1649|      4|						    &g_class_closure_bconfig,
 1650|      4|						    &key);
 1651|      4|  g_closure_sink (closure);
 1652|      4|  if (node->c_marshaller && closure && G_CLOSURE_NEEDS_MARSHAL (closure))
  ------------------
  |  |   39|      4|#define	G_CLOSURE_NEEDS_MARSHAL(closure) (((GClosure*) (closure))->marshal == NULL)
  |  |  ------------------
  |  |  |  Branch (39:42): [True: 4, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1652:7): [True: 4, False: 0]
  |  Branch (1652:29): [True: 4, False: 0]
  ------------------
 1653|      4|    {
 1654|      4|      g_closure_set_marshal (closure, node->c_marshaller);
 1655|      4|      if (node->va_marshaller)
  ------------------
  |  Branch (1655:11): [True: 1, False: 3]
  ------------------
 1656|      1|	_g_closure_set_va_marshal (closure, node->va_marshaller);
 1657|      4|    }
 1658|      4|}
gsignal.c:signal_find_class_closure:
 1595|  1.37k|{
 1596|  1.37k|  GBSearchArray *bsa = node->class_closure_bsa;
 1597|  1.37k|  ClassClosure *cc;
 1598|       |
 1599|  1.37k|  if (bsa)
  ------------------
  |  Branch (1599:7): [True: 1.37k, False: 0]
  ------------------
 1600|  1.37k|    {
 1601|  1.37k|      ClassClosure key;
 1602|       |
 1603|       |      /* cc->instance_type is 0 for default closure */
 1604|       |
 1605|  1.37k|      if (g_bsearch_array_get_n_nodes (bsa) == 1)
  ------------------
  |  |   91|  1.37k|#define g_bsearch_array_get_n_nodes(barray)     (((GBSearchArray*) (barray))->n_nodes)
  ------------------
  |  Branch (1605:11): [True: 1.37k, False: 0]
  ------------------
 1606|  1.37k|        {
 1607|  1.37k|          cc = g_bsearch_array_get_nth (bsa, &g_class_closure_bconfig, 0);
 1608|  1.37k|          if (cc && cc->instance_type == 0) /* check for default closure */
  ------------------
  |  Branch (1608:15): [True: 1.37k, False: 0]
  |  Branch (1608:21): [True: 1.37k, False: 0]
  ------------------
 1609|  1.37k|            return cc;
 1610|  1.37k|        }
 1611|       |
 1612|      0|      key.instance_type = itype;
 1613|      0|      cc = g_bsearch_array_lookup (bsa, &g_class_closure_bconfig, &key);
  ------------------
  |  |   97|      0|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
  ------------------
 1614|      0|      while (!cc && key.instance_type)
  ------------------
  |  Branch (1614:14): [True: 0, False: 0]
  |  Branch (1614:21): [True: 0, False: 0]
  ------------------
 1615|      0|	{
 1616|      0|	  key.instance_type = g_type_parent (key.instance_type);
 1617|      0|	  cc = g_bsearch_array_lookup (bsa, &g_class_closure_bconfig, &key);
  ------------------
  |  |   97|      0|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
  ------------------
 1618|      0|	}
 1619|      0|    }
 1620|      0|  else
 1621|      0|    cc = NULL;
 1622|      0|  return cc;
 1623|  1.37k|}
gsignal.c:handler_new:
  685|  3.32k|{
  686|  3.32k|  Handler *handler = g_slice_new (Handler);
  ------------------
  |  |   46|  3.32k|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  ------------------
  687|  3.32k|#ifndef G_DISABLE_CHECKS
  688|  3.32k|  if (g_handler_sequential_number < 1)
  ------------------
  |  Branch (688:7): [True: 0, False: 3.32k]
  ------------------
  689|  3.32k|    g_error (G_STRLOC ": handler id overflow, %s", REPORT_BUG);
  ------------------
  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  337|      0|                        for (;;) ;                   \
  |  |  338|      0|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  690|  3.32k|#endif
  691|       |  
  692|  3.32k|  handler->sequential_number = g_handler_sequential_number++;
  693|  3.32k|  handler->prev = NULL;
  694|  3.32k|  handler->next = NULL;
  695|  3.32k|  handler->detail = 0;
  696|  3.32k|  handler->signal_id = signal_id;
  697|  3.32k|  handler->instance = instance;
  698|  3.32k|  handler->ref_count = 1;
  699|  3.32k|  handler->block_count = 0;
  700|  3.32k|  handler->after = after != FALSE;
  ------------------
  |  |  814|  3.32k|#define	FALSE	(0)
  ------------------
  701|  3.32k|  handler->closure = NULL;
  702|  3.32k|  handler->has_invalid_closure_notify = 0;
  703|       |
  704|  3.32k|  g_hash_table_add (g_handlers, handler);
  705|       |  
  706|  3.32k|  return handler;
  707|  3.32k|}
gsignal.c:handler_insert:
  779|  3.32k|{
  780|  3.32k|  HandlerList *hlist;
  781|       |  
  782|  3.32k|  g_assert (handler->prev == NULL && handler->next == NULL); /* paranoid */
  ------------------
  |  |  231|  3.32k|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.32k|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|  3.32k|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|  3.32k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.32k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.32k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.32k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  9.98k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.32k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.32k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.32k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.32k|   else                                         \
  |  |  |  |  |  | 1021|  3.32k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.32k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.32k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 3.32k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|  3.32k|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|  3.32k|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.32k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.32k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  783|       |
  784|  3.32k|  hlist = handler_list_ensure (signal_id, instance);
  785|  3.32k|  if (!hlist->handlers)
  ------------------
  |  Branch (785:7): [True: 832, False: 2.49k]
  ------------------
  786|    832|    {
  787|    832|      hlist->handlers = handler;
  788|    832|      if (!handler->after)
  ------------------
  |  Branch (788:11): [True: 832, False: 0]
  ------------------
  789|    832|        hlist->tail_before = handler;
  790|    832|    }
  791|  2.49k|  else if (handler->after)
  ------------------
  |  Branch (791:12): [True: 0, False: 2.49k]
  ------------------
  792|      0|    {
  793|      0|      handler->prev = hlist->tail_after;
  794|      0|      hlist->tail_after->next = handler;
  795|      0|    }
  796|  2.49k|  else
  797|  2.49k|    {
  798|  2.49k|      if (hlist->tail_before)
  ------------------
  |  Branch (798:11): [True: 2.49k, False: 0]
  ------------------
  799|  2.49k|        {
  800|  2.49k|          handler->next = hlist->tail_before->next;
  801|  2.49k|          if (handler->next)
  ------------------
  |  Branch (801:15): [True: 0, False: 2.49k]
  ------------------
  802|      0|            handler->next->prev = handler;
  803|  2.49k|          handler->prev = hlist->tail_before;
  804|  2.49k|          hlist->tail_before->next = handler;
  805|  2.49k|        }
  806|      0|      else /* insert !after handler into a list of only after handlers */
  807|      0|        {
  808|      0|          handler->next = hlist->handlers;
  809|      0|          if (handler->next)
  ------------------
  |  Branch (809:15): [True: 0, False: 0]
  ------------------
  810|      0|            handler->next->prev = handler;
  811|      0|          hlist->handlers = handler;
  812|      0|        }
  813|  2.49k|      hlist->tail_before = handler;
  814|  2.49k|    }
  815|       |
  816|  3.32k|  if (!handler->next)
  ------------------
  |  Branch (816:7): [True: 3.32k, False: 0]
  ------------------
  817|  3.32k|    hlist->tail_after = handler;
  818|  3.32k|}
gsignal.c:handler_list_ensure:
  478|  3.32k|{
  479|  3.32k|  GBSearchArray *hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance);
  480|  3.32k|  HandlerList key;
  481|       |  
  482|  3.32k|  key.signal_id = signal_id;
  483|  3.32k|  key.handlers    = NULL;
  484|  3.32k|  key.tail_before = NULL;
  485|  3.32k|  key.tail_after  = NULL;
  486|  3.32k|  if (!hlbsa)
  ------------------
  |  Branch (486:7): [True: 832, False: 2.49k]
  ------------------
  487|    832|    {
  488|    832|      hlbsa = g_bsearch_array_create (&g_signal_hlbsa_bconfig);
  489|    832|      hlbsa = g_bsearch_array_insert (hlbsa, &g_signal_hlbsa_bconfig, &key);
  490|    832|      g_hash_table_insert (g_handler_list_bsa_ht, instance, hlbsa);
  491|    832|    }
  492|  2.49k|  else
  493|  2.49k|    {
  494|  2.49k|      GBSearchArray *o = hlbsa;
  495|       |
  496|  2.49k|      hlbsa = g_bsearch_array_insert (o, &g_signal_hlbsa_bconfig, &key);
  497|  2.49k|      if (hlbsa != o)
  ------------------
  |  Branch (497:11): [True: 0, False: 2.49k]
  ------------------
  498|      0|	g_hash_table_insert (g_handler_list_bsa_ht, instance, hlbsa);
  499|  2.49k|    }
  500|  3.32k|  return g_bsearch_array_lookup (hlbsa, &g_signal_hlbsa_bconfig, &key);
  ------------------
  |  |   97|  3.32k|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
  ------------------
  501|  3.32k|}
gsignal.c:node_check_deprecated:
 2519|  3.32k|{
 2520|  3.32k|  static const gchar * g_enable_diagnostic = NULL;
 2521|       |
 2522|  3.32k|  if (G_UNLIKELY (!g_enable_diagnostic))
  ------------------
  |  | 1025|  3.32k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.32k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.32k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.32k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.32k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 1, False: 3.32k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.32k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.32k|   else                                         \
  |  |  |  | 1021|  3.32k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.32k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.32k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 1, False: 3.32k]
  |  |  ------------------
  ------------------
 2523|      1|    {
 2524|      1|      g_enable_diagnostic = g_getenv ("G_ENABLE_DIAGNOSTIC");
 2525|      1|      if (!g_enable_diagnostic)
  ------------------
  |  Branch (2525:11): [True: 1, False: 0]
  ------------------
 2526|      1|        g_enable_diagnostic = "0";
 2527|      1|    }
 2528|       |
 2529|  3.32k|  if (g_enable_diagnostic[0] == '1')
  ------------------
  |  Branch (2529:7): [True: 0, False: 3.32k]
  ------------------
 2530|      0|    {
 2531|      0|      if (node->flags & G_SIGNAL_DEPRECATED)
  ------------------
  |  Branch (2531:11): [True: 0, False: 0]
  ------------------
 2532|      0|        {
 2533|      0|          g_warning ("The signal %s::%s is deprecated and shouldn't be used "
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 2534|      0|                     "anymore. It will be removed in a future version.",
 2535|      0|                     type_debug_name (node->itype), node->name);
 2536|      0|        }
 2537|      0|    }
 2538|  3.32k|}
gsignal.c:handler_unref_R:
  721|  11.5k|{
  722|  11.5k|  g_return_if_fail (handler->ref_count > 0);
  ------------------
  |  |  630|  11.5k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  11.5k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  11.5k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  11.5k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  11.5k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  11.5k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  11.5k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  11.5k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11.5k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  11.5k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  11.5k|   else                                         \
  |  |  |  |  |  | 1021|  11.5k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  11.5k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  11.5k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 11.5k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  11.5k|      { } \
  |  |  633|  11.5k|    else \
  |  |  634|  11.5k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  11.5k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  11.5k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  723|       |
  724|  11.5k|  handler->ref_count--;
  725|       |
  726|  11.5k|  if (G_UNLIKELY (handler->ref_count == 0))
  ------------------
  |  | 1025|  11.5k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  11.5k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  11.5k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  11.5k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  11.5k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 3.32k, False: 8.23k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  11.5k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  11.5k|   else                                         \
  |  |  |  | 1021|  11.5k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  11.5k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  11.5k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 3.32k, False: 8.23k]
  |  |  ------------------
  ------------------
  727|  3.32k|    {
  728|  3.32k|      HandlerList *hlist = NULL;
  729|       |
  730|  3.32k|      if (handler->next)
  ------------------
  |  Branch (730:11): [True: 0, False: 3.32k]
  ------------------
  731|      0|        handler->next->prev = handler->prev;
  732|  3.32k|      if (handler->prev)    /* watch out for g_signal_handlers_destroy()! */
  ------------------
  |  Branch (732:11): [True: 3.32k, False: 0]
  ------------------
  733|  3.32k|        handler->prev->next = handler->next;
  734|      0|      else
  735|      0|        {
  736|      0|          hlist = handler_list_lookup (signal_id, instance);
  737|      0|          g_assert (hlist != NULL);
  ------------------
  |  |  231|      0|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      0|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      0|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      0|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  738|      0|          hlist->handlers = handler->next;
  739|      0|        }
  740|       |
  741|  3.32k|      if (instance)
  ------------------
  |  Branch (741:11): [True: 0, False: 3.32k]
  ------------------
  742|      0|        {
  743|       |          /*  check if we are removing the handler pointed to by tail_before  */
  744|      0|          if (!handler->after && (!handler->next || handler->next->after))
  ------------------
  |  Branch (744:15): [True: 0, False: 0]
  |  Branch (744:35): [True: 0, False: 0]
  |  Branch (744:53): [True: 0, False: 0]
  ------------------
  745|      0|            {
  746|      0|              if (!hlist)
  ------------------
  |  Branch (746:19): [True: 0, False: 0]
  ------------------
  747|      0|                hlist = handler_list_lookup (signal_id, instance);
  748|      0|              if (hlist)
  ------------------
  |  Branch (748:19): [True: 0, False: 0]
  ------------------
  749|      0|                {
  750|      0|                  g_assert (hlist->tail_before == handler); /* paranoid */
  ------------------
  |  |  231|      0|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      0|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      0|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      0|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  751|      0|                  hlist->tail_before = handler->prev;
  752|      0|                }
  753|      0|            }
  754|       |
  755|       |          /*  check if we are removing the handler pointed to by tail_after  */
  756|      0|          if (!handler->next)
  ------------------
  |  Branch (756:15): [True: 0, False: 0]
  ------------------
  757|      0|            {
  758|      0|              if (!hlist)
  ------------------
  |  Branch (758:19): [True: 0, False: 0]
  ------------------
  759|      0|                hlist = handler_list_lookup (signal_id, instance);
  760|      0|              if (hlist)
  ------------------
  |  Branch (760:19): [True: 0, False: 0]
  ------------------
  761|      0|                {
  762|      0|                  g_assert (hlist->tail_after == handler); /* paranoid */
  ------------------
  |  |  231|      0|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      0|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      0|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      0|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  763|      0|                  hlist->tail_after = handler->prev;
  764|      0|                }
  765|      0|            }
  766|      0|        }
  767|       |
  768|  3.32k|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  3.32k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  3.32k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  3.32k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  769|  3.32k|      g_closure_unref (handler->closure);
  770|  3.32k|      SIGNAL_LOCK ();
  ------------------
  |  |  328|  3.32k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  3.32k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  3.32k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  771|  3.32k|      g_slice_free (Handler, handler);
  ------------------
  |  |   79|  3.32k|#define g_slice_free(type, mem)                                 \
  |  |  ------------------
  |  |  |  |  874|  3.32k|#define G_STMT_START  do
  |  |  ------------------
  |  |   80|  3.32k|G_STMT_START {                                                  \
  |  |   81|  3.32k|  if (1) g_slice_free1 (sizeof (type), (mem));			\
  |  |  ------------------
  |  |  |  Branch (81:7): [True: 3.32k, Folded]
  |  |  ------------------
  |  |   82|  3.32k|  else   (void) ((type*) 0 == (mem)); 				\
  |  |   83|  3.32k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.32k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.32k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  772|  3.32k|    }
  773|  11.5k|}
gsignal.c:handler_lists_cmp:
  469|  13.5k|{
  470|  13.5k|  const HandlerList *hlist1 = node1, *hlist2 = node2;
  471|       |  
  472|  13.5k|  return G_BSEARCH_ARRAY_CMP (hlist1->signal_id, hlist2->signal_id);
  ------------------
  |  |   34|  13.5k|#define G_BSEARCH_ARRAY_CMP(v1,v2) ((v1) > (v2) ? +1 : (v1) == (v2) ? 0 : -1)
  |  |  ------------------
  |  |  |  Branch (34:37): [True: 0, False: 13.5k]
  |  |  |  Branch (34:56): [True: 13.5k, False: 0]
  |  |  ------------------
  ------------------
  473|  13.5k|}
gsignal.c:node_update_single_va_closure:
  822|      1|{
  823|      1|  GClosure *closure = NULL;
  824|      1|  gboolean is_after = FALSE;
  ------------------
  |  |  814|      1|#define	FALSE	(0)
  ------------------
  825|       |
  826|       |  /* Fast path single-handler without boxing the arguments in GValues */
  827|      1|  if (G_TYPE_IS_OBJECT (node->itype) &&
  ------------------
  |  |   47|      2|#define G_TYPE_IS_OBJECT(type)      (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT)
  |  |  ------------------
  |  |  |  |   38|      1|#define G_TYPE_FUNDAMENTAL(type)	(g_type_fundamental (type))
  |  |  ------------------
  |  |               #define G_TYPE_IS_OBJECT(type)      (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT)
  |  |  ------------------
  |  |  |  |  178|      1|#define G_TYPE_OBJECT			G_TYPE_MAKE_FUNDAMENTAL (20)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (47:37): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  828|      1|      (node->flags & (G_SIGNAL_MUST_COLLECT)) == 0 &&
  ------------------
  |  Branch (828:7): [True: 1, False: 0]
  ------------------
  829|      1|      (node->emission_hooks == NULL || node->emission_hooks->hooks == NULL))
  ------------------
  |  Branch (829:8): [True: 1, False: 0]
  |  Branch (829:40): [True: 0, False: 0]
  ------------------
  830|      1|    {
  831|      1|      GSignalFlags run_type;
  832|      1|      ClassClosure * cc; 
  833|      1|      GBSearchArray *bsa = node->class_closure_bsa;
  834|       |
  835|      1|      if (bsa == NULL || bsa->n_nodes == 0)
  ------------------
  |  Branch (835:11): [True: 0, False: 1]
  |  Branch (835:26): [True: 0, False: 1]
  ------------------
  836|      0|	closure = SINGLE_VA_CLOSURE_EMPTY_MAGIC;
  ------------------
  |  |  250|      0|#define	SINGLE_VA_CLOSURE_EMPTY_MAGIC GINT_TO_POINTER(1)	/* indicates single_va_closure is valid but empty */
  |  |  ------------------
  |  |  |  |  101|      0|#define GINT_TO_POINTER(i)	((gpointer) (glong) (i))
  |  |  ------------------
  ------------------
  837|      1|      else if (bsa->n_nodes == 1)
  ------------------
  |  Branch (837:16): [True: 1, False: 0]
  ------------------
  838|      1|	{
  839|       |	  /* Look for default class closure (can't support non-default as it
  840|       |	     chains up using GValues */
  841|      1|	  cc = g_bsearch_array_get_nth (bsa, &g_class_closure_bconfig, 0);
  842|      1|	  if (cc->instance_type == 0)
  ------------------
  |  Branch (842:8): [True: 1, False: 0]
  ------------------
  843|      1|	    {
  844|      1|	      run_type = node->flags & (G_SIGNAL_RUN_FIRST|G_SIGNAL_RUN_LAST|G_SIGNAL_RUN_CLEANUP);
  845|       |	      /* Only support *one* of run-first or run-last, not multiple or cleanup */
  846|      1|	      if (run_type == G_SIGNAL_RUN_FIRST ||
  ------------------
  |  Branch (846:12): [True: 1, False: 0]
  ------------------
  847|      0|		  run_type == G_SIGNAL_RUN_LAST)
  ------------------
  |  Branch (847:5): [True: 0, False: 0]
  ------------------
  848|      1|		{
  849|      1|		  closure = cc->closure;
  850|      1|		  is_after = (run_type == G_SIGNAL_RUN_LAST);
  851|      1|		}
  852|      1|	    }
  853|      1|	}
  854|      1|    }
  855|       |
  856|      1|  node->single_va_closure_is_valid = TRUE;
  ------------------
  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  857|      1|  node->single_va_closure = closure;
  858|      1|  node->single_va_closure_is_after = is_after;
  859|      1|}
gsignal.c:handler_list_lookup:
  506|  7.73k|{
  507|  7.73k|  GBSearchArray *hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance);
  508|  7.73k|  HandlerList key;
  509|       |  
  510|  7.73k|  key.signal_id = signal_id;
  511|       |  
  512|  7.73k|  return hlbsa ? g_bsearch_array_lookup (hlbsa, &g_signal_hlbsa_bconfig, &key) : NULL;
  ------------------
  |  |   97|  7.73k|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
  ------------------
  |  Branch (512:10): [True: 7.73k, False: 0]
  ------------------
  513|  7.73k|}
gsignal.c:emission_push:
  863|  1.37k|{
  864|  1.37k|  emission->next = g_emissions;
  865|  1.37k|  g_emissions = emission;
  866|  1.37k|}
gsignal.c:handler_ref:
  711|  8.23k|{
  712|  8.23k|  g_return_if_fail (handler->ref_count > 0);
  ------------------
  |  |  630|  8.23k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  8.23k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  8.23k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  8.23k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  8.23k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  8.23k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  8.23k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  8.23k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 8.23k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  8.23k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  8.23k|   else                                         \
  |  |  |  |  |  | 1021|  8.23k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  8.23k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  8.23k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 8.23k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  8.23k|      { } \
  |  |  633|  8.23k|    else \
  |  |  634|  8.23k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  8.23k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  8.23k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 8.23k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  713|       |  
  714|  8.23k|  handler->ref_count++;
  715|  8.23k|}
gsignal.c:accumulate:
 3235|  4.11k|{
 3236|  4.11k|  gboolean continue_emission;
 3237|       |
 3238|  4.11k|  if (!accumulator)
  ------------------
  |  Branch (3238:7): [True: 4.11k, False: 0]
  ------------------
 3239|  4.11k|    return TRUE;
  ------------------
  |  |  818|  4.11k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  4.11k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3240|       |
 3241|      0|  continue_emission = accumulator->func (ihint, return_accu, handler_return, accumulator->data);
 3242|      0|  g_value_reset (handler_return);
 3243|       |
 3244|      0|  ihint->run_type &= ~G_SIGNAL_ACCUMULATOR_FIRST_RUN;
 3245|       |
 3246|      0|  return continue_emission;
 3247|  4.11k|}
gsignal.c:emission_pop:
  870|  1.37k|{
  871|  1.37k|  Emission *node, *last = NULL;
  872|       |
  873|  1.37k|  for (node = g_emissions; node; last = node, node = last->next)
  ------------------
  |  Branch (873:28): [True: 1.37k, False: 0]
  ------------------
  874|  1.37k|    if (node == emission)
  ------------------
  |  Branch (874:9): [True: 1.37k, False: 0]
  ------------------
  875|  1.37k|      {
  876|  1.37k|	if (last)
  ------------------
  |  Branch (876:6): [True: 0, False: 1.37k]
  ------------------
  877|      0|	  last->next = node->next;
  878|  1.37k|	else
  879|  1.37k|	  g_emissions = node->next;
  880|  1.37k|	return;
  881|  1.37k|      }
  882|  1.37k|  g_assert_not_reached ();
  ------------------
  |  |  230|  1.37k|#define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |               #define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |               #define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.37k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  883|      0|}
gsignal.c:signal_emit_unlocked_R:
 3607|  1.37k|{
 3608|  1.37k|  SignalAccumulator *accumulator;
 3609|  1.37k|  Emission emission;
 3610|  1.37k|  GClosure *class_closure;
 3611|  1.37k|  HandlerList *hlist;
 3612|  1.37k|  Handler *handler_list = NULL;
 3613|  1.37k|  GValue *return_accu, accu = G_VALUE_INIT;
  ------------------
  |  |  202|  1.37k|#define G_VALUE_INIT  { 0, { { 0 } } }
  ------------------
 3614|  1.37k|  guint signal_id;
 3615|  1.37k|  gulong max_sequential_handler_number;
 3616|  1.37k|  gboolean return_value_altered = FALSE;
  ------------------
  |  |  814|  1.37k|#define	FALSE	(0)
  ------------------
 3617|       |  
 3618|  1.37k|  TRACE(GOBJECT_SIGNAL_EMIT(node->signal_id, detail, instance, G_TYPE_FROM_INSTANCE (instance)));
 3619|       |
 3620|  1.37k|  SIGNAL_LOCK ();
  ------------------
  |  |  328|  1.37k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  1.37k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  1.37k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3621|  1.37k|  signal_id = node->signal_id;
 3622|       |
 3623|  1.37k|  if (node->flags & G_SIGNAL_NO_RECURSE)
  ------------------
  |  Branch (3623:7): [True: 1.37k, False: 0]
  ------------------
 3624|  1.37k|    {
 3625|  1.37k|      Emission *node = emission_find (signal_id, detail, instance);
 3626|       |      
 3627|  1.37k|      if (node)
  ------------------
  |  Branch (3627:11): [True: 0, False: 1.37k]
  ------------------
 3628|      0|	{
 3629|      0|	  node->state = EMISSION_RESTART;
 3630|      0|	  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3631|      0|	  return return_value_altered;
 3632|      0|	}
 3633|  1.37k|    }
 3634|  1.37k|  accumulator = node->accumulator;
 3635|  1.37k|  if (accumulator)
  ------------------
  |  Branch (3635:7): [True: 0, False: 1.37k]
  ------------------
 3636|      0|    {
 3637|      0|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3638|      0|      g_value_init (&accu, node->return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE);
  ------------------
  |  |  213|      0|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  ------------------
  |  |  |  | 2353|      0|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  ------------------
  ------------------
 3639|      0|      return_accu = &accu;
 3640|      0|      SIGNAL_LOCK ();
  ------------------
  |  |  328|      0|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|      0|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3641|      0|    }
 3642|  1.37k|  else
 3643|  1.37k|    return_accu = emission_return;
 3644|  1.37k|  emission.instance = instance;
 3645|  1.37k|  emission.ihint.signal_id = node->signal_id;
 3646|  1.37k|  emission.ihint.detail = detail;
 3647|  1.37k|  emission.ihint.run_type = 0;
 3648|  1.37k|  emission.state = 0;
 3649|  1.37k|  emission.chain_type = G_TYPE_NONE;
  ------------------
  |  |   62|  1.37k|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|  1.37k|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|  1.37k|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3650|  1.37k|  emission_push (&emission);
 3651|  1.37k|  class_closure = signal_lookup_closure (node, instance);
 3652|       |  
 3653|  1.37k| EMIT_RESTART:
 3654|       |  
 3655|  1.37k|  if (handler_list)
  ------------------
  |  Branch (3655:7): [True: 0, False: 1.37k]
  ------------------
 3656|      0|    handler_unref_R (signal_id, instance, handler_list);
 3657|  1.37k|  max_sequential_handler_number = g_handler_sequential_number;
 3658|  1.37k|  hlist = handler_list_lookup (signal_id, instance);
 3659|  1.37k|  handler_list = hlist ? hlist->handlers : NULL;
  ------------------
  |  Branch (3659:18): [True: 1.37k, False: 0]
  ------------------
 3660|  1.37k|  if (handler_list)
  ------------------
  |  Branch (3660:7): [True: 1.37k, False: 0]
  ------------------
 3661|  1.37k|    handler_ref (handler_list);
 3662|       |  
 3663|  1.37k|  emission.ihint.run_type = G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN;
 3664|       |  
 3665|  1.37k|  if ((node->flags & G_SIGNAL_RUN_FIRST) && class_closure)
  ------------------
  |  Branch (3665:7): [True: 1.37k, False: 0]
  |  Branch (3665:45): [True: 1.37k, False: 0]
  ------------------
 3666|  1.37k|    {
 3667|  1.37k|      emission.state = EMISSION_RUN;
 3668|       |
 3669|  1.37k|      emission.chain_type = G_TYPE_FROM_INSTANCE (instance);
  ------------------
  |  |  602|  1.37k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|  1.37k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
 3670|  1.37k|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  1.37k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  1.37k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  1.37k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3671|  1.37k|      g_closure_invoke (class_closure,
 3672|  1.37k|			return_accu,
 3673|  1.37k|			node->n_params + 1,
 3674|  1.37k|			instance_and_params,
 3675|  1.37k|			&emission.ihint);
 3676|  1.37k|      if (!accumulate (&emission.ihint, emission_return, &accu, accumulator) &&
  ------------------
  |  Branch (3676:11): [True: 0, False: 1.37k]
  ------------------
 3677|      0|	  emission.state == EMISSION_RUN)
  ------------------
  |  Branch (3677:4): [True: 0, False: 0]
  ------------------
 3678|      0|	emission.state = EMISSION_STOP;
 3679|  1.37k|      SIGNAL_LOCK ();
  ------------------
  |  |  328|  1.37k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  1.37k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  1.37k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3680|  1.37k|      emission.chain_type = G_TYPE_NONE;
  ------------------
  |  |   62|  1.37k|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|  1.37k|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|  1.37k|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3681|  1.37k|      return_value_altered = TRUE;
  ------------------
  |  |  818|  1.37k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.37k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3682|       |      
 3683|  1.37k|      if (emission.state == EMISSION_STOP)
  ------------------
  |  Branch (3683:11): [True: 0, False: 1.37k]
  ------------------
 3684|      0|	goto EMIT_CLEANUP;
 3685|  1.37k|      else if (emission.state == EMISSION_RESTART)
  ------------------
  |  Branch (3685:16): [True: 0, False: 1.37k]
  ------------------
 3686|      0|	goto EMIT_RESTART;
 3687|  1.37k|    }
 3688|       |  
 3689|  1.37k|  if (node->emission_hooks)
  ------------------
  |  Branch (3689:7): [True: 0, False: 1.37k]
  ------------------
 3690|      0|    {
 3691|      0|      gboolean need_destroy, was_in_call, may_recurse = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3692|      0|      GHook *hook;
 3693|       |
 3694|      0|      emission.state = EMISSION_HOOK;
 3695|      0|      hook = g_hook_first_valid (node->emission_hooks, may_recurse);
 3696|      0|      while (hook)
  ------------------
  |  Branch (3696:14): [True: 0, False: 0]
  ------------------
 3697|      0|	{
 3698|      0|	  SignalHook *signal_hook = SIGNAL_HOOK (hook);
  ------------------
  |  |  224|      0|#define	SIGNAL_HOOK(hook)	((SignalHook*) (hook))
  ------------------
 3699|       |	  
 3700|      0|	  if (!signal_hook->detail || signal_hook->detail == detail)
  ------------------
  |  Branch (3700:8): [True: 0, False: 0]
  |  Branch (3700:32): [True: 0, False: 0]
  ------------------
 3701|      0|	    {
 3702|      0|	      GSignalEmissionHook hook_func = (GSignalEmissionHook) hook->func;
 3703|       |	      
 3704|      0|	      was_in_call = G_HOOK_IN_CALL (hook);
  ------------------
  |  |   91|      0|#define	G_HOOK_IN_CALL(hook)		((G_HOOK_FLAGS (hook) & \
  |  |  ------------------
  |  |  |  |   88|      0|#define	G_HOOK_FLAGS(hook)		(G_HOOK (hook)->flags)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define	G_HOOK(hook)			((GHook*) (hook))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      0|					  G_HOOK_FLAG_IN_CALL) != 0)
  ------------------
 3705|      0|	      hook->flags |= G_HOOK_FLAG_IN_CALL;
 3706|      0|              SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3707|      0|	      need_destroy = !hook_func (&emission.ihint, node->n_params + 1, instance_and_params, hook->data);
 3708|      0|	      SIGNAL_LOCK ();
  ------------------
  |  |  328|      0|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|      0|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3709|      0|	      if (!was_in_call)
  ------------------
  |  Branch (3709:12): [True: 0, False: 0]
  ------------------
 3710|      0|		hook->flags &= ~G_HOOK_FLAG_IN_CALL;
 3711|      0|	      if (need_destroy)
  ------------------
  |  Branch (3711:12): [True: 0, False: 0]
  ------------------
 3712|      0|		g_hook_destroy_link (node->emission_hooks, hook);
 3713|      0|	    }
 3714|      0|	  hook = g_hook_next_valid (node->emission_hooks, hook, may_recurse);
 3715|      0|	}
 3716|       |      
 3717|      0|      if (emission.state == EMISSION_RESTART)
  ------------------
  |  Branch (3717:11): [True: 0, False: 0]
  ------------------
 3718|      0|	goto EMIT_RESTART;
 3719|      0|    }
 3720|       |  
 3721|  1.37k|  if (handler_list)
  ------------------
  |  Branch (3721:7): [True: 1.37k, False: 0]
  ------------------
 3722|  1.37k|    {
 3723|  1.37k|      Handler *handler = handler_list;
 3724|       |      
 3725|  1.37k|      emission.state = EMISSION_RUN;
 3726|  1.37k|      handler_ref (handler);
 3727|  1.37k|      do
 3728|  5.49k|	{
 3729|  5.49k|	  Handler *tmp;
 3730|       |	  
 3731|  5.49k|	  if (handler->after)
  ------------------
  |  Branch (3731:8): [True: 0, False: 5.49k]
  ------------------
 3732|      0|	    {
 3733|      0|	      handler_unref_R (signal_id, instance, handler_list);
 3734|      0|	      handler_list = handler;
 3735|      0|	      break;
 3736|      0|	    }
 3737|  5.49k|	  else if (!handler->block_count && (!handler->detail || handler->detail == detail) &&
  ------------------
  |  Branch (3737:13): [True: 5.49k, False: 0]
  |  Branch (3737:39): [True: 0, False: 5.49k]
  |  Branch (3737:59): [True: 2.74k, False: 2.74k]
  ------------------
 3738|  2.74k|		   handler->sequential_number < max_sequential_handler_number)
  ------------------
  |  Branch (3738:6): [True: 2.74k, False: 0]
  ------------------
 3739|  2.74k|	    {
 3740|  2.74k|	      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  2.74k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  2.74k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  2.74k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3741|  2.74k|	      g_closure_invoke (handler->closure,
 3742|  2.74k|				return_accu,
 3743|  2.74k|				node->n_params + 1,
 3744|  2.74k|				instance_and_params,
 3745|  2.74k|				&emission.ihint);
 3746|  2.74k|	      if (!accumulate (&emission.ihint, emission_return, &accu, accumulator) &&
  ------------------
  |  Branch (3746:12): [True: 0, False: 2.74k]
  ------------------
 3747|      0|		  emission.state == EMISSION_RUN)
  ------------------
  |  Branch (3747:5): [True: 0, False: 0]
  ------------------
 3748|      0|		emission.state = EMISSION_STOP;
 3749|  2.74k|	      SIGNAL_LOCK ();
  ------------------
  |  |  328|  2.74k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  2.74k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  2.74k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3750|  2.74k|	      return_value_altered = TRUE;
  ------------------
  |  |  818|  2.74k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  2.74k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3751|       |	      
 3752|  2.74k|	      tmp = emission.state == EMISSION_RUN ? handler->next : NULL;
  ------------------
  |  Branch (3752:14): [True: 2.74k, False: 0]
  ------------------
 3753|  2.74k|	    }
 3754|  2.74k|	  else
 3755|  2.74k|	    tmp = handler->next;
 3756|       |	  
 3757|  5.49k|	  if (tmp)
  ------------------
  |  Branch (3757:8): [True: 4.11k, False: 1.37k]
  ------------------
 3758|  4.11k|	    handler_ref (tmp);
 3759|  5.49k|	  handler_unref_R (signal_id, instance, handler_list);
 3760|  5.49k|	  handler_list = handler;
 3761|  5.49k|	  handler = tmp;
 3762|  5.49k|	}
 3763|  5.49k|      while (handler);
  ------------------
  |  Branch (3763:14): [True: 4.11k, False: 1.37k]
  ------------------
 3764|       |      
 3765|  1.37k|      if (emission.state == EMISSION_STOP)
  ------------------
  |  Branch (3765:11): [True: 0, False: 1.37k]
  ------------------
 3766|      0|	goto EMIT_CLEANUP;
 3767|  1.37k|      else if (emission.state == EMISSION_RESTART)
  ------------------
  |  Branch (3767:16): [True: 0, False: 1.37k]
  ------------------
 3768|      0|	goto EMIT_RESTART;
 3769|  1.37k|    }
 3770|       |  
 3771|  1.37k|  emission.ihint.run_type &= ~G_SIGNAL_RUN_FIRST;
 3772|  1.37k|  emission.ihint.run_type |= G_SIGNAL_RUN_LAST;
 3773|       |  
 3774|  1.37k|  if ((node->flags & G_SIGNAL_RUN_LAST) && class_closure)
  ------------------
  |  Branch (3774:7): [True: 0, False: 1.37k]
  |  Branch (3774:44): [True: 0, False: 0]
  ------------------
 3775|      0|    {
 3776|      0|      emission.state = EMISSION_RUN;
 3777|       |      
 3778|      0|      emission.chain_type = G_TYPE_FROM_INSTANCE (instance);
  ------------------
  |  |  602|      0|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|      0|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
 3779|      0|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3780|      0|      g_closure_invoke (class_closure,
 3781|      0|			return_accu,
 3782|      0|			node->n_params + 1,
 3783|      0|			instance_and_params,
 3784|      0|			&emission.ihint);
 3785|      0|      if (!accumulate (&emission.ihint, emission_return, &accu, accumulator) &&
  ------------------
  |  Branch (3785:11): [True: 0, False: 0]
  ------------------
 3786|      0|	  emission.state == EMISSION_RUN)
  ------------------
  |  Branch (3786:4): [True: 0, False: 0]
  ------------------
 3787|      0|	emission.state = EMISSION_STOP;
 3788|      0|      SIGNAL_LOCK ();
  ------------------
  |  |  328|      0|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|      0|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3789|      0|      emission.chain_type = G_TYPE_NONE;
  ------------------
  |  |   62|      0|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      0|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3790|      0|      return_value_altered = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3791|       |      
 3792|      0|      if (emission.state == EMISSION_STOP)
  ------------------
  |  Branch (3792:11): [True: 0, False: 0]
  ------------------
 3793|      0|	goto EMIT_CLEANUP;
 3794|      0|      else if (emission.state == EMISSION_RESTART)
  ------------------
  |  Branch (3794:16): [True: 0, False: 0]
  ------------------
 3795|      0|	goto EMIT_RESTART;
 3796|      0|    }
 3797|       |  
 3798|  1.37k|  if (handler_list)
  ------------------
  |  Branch (3798:7): [True: 1.37k, False: 0]
  ------------------
 3799|  1.37k|    {
 3800|  1.37k|      Handler *handler = handler_list;
 3801|       |      
 3802|  1.37k|      emission.state = EMISSION_RUN;
 3803|  1.37k|      handler_ref (handler);
 3804|  1.37k|      do
 3805|  1.37k|	{
 3806|  1.37k|	  Handler *tmp;
 3807|       |	  
 3808|  1.37k|	  if (handler->after && !handler->block_count && (!handler->detail || handler->detail == detail) &&
  ------------------
  |  Branch (3808:8): [True: 0, False: 1.37k]
  |  Branch (3808:26): [True: 0, False: 0]
  |  Branch (3808:52): [True: 0, False: 0]
  |  Branch (3808:72): [True: 0, False: 0]
  ------------------
 3809|      0|	      handler->sequential_number < max_sequential_handler_number)
  ------------------
  |  Branch (3809:8): [True: 0, False: 0]
  ------------------
 3810|      0|	    {
 3811|      0|	      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3812|      0|	      g_closure_invoke (handler->closure,
 3813|      0|				return_accu,
 3814|      0|				node->n_params + 1,
 3815|      0|				instance_and_params,
 3816|      0|				&emission.ihint);
 3817|      0|	      if (!accumulate (&emission.ihint, emission_return, &accu, accumulator) &&
  ------------------
  |  Branch (3817:12): [True: 0, False: 0]
  ------------------
 3818|      0|		  emission.state == EMISSION_RUN)
  ------------------
  |  Branch (3818:5): [True: 0, False: 0]
  ------------------
 3819|      0|		emission.state = EMISSION_STOP;
 3820|      0|	      SIGNAL_LOCK ();
  ------------------
  |  |  328|      0|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|      0|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3821|      0|	      return_value_altered = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3822|       |	      
 3823|      0|	      tmp = emission.state == EMISSION_RUN ? handler->next : NULL;
  ------------------
  |  Branch (3823:14): [True: 0, False: 0]
  ------------------
 3824|      0|	    }
 3825|  1.37k|	  else
 3826|  1.37k|	    tmp = handler->next;
 3827|       |	  
 3828|  1.37k|	  if (tmp)
  ------------------
  |  Branch (3828:8): [True: 0, False: 1.37k]
  ------------------
 3829|      0|	    handler_ref (tmp);
 3830|  1.37k|	  handler_unref_R (signal_id, instance, handler);
 3831|  1.37k|	  handler = tmp;
 3832|  1.37k|	}
 3833|  1.37k|      while (handler);
  ------------------
  |  Branch (3833:14): [True: 0, False: 1.37k]
  ------------------
 3834|       |      
 3835|  1.37k|      if (emission.state == EMISSION_STOP)
  ------------------
  |  Branch (3835:11): [True: 0, False: 1.37k]
  ------------------
 3836|      0|	goto EMIT_CLEANUP;
 3837|  1.37k|      else if (emission.state == EMISSION_RESTART)
  ------------------
  |  Branch (3837:16): [True: 0, False: 1.37k]
  ------------------
 3838|      0|	goto EMIT_RESTART;
 3839|  1.37k|    }
 3840|       |  
 3841|  1.37k| EMIT_CLEANUP:
 3842|       |  
 3843|  1.37k|  emission.ihint.run_type &= ~G_SIGNAL_RUN_LAST;
 3844|  1.37k|  emission.ihint.run_type |= G_SIGNAL_RUN_CLEANUP;
 3845|       |  
 3846|  1.37k|  if ((node->flags & G_SIGNAL_RUN_CLEANUP) && class_closure)
  ------------------
  |  Branch (3846:7): [True: 0, False: 1.37k]
  |  Branch (3846:47): [True: 0, False: 0]
  ------------------
 3847|      0|    {
 3848|      0|      gboolean need_unset = FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 3849|       |      
 3850|      0|      emission.state = EMISSION_STOP;
 3851|       |      
 3852|      0|      emission.chain_type = G_TYPE_FROM_INSTANCE (instance);
  ------------------
  |  |  602|      0|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|      0|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
 3853|      0|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3854|      0|      if (node->return_type != G_TYPE_NONE && !accumulator)
  ------------------
  |  |   62|      0|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      0|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3854:11): [True: 0, False: 0]
  |  Branch (3854:47): [True: 0, False: 0]
  ------------------
 3855|      0|	{
 3856|      0|	  g_value_init (&accu, node->return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE);
  ------------------
  |  |  213|      0|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  ------------------
  |  |  |  | 2353|      0|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  ------------------
  ------------------
 3857|      0|	  need_unset = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3858|      0|	}
 3859|      0|      g_closure_invoke (class_closure,
 3860|      0|			node->return_type != G_TYPE_NONE ? &accu : NULL,
  ------------------
  |  |   62|      0|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      0|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3860:4): [True: 0, False: 0]
  ------------------
 3861|      0|			node->n_params + 1,
 3862|      0|			instance_and_params,
 3863|      0|			&emission.ihint);
 3864|      0|      if (!accumulate (&emission.ihint, emission_return, &accu, accumulator) &&
  ------------------
  |  Branch (3864:11): [True: 0, False: 0]
  ------------------
 3865|      0|          emission.state == EMISSION_RUN)
  ------------------
  |  Branch (3865:11): [True: 0, False: 0]
  ------------------
 3866|      0|        emission.state = EMISSION_STOP;
 3867|      0|      if (need_unset)
  ------------------
  |  Branch (3867:11): [True: 0, False: 0]
  ------------------
 3868|      0|	g_value_unset (&accu);
 3869|      0|      SIGNAL_LOCK ();
  ------------------
  |  |  328|      0|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|      0|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3870|      0|      return_value_altered = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3871|       |
 3872|      0|      emission.chain_type = G_TYPE_NONE;
  ------------------
  |  |   62|      0|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      0|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3873|       |      
 3874|      0|      if (emission.state == EMISSION_RESTART)
  ------------------
  |  Branch (3874:11): [True: 0, False: 0]
  ------------------
 3875|      0|	goto EMIT_RESTART;
 3876|      0|    }
 3877|       |  
 3878|  1.37k|  if (handler_list)
  ------------------
  |  Branch (3878:7): [True: 1.37k, False: 0]
  ------------------
 3879|  1.37k|    handler_unref_R (signal_id, instance, handler_list);
 3880|       |  
 3881|  1.37k|  emission_pop (&emission);
 3882|  1.37k|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  1.37k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  1.37k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  1.37k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3883|  1.37k|  if (accumulator)
  ------------------
  |  Branch (3883:7): [True: 0, False: 1.37k]
  ------------------
 3884|      0|    g_value_unset (&accu);
 3885|       |
 3886|  1.37k|  TRACE(GOBJECT_SIGNAL_EMIT_END(node->signal_id, detail, instance, G_TYPE_FROM_INSTANCE (instance)));
 3887|       |
 3888|  1.37k|  return return_value_altered;
 3889|  1.37k|}
gsignal.c:signal_lookup_closure:
 1628|  1.37k|{
 1629|  1.37k|  ClassClosure *cc;
 1630|       |
 1631|  1.37k|  cc = signal_find_class_closure (node, G_TYPE_FROM_INSTANCE (instance));
  ------------------
  |  |  602|  1.37k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|  1.37k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
 1632|  1.37k|  return cc ? cc->closure : NULL;
  ------------------
  |  Branch (1632:10): [True: 1.37k, False: 0]
  ------------------
 1633|  1.37k|}
gsignal.c:remove_invalid_closure_notify:
 3902|  3.32k|{
 3903|  3.32k|  if (handler->has_invalid_closure_notify)
  ------------------
  |  Branch (3903:7): [True: 0, False: 3.32k]
  ------------------
 3904|      0|    {
 3905|      0|      g_closure_remove_invalidate_notifier (handler->closure, instance, invalid_closure_notify);
 3906|      0|      handler->has_invalid_closure_notify = 0;
 3907|      0|    }
 3908|  3.32k|}

g_type_interface_add_prerequisite:
 1565|      4|{
 1566|      4|  TypeNode *iface, *prerequisite_node;
 1567|      4|  IFaceHolder *holders;
 1568|       |  
 1569|      4|  g_return_if_fail (G_TYPE_IS_INTERFACE (interface_type));	/* G_TYPE_IS_INTERFACE() is an external call: _U */
  ------------------
  |  |  630|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      4|      { } \
  |  |  633|      4|    else \
  |  |  634|      4|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1570|      4|  g_return_if_fail (!g_type_is_a (interface_type, prerequisite_type));
  ------------------
  |  |  630|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      4|      { } \
  |  |  633|      4|    else \
  |  |  634|      4|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1571|      4|  g_return_if_fail (!g_type_is_a (prerequisite_type, interface_type));
  ------------------
  |  |  630|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      4|      { } \
  |  |  633|      4|    else \
  |  |  634|      4|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1572|       |  
 1573|      4|  iface = lookup_type_node_I (interface_type);
 1574|      4|  prerequisite_node = lookup_type_node_I (prerequisite_type);
 1575|      4|  if (!iface || !prerequisite_node || !NODE_IS_IFACE (iface))
  ------------------
  |  |  258|      4|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|      4|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      4|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1575:7): [True: 0, False: 4]
  |  Branch (1575:17): [True: 0, False: 4]
  |  Branch (1575:39): [True: 0, False: 4]
  ------------------
 1576|      0|    {
 1577|      0|      g_warning ("interface type '%s' or prerequisite type '%s' invalid",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1578|      0|		 type_descriptive_name_I (interface_type),
 1579|      0|		 type_descriptive_name_I (prerequisite_type));
 1580|      0|      return;
 1581|      0|    }
 1582|      4|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      4|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 1583|      4|  holders = iface_node_get_holders_L (iface);
  ------------------
  |  |  263|      4|#define	iface_node_get_holders_L(node)		((IFaceHolder*) type_get_qdata_L ((node), static_quark_iface_holder))
  ------------------
 1584|      4|  if (holders)
  ------------------
  |  Branch (1584:7): [True: 0, False: 4]
  ------------------
 1585|      0|    {
 1586|      0|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      0|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 1587|      0|      g_warning ("unable to add prerequisite '%s' to interface '%s' which is already in use for '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1588|      0|		 type_descriptive_name_I (prerequisite_type),
 1589|      0|		 type_descriptive_name_I (interface_type),
 1590|      0|		 type_descriptive_name_I (holders->instance_type));
 1591|      0|      return;
 1592|      0|    }
 1593|      4|  if (prerequisite_node->is_instantiatable)
  ------------------
  |  Branch (1593:7): [True: 4, False: 0]
  ------------------
 1594|      4|    {
 1595|      4|      guint i;
 1596|       |      
 1597|       |      /* can have at most one publicly installable instantiatable prerequisite */
 1598|      4|      for (i = 0; i < IFACE_NODE_N_PREREQUISITES (iface); i++)
  ------------------
  |  |  261|      4|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  |  Branch (1598:19): [True: 0, False: 4]
  ------------------
 1599|      0|	{
 1600|      0|	  TypeNode *prnode = lookup_type_node_I (IFACE_NODE_PREREQUISITES (iface)[i]);
  ------------------
  |  |  262|      0|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
 1601|       |	  
 1602|      0|	  if (prnode->is_instantiatable)
  ------------------
  |  Branch (1602:8): [True: 0, False: 0]
  ------------------
 1603|      0|	    {
 1604|      0|	      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      0|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 1605|      0|	      g_warning ("adding prerequisite '%s' to interface '%s' conflicts with existing prerequisite '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1606|      0|			 type_descriptive_name_I (prerequisite_type),
 1607|      0|			 type_descriptive_name_I (interface_type),
 1608|      0|			 type_descriptive_name_I (NODE_TYPE (prnode)));
 1609|      0|	      return;
 1610|      0|	    }
 1611|      0|	}
 1612|       |      
 1613|      9|      for (i = 0; i < prerequisite_node->n_supers + 1u; i++)
  ------------------
  |  Branch (1613:19): [True: 5, False: 4]
  ------------------
 1614|      5|	type_iface_add_prerequisite_W (iface, lookup_type_node_I (prerequisite_node->supers[i]));
 1615|      4|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      4|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 1616|      4|    }
 1617|      0|  else if (NODE_IS_IFACE (prerequisite_node))
  ------------------
  |  |  258|      0|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|      0|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      0|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      0|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      0|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1618|      0|    {
 1619|      0|      GType *prerequisites;
 1620|      0|      guint i;
 1621|       |      
 1622|      0|      prerequisites = IFACE_NODE_PREREQUISITES (prerequisite_node);
  ------------------
  |  |  262|      0|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
 1623|      0|      for (i = 0; i < IFACE_NODE_N_PREREQUISITES (prerequisite_node); i++)
  ------------------
  |  |  261|      0|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  |  Branch (1623:19): [True: 0, False: 0]
  ------------------
 1624|      0|	type_iface_add_prerequisite_W (iface, lookup_type_node_I (prerequisites[i]));
 1625|      0|      type_iface_add_prerequisite_W (iface, prerequisite_node);
 1626|      0|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      0|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 1627|      0|    }
 1628|      0|  else
 1629|      0|    {
 1630|      0|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      0|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 1631|      0|      g_warning ("prerequisite '%s' for interface '%s' is neither instantiatable nor interface",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1632|      0|		 type_descriptive_name_I (prerequisite_type),
 1633|      0|		 type_descriptive_name_I (interface_type));
 1634|      0|    }
 1635|      4|}
g_type_create_instance:
 1843|  1.29M|{
 1844|  1.29M|  TypeNode *node;
 1845|  1.29M|  GTypeInstance *instance;
 1846|  1.29M|  GTypeClass *class;
 1847|  1.29M|  gchar *allocated;
 1848|  1.29M|  gint private_size;
 1849|  1.29M|  gint ivar_size;
 1850|  1.29M|  guint i;
 1851|       |
 1852|  1.29M|  node = lookup_type_node_I (type);
 1853|  1.29M|  if (!node || !node->is_instantiatable)
  ------------------
  |  Branch (1853:7): [True: 0, False: 1.29M]
  |  Branch (1853:16): [True: 0, False: 1.29M]
  ------------------
 1854|      0|    {
 1855|      0|      g_error ("cannot create new instance of invalid (non-instantiatable) type '%s'",
  ------------------
  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  337|      0|                        for (;;) ;                   \
  |  |  338|      0|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1856|      0|		 type_descriptive_name_I (type));
 1857|      0|    }
 1858|       |  /* G_TYPE_IS_ABSTRACT() is an external call: _U */
 1859|  1.29M|  if (!node->mutatable_check_cache && G_TYPE_IS_ABSTRACT (type))
  ------------------
  |  |  343|      0|#define G_TYPE_IS_ABSTRACT(type)                (g_type_test_flags ((type), G_TYPE_FLAG_ABSTRACT))
  |  |  ------------------
  |  |  |  Branch (343:49): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1859:7): [True: 0, False: 1.29M]
  ------------------
 1860|      0|    {
 1861|      0|      g_error ("cannot create instance of abstract (non-instantiatable) type '%s'",
  ------------------
  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  337|      0|                        for (;;) ;                   \
  |  |  338|      0|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1862|      0|		 type_descriptive_name_I (type));
 1863|      0|    }
 1864|       |  
 1865|  1.29M|  class = g_type_class_ref (type);
 1866|       |
 1867|       |  /* We allocate the 'private' areas before the normal instance data, in
 1868|       |   * reverse order.  This allows the private area of a particular class
 1869|       |   * to always be at a constant relative address to the instance data.
 1870|       |   * If we stored the private data after the instance data this would
 1871|       |   * not be the case (since a subclass that added more instance
 1872|       |   * variables would push the private data further along).
 1873|       |   *
 1874|       |   * This presents problems for valgrindability, of course, so we do a
 1875|       |   * workaround for that case.  We identify the start of the object to
 1876|       |   * valgrind as an allocated block (so that pointers to objects show up
 1877|       |   * as 'reachable' instead of 'possibly lost').  We then add an extra
 1878|       |   * pointer at the end of the object, after all instance data, back to
 1879|       |   * the start of the private area so that it is also recorded as
 1880|       |   * reachable.  We also add extra private space at the start because
 1881|       |   * valgrind doesn't seem to like us claiming to have allocated an
 1882|       |   * address that it saw allocated by malloc().
 1883|       |   */
 1884|  1.29M|  private_size = node->data->instance.private_size;
 1885|  1.29M|  ivar_size = node->data->instance.instance_size;
 1886|       |
 1887|  1.29M|#ifdef ENABLE_VALGRIND
 1888|  1.29M|  if (private_size && RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|  1.29M|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|  1.29M|    __extension__                                                 \
  |  |  |  |  414|  1.29M|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|  1.29M|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|  1.29M|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|  1.29M|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|  1.29M|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|  1.29M|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|  1.29M|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|  1.29M|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|  1.29M|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|  1.29M|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|  1.29M|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|  1.29M|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|  1.29M|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|  1.29M|                     : "cc", "memory"                             \
  |  |  |  |  428|  1.29M|                    );                                            \
  |  |  |  |  429|  1.29M|    _zzq_result;                                                  \
  |  |  |  |  430|  1.29M|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 1.29M]
  |  |  ------------------
  ------------------
  |  Branch (1888:7): [True: 1.29M, False: 0]
  ------------------
 1889|      0|    {
 1890|      0|      private_size += ALIGN_STRUCT (1);
  ------------------
  |  |  161|      0|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 1891|       |
 1892|       |      /* Allocate one extra pointer size... */
 1893|      0|      allocated = g_slice_alloc0 (private_size + ivar_size + sizeof (gpointer));
 1894|       |      /* ... and point it back to the start of the private data. */
 1895|      0|      *(gpointer *) (allocated + private_size + ivar_size) = allocated + ALIGN_STRUCT (1);
  ------------------
  |  |  161|      0|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 1896|       |
 1897|       |      /* Tell valgrind that it should treat the object itself as such */
 1898|      0|      VALGRIND_MALLOCLIKE_BLOCK (allocated + private_size, ivar_size + sizeof (gpointer), 0, TRUE);
  ------------------
  |  | 6479|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK,       \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6480|      0|                                    addr, sizeB, rzB, is_zeroed, 0)
  ------------------
 1899|      0|      VALGRIND_MALLOCLIKE_BLOCK (allocated + ALIGN_STRUCT (1), private_size - ALIGN_STRUCT (1), 0, TRUE);
  ------------------
  |  | 6479|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK,       \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6480|      0|                                    addr, sizeB, rzB, is_zeroed, 0)
  ------------------
 1900|      0|    }
 1901|  1.29M|  else
 1902|  1.29M|#endif
 1903|  1.29M|    allocated = g_slice_alloc0 (private_size + ivar_size);
 1904|       |
 1905|  1.29M|  instance = (GTypeInstance *) (allocated + private_size);
 1906|       |
 1907|  4.15M|  for (i = node->n_supers; i > 0; i--)
  ------------------
  |  Branch (1907:28): [True: 2.86M, False: 1.29M]
  ------------------
 1908|  2.86M|    {
 1909|  2.86M|      TypeNode *pnode;
 1910|       |      
 1911|  2.86M|      pnode = lookup_type_node_I (node->supers[i]);
 1912|  2.86M|      if (pnode->data->instance.instance_init)
  ------------------
  |  Branch (1912:11): [True: 2.86M, False: 0]
  ------------------
 1913|  2.86M|	{
 1914|  2.86M|	  instance->g_class = pnode->data->instance.class;
 1915|  2.86M|	  pnode->data->instance.instance_init (instance, class);
 1916|  2.86M|	}
 1917|  2.86M|    }
 1918|       |
 1919|  1.29M|  instance->g_class = class;
 1920|  1.29M|  if (node->data->instance.instance_init)
  ------------------
  |  Branch (1920:7): [True: 1.29M, False: 0]
  ------------------
 1921|  1.29M|    node->data->instance.instance_init (instance, class);
 1922|       |
 1923|  1.29M|#ifdef	G_ENABLE_DEBUG
 1924|  1.29M|  IF_DEBUG (INSTANCE_COUNT)
  ------------------
  |  |   42|  1.29M|#define	IF_DEBUG(debug_type)	if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type)
  |  |  ------------------
  |  |  |  Branch (42:34): [True: 0, False: 1.29M]
  |  |  ------------------
  ------------------
 1925|      0|    {
 1926|      0|      g_atomic_int_inc ((int *) &node->instance_count);
  ------------------
  |  |  148|      0|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|      0|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      0|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|      0|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 0]
  |  |  ------------------
  |  |  151|      0|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|      0|  }))
  ------------------
 1927|      0|    }
 1928|  1.29M|#endif
 1929|       |
 1930|  1.29M|  TRACE(GOBJECT_OBJECT_NEW(instance, type));
 1931|       |
 1932|  1.29M|  return instance;
 1933|  1.29M|}
g_type_free_instance:
 1947|  1.29M|{
 1948|  1.29M|  TypeNode *node;
 1949|  1.29M|  GTypeClass *class;
 1950|  1.29M|  gchar *allocated;
 1951|  1.29M|  gint private_size;
 1952|  1.29M|  gint ivar_size;
 1953|       |
 1954|  1.29M|  g_return_if_fail (instance != NULL && instance->g_class != NULL);
  ------------------
  |  |  630|  1.29M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.29M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.29M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.29M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.29M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.29M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.87M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.29M, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.29M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.29M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.29M|   else                                         \
  |  |  |  |  |  | 1021|  1.29M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.29M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.29M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.29M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.29M|      { } \
  |  |  633|  1.29M|    else \
  |  |  634|  1.29M|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  1.29M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.29M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.29M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1955|       |  
 1956|  1.29M|  class = instance->g_class;
 1957|  1.29M|  node = lookup_type_node_I (class->g_type);
 1958|  1.29M|  if (!node || !node->is_instantiatable || !node->data || node->data->class.class != (gpointer) class)
  ------------------
  |  Branch (1958:7): [True: 0, False: 1.29M]
  |  Branch (1958:16): [True: 0, False: 1.29M]
  |  Branch (1958:44): [True: 0, False: 1.29M]
  |  Branch (1958:59): [True: 0, False: 1.29M]
  ------------------
 1959|      0|    {
 1960|      0|      g_warning ("cannot free instance of invalid (non-instantiatable) type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1961|      0|		 type_descriptive_name_I (class->g_type));
 1962|      0|      return;
 1963|      0|    }
 1964|       |  /* G_TYPE_IS_ABSTRACT() is an external call: _U */
 1965|  1.29M|  if (!node->mutatable_check_cache && G_TYPE_IS_ABSTRACT (NODE_TYPE (node)))
  ------------------
  |  |  343|      0|#define G_TYPE_IS_ABSTRACT(type)                (g_type_test_flags ((type), G_TYPE_FLAG_ABSTRACT))
  |  |  ------------------
  |  |  |  Branch (343:49): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1965:7): [True: 0, False: 1.29M]
  ------------------
 1966|      0|    {
 1967|      0|      g_warning ("cannot free instance of abstract (non-instantiatable) type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1968|      0|		 NODE_NAME (node));
 1969|      0|      return;
 1970|      0|    }
 1971|       |  
 1972|  1.29M|  instance->g_class = NULL;
 1973|  1.29M|  private_size = node->data->instance.private_size;
 1974|  1.29M|  ivar_size = node->data->instance.instance_size;
 1975|  1.29M|  allocated = ((gchar *) instance) - private_size;
 1976|       |
 1977|  1.29M|#ifdef G_ENABLE_DEBUG
 1978|  1.29M|  memset (allocated, 0xaa, ivar_size + private_size);
 1979|  1.29M|#endif
 1980|       |
 1981|  1.29M|#ifdef ENABLE_VALGRIND
 1982|       |  /* See comment in g_type_create_instance() about what's going on here.
 1983|       |   * We're basically unwinding what we put into motion there.
 1984|       |   */
 1985|  1.29M|  if (private_size && RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|  1.29M|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|  1.29M|    __extension__                                                 \
  |  |  |  |  414|  1.29M|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|  1.29M|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|  1.29M|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|  1.29M|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|  1.29M|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|  1.29M|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|  1.29M|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|  1.29M|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|  1.29M|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|  1.29M|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|  1.29M|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|  1.29M|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|  1.29M|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|  1.29M|                     : "cc", "memory"                             \
  |  |  |  |  428|  1.29M|                    );                                            \
  |  |  |  |  429|  1.29M|    _zzq_result;                                                  \
  |  |  |  |  430|  1.29M|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 1.29M]
  |  |  ------------------
  ------------------
  |  Branch (1985:7): [True: 1.29M, False: 0]
  ------------------
 1986|      0|    {
 1987|      0|      private_size += ALIGN_STRUCT (1);
  ------------------
  |  |  161|      0|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 1988|      0|      allocated -= ALIGN_STRUCT (1);
  ------------------
  |  |  161|      0|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 1989|       |
 1990|       |      /* Clear out the extra pointer... */
 1991|      0|      *(gpointer *) (allocated + private_size + ivar_size) = NULL;
 1992|       |      /* ... and ensure we include it in the size we free. */
 1993|      0|      g_slice_free1 (private_size + ivar_size + sizeof (gpointer), allocated);
 1994|       |
 1995|      0|      VALGRIND_FREELIKE_BLOCK (allocated + ALIGN_STRUCT (1), 0);
  ------------------
  |  | 6493|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__FREELIKE_BLOCK,         \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6494|      0|                                    addr, rzB, 0, 0, 0)
  ------------------
 1996|      0|      VALGRIND_FREELIKE_BLOCK (instance, 0);
  ------------------
  |  | 6493|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__FREELIKE_BLOCK,         \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6494|      0|                                    addr, rzB, 0, 0, 0)
  ------------------
 1997|      0|    }
 1998|  1.29M|  else
 1999|  1.29M|#endif
 2000|  1.29M|    g_slice_free1 (private_size + ivar_size, allocated);
 2001|       |
 2002|  1.29M|#ifdef	G_ENABLE_DEBUG
 2003|  1.29M|  IF_DEBUG (INSTANCE_COUNT)
  ------------------
  |  |   42|  1.29M|#define	IF_DEBUG(debug_type)	if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type)
  |  |  ------------------
  |  |  |  Branch (42:34): [True: 0, False: 1.29M]
  |  |  ------------------
  ------------------
 2004|      0|    {
 2005|      0|      g_atomic_int_add ((int *) &node->instance_count, -1);
  ------------------
  |  |  167|      0|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  168|      0|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      0|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  169|      0|    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
  |  |  ------------------
  |  |  |  Branch (169:13): [Folded, False: 0]
  |  |  ------------------
  |  |  170|      0|    (gint) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST);           \
  |  |  171|      0|  }))
  ------------------
 2006|      0|    }
 2007|  1.29M|#endif
 2008|       |
 2009|  1.29M|  g_type_class_unref (class);
 2010|  1.29M|}
g_type_add_interface_check:
 2603|      1|{
 2604|      1|  guint i;
 2605|       |  
 2606|      1|  g_return_if_fail (check_func != NULL);
  ------------------
  |  |  630|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      1|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      1|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      1| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      1|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      1|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      1|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      1|   else                                         \
  |  |  |  |  |  | 1021|      1|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      1|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      1|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      1|      { } \
  |  |  633|      1|    else \
  |  |  634|      1|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2607|       |  
 2608|      1|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      1|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2609|      1|  i = static_n_iface_check_funcs++;
 2610|      1|  static_iface_check_funcs = g_renew (IFaceCheckFunc, static_iface_check_funcs, static_n_iface_check_funcs);
  ------------------
  |  |  321|      1|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|      1|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|      1|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|      1|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|      1|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|      1|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  254|      1|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|      1|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  256|      1|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (256:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (256:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  257|      1|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|      1|	  else							\
  |  |  |  |  259|      1|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|      1|	  __p;							\
  |  |  |  |  261|      1|	}))
  |  |  ------------------
  ------------------
 2611|      1|  static_iface_check_funcs[i].check_data = check_data;
 2612|      1|  static_iface_check_funcs[i].check_func = check_func;
 2613|      1|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      1|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2614|      1|}
g_type_register_fundamental:
 2680|     38|{
 2681|     38|  TypeNode *node;
 2682|       |  
 2683|     38|  g_assert_type_system_initialized ();
  ------------------
  |  |  140|     38|  g_assert (static_quark_type_flags)
  |  |  ------------------
  |  |  |  |  231|     38|#define g_assert(expr)                  G_STMT_START { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|     38|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  232|     38|                                             if G_LIKELY (expr) ; else \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1024|     38|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1016|     38| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   54|     38|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|     38|   int _g_boolean_var_;                         \
  |  |  |  |  |  |  |  | 1018|     38|   if (expr)                                    \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1018:8): [True: 38, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1019|     38|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  |  |  | 1020|     38|   else                                         \
  |  |  |  |  |  |  |  | 1021|     38|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  |  |  | 1022|     38|   _g_boolean_var_;                             \
  |  |  |  |  |  |  |  | 1023|     38|})
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1024:25): [True: 38, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  233|     38|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  |  |  ------------------
  |  |  |  |  234|      0|                                                                         #expr); \
  |  |  |  |  235|     38|                                        } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|     38|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2684|     38|  g_return_val_if_fail (type_id > 0, 0);
  ------------------
  |  |  643|     38|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     38|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     38|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     38|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     38| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     38|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     38|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     38|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 38, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     38|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     38|   else                                         \
  |  |  |  |  |  | 1021|     38|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     38|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     38|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 38, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     38|      { } \
  |  |  646|     38|    else \
  |  |  647|     38|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     38|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     38|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 38]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2685|     38|  g_return_val_if_fail (type_name != NULL, 0);
  ------------------
  |  |  643|     38|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     38|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     38|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     38|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     38| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     38|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     38|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     38|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 38, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     38|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     38|   else                                         \
  |  |  |  |  |  | 1021|     38|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     38|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     38|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 38, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     38|      { } \
  |  |  646|     38|    else \
  |  |  647|     38|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     38|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     38|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 38]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2686|     38|  g_return_val_if_fail (info != NULL, 0);
  ------------------
  |  |  643|     38|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     38|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     38|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     38|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     38| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     38|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     38|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     38|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 38, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     38|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     38|   else                                         \
  |  |  |  |  |  | 1021|     38|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     38|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     38|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 38, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     38|      { } \
  |  |  646|     38|    else \
  |  |  647|     38|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     38|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     38|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 38]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2687|     38|  g_return_val_if_fail (finfo != NULL, 0);
  ------------------
  |  |  643|     38|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     38|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     38|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     38|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     38| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     38|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     38|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     38|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 38, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     38|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     38|   else                                         \
  |  |  |  |  |  | 1021|     38|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     38|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     38|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 38, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     38|      { } \
  |  |  646|     38|    else \
  |  |  647|     38|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     38|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     38|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 38]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2688|       |  
 2689|     38|  if (!check_type_name_I (type_name))
  ------------------
  |  Branch (2689:7): [True: 0, False: 38]
  ------------------
 2690|      0|    return 0;
 2691|     38|  if ((type_id & TYPE_ID_MASK) ||
  ------------------
  |  |  267|     38|#define	TYPE_ID_MASK				((GType) ((1 << G_TYPE_FUNDAMENTAL_SHIFT) - 1))
  |  |  ------------------
  |  |  |  |  210|     38|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  ------------------
  ------------------
  |  Branch (2691:7): [True: 0, False: 38]
  ------------------
 2692|     38|      type_id > G_TYPE_FUNDAMENTAL_MAX)
  ------------------
  |  |   45|     38|#define	G_TYPE_FUNDAMENTAL_MAX		(255 << G_TYPE_FUNDAMENTAL_SHIFT)
  |  |  ------------------
  |  |  |  |  210|     38|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  ------------------
  ------------------
  |  Branch (2692:7): [True: 0, False: 38]
  ------------------
 2693|      0|    {
 2694|      0|      g_warning ("attempt to register fundamental type '%s' with invalid type id (%" G_GSIZE_FORMAT ")",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 2695|      0|		 type_name,
 2696|      0|		 type_id);
 2697|      0|      return 0;
 2698|      0|    }
 2699|     38|  if ((finfo->type_flags & G_TYPE_FLAG_INSTANTIATABLE) &&
  ------------------
  |  Branch (2699:7): [True: 4, False: 34]
  ------------------
 2700|      4|      !(finfo->type_flags & G_TYPE_FLAG_CLASSED))
  ------------------
  |  Branch (2700:7): [True: 0, False: 4]
  ------------------
 2701|      0|    {
 2702|      0|      g_warning ("cannot register instantiatable fundamental type '%s' as non-classed",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 2703|      0|		 type_name);
 2704|      0|      return 0;
 2705|      0|    }
 2706|     38|  if (lookup_type_node_I (type_id))
  ------------------
  |  Branch (2706:7): [True: 0, False: 38]
  ------------------
 2707|      0|    {
 2708|      0|      g_warning ("cannot register existing fundamental type '%s' (as '%s')",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 2709|      0|		 type_descriptive_name_I (type_id),
 2710|      0|		 type_name);
 2711|      0|      return 0;
 2712|      0|    }
 2713|       |  
 2714|     38|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|     38|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2715|     38|  node = type_node_fundamental_new_W (type_id, type_name, finfo->type_flags);
 2716|     38|  type_add_flags_W (node, flags);
 2717|       |  
 2718|     38|  if (check_type_info_I (NULL, NODE_FUNDAMENTAL_TYPE (node), type_name, info))
  ------------------
  |  |  254|     38|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (2718:7): [True: 38, False: 0]
  ------------------
 2719|     38|    type_data_make_W (node, info,
 2720|     38|		      check_value_table_I (type_name, info->value_table) ? info->value_table : NULL);
  ------------------
  |  Branch (2720:9): [True: 36, False: 2]
  ------------------
 2721|     38|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     38|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2722|       |  
 2723|     38|  return NODE_TYPE (node);
  ------------------
  |  |  252|     38|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2724|     38|}
g_type_register_static_simple:
 2753|     20|{
 2754|     20|  GTypeInfo info;
 2755|       |
 2756|       |  /* Instances are not allowed to be larger than this. If you have a big
 2757|       |   * fixed-length array or something, point to it instead.
 2758|       |   */
 2759|     20|  g_return_val_if_fail (class_size <= G_MAXUINT16, G_TYPE_INVALID);
  ------------------
  |  |  643|     20|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     20|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     20|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     20|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     20| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     20|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     20|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     20|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 20, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     20|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     20|   else                                         \
  |  |  |  |  |  | 1021|     20|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     20|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     20|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 20, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     20|      { } \
  |  |  646|     20|    else \
  |  |  647|     20|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     20|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     20|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 20]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2760|     20|  g_return_val_if_fail (instance_size <= G_MAXUINT16, G_TYPE_INVALID);
  ------------------
  |  |  643|     20|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     20|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     20|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     20|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     20| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     20|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     20|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     20|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 20, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     20|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     20|   else                                         \
  |  |  |  |  |  | 1021|     20|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     20|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     20|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 20, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     20|      { } \
  |  |  646|     20|    else \
  |  |  647|     20|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     20|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     20|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 20]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2761|       |
 2762|     20|  info.class_size = class_size;
 2763|     20|  info.base_init = NULL;
 2764|     20|  info.base_finalize = NULL;
 2765|     20|  info.class_init = class_init;
 2766|     20|  info.class_finalize = NULL;
 2767|     20|  info.class_data = NULL;
 2768|     20|  info.instance_size = instance_size;
 2769|     20|  info.n_preallocs = 0;
 2770|     20|  info.instance_init = instance_init;
 2771|     20|  info.value_table = NULL;
 2772|       |
 2773|     20|  return g_type_register_static (parent_type, type_name, &info, flags);
 2774|     20|}
g_type_register_static:
 2796|     72|{
 2797|     72|  TypeNode *pnode, *node;
 2798|     72|  GType type = 0;
 2799|       |  
 2800|     72|  g_assert_type_system_initialized ();
  ------------------
  |  |  140|     72|  g_assert (static_quark_type_flags)
  |  |  ------------------
  |  |  |  |  231|     72|#define g_assert(expr)                  G_STMT_START { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|     72|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  232|     72|                                             if G_LIKELY (expr) ; else \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1024|     72|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1016|     72| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   54|     72|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|     72|   int _g_boolean_var_;                         \
  |  |  |  |  |  |  |  | 1018|     72|   if (expr)                                    \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1018:8): [True: 72, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1019|     72|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  |  |  | 1020|     72|   else                                         \
  |  |  |  |  |  |  |  | 1021|     72|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  |  |  | 1022|     72|   _g_boolean_var_;                             \
  |  |  |  |  |  |  |  | 1023|     72|})
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1024:25): [True: 72, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  233|     72|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  |  |  ------------------
  |  |  |  |  234|      0|                                                                         #expr); \
  |  |  |  |  235|     72|                                        } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|     72|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 72]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2801|     72|  g_return_val_if_fail (parent_type > 0, 0);
  ------------------
  |  |  643|     72|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     72|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     72|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     72|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     72| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     72|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     72|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     72|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 72, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     72|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     72|   else                                         \
  |  |  |  |  |  | 1021|     72|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     72|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     72|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 72, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     72|      { } \
  |  |  646|     72|    else \
  |  |  647|     72|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     72|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     72|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 72]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2802|     72|  g_return_val_if_fail (type_name != NULL, 0);
  ------------------
  |  |  643|     72|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     72|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     72|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     72|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     72| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     72|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     72|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     72|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 72, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     72|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     72|   else                                         \
  |  |  |  |  |  | 1021|     72|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     72|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     72|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 72, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     72|      { } \
  |  |  646|     72|    else \
  |  |  647|     72|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     72|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     72|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 72]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2803|     72|  g_return_val_if_fail (info != NULL, 0);
  ------------------
  |  |  643|     72|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     72|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     72|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     72|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     72| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     72|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     72|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     72|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 72, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     72|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     72|   else                                         \
  |  |  |  |  |  | 1021|     72|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     72|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     72|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 72, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     72|      { } \
  |  |  646|     72|    else \
  |  |  647|     72|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     72|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     72|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 72]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2804|       |  
 2805|     72|  if (!check_type_name_I (type_name) ||
  ------------------
  |  Branch (2805:7): [True: 0, False: 72]
  ------------------
 2806|     72|      !check_derivation_I (parent_type, type_name))
  ------------------
  |  Branch (2806:7): [True: 0, False: 72]
  ------------------
 2807|      0|    return 0;
 2808|     72|  if (info->class_finalize)
  ------------------
  |  Branch (2808:7): [True: 0, False: 72]
  ------------------
 2809|      0|    {
 2810|      0|      g_warning ("class finalizer specified for static type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 2811|      0|		 type_name);
 2812|      0|      return 0;
 2813|      0|    }
 2814|       |  
 2815|     72|  pnode = lookup_type_node_I (parent_type);
 2816|     72|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|     72|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2817|     72|  type_data_ref_Wm (pnode);
 2818|     72|  if (check_type_info_I (pnode, NODE_FUNDAMENTAL_TYPE (pnode), type_name, info))
  ------------------
  |  |  254|     72|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (2818:7): [True: 72, False: 0]
  ------------------
 2819|     72|    {
 2820|     72|      node = type_node_new_W (pnode, type_name, NULL);
 2821|     72|      type_add_flags_W (node, flags);
 2822|     72|      type = NODE_TYPE (node);
  ------------------
  |  |  252|     72|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2823|     72|      type_data_make_W (node, info,
 2824|     72|			check_value_table_I (type_name, info->value_table) ? info->value_table : NULL);
  ------------------
  |  Branch (2824:4): [True: 2, False: 70]
  ------------------
 2825|     72|    }
 2826|     72|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     72|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2827|       |  
 2828|     72|  return type;
 2829|     72|}
g_type_add_interface_static:
 2890|     13|{
 2891|       |  /* G_TYPE_IS_INSTANTIATABLE() is an external call: _U */
 2892|     13|  g_return_if_fail (G_TYPE_IS_INSTANTIATABLE (instance_type));
  ------------------
  |  |  630|     13|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     13|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     13|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     13|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     13| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     13|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     13|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     13|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 13, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     13|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     13|   else                                         \
  |  |  |  |  |  | 1021|     13|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     13|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     13|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 13, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     13|      { } \
  |  |  633|     13|    else \
  |  |  634|     13|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|     13|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     13|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2893|     13|  g_return_if_fail (g_type_parent (interface_type) == G_TYPE_INTERFACE);
  ------------------
  |  |  630|     13|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     13|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     13|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     13|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     13| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     13|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     13|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     13|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 13, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     13|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     13|   else                                         \
  |  |  |  |  |  | 1021|     13|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     13|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     13|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 13, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     13|      { } \
  |  |  633|     13|    else \
  |  |  634|     13|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|     13|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     13|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2894|       |
 2895|       |  /* we only need to lock class_init_rec_mutex if instance_type already has its
 2896|       |   * class initialized, however this function is rarely enough called to take
 2897|       |   * the simple route and always acquire class_init_rec_mutex.
 2898|       |   */
 2899|     13|  g_rec_mutex_lock (&class_init_rec_mutex); /* required locking order: 1) class_init_rec_mutex, 2) type_rw_lock */
 2900|     13|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|     13|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2901|     13|  if (check_add_interface_L (instance_type, interface_type))
  ------------------
  |  Branch (2901:7): [True: 13, False: 0]
  ------------------
 2902|     13|    {
 2903|     13|      TypeNode *node = lookup_type_node_I (instance_type);
 2904|     13|      TypeNode *iface = lookup_type_node_I (interface_type);
 2905|     13|      if (check_interface_info_I (iface, NODE_TYPE (node), info))
  ------------------
  |  |  252|     13|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
  |  Branch (2905:11): [True: 13, False: 0]
  ------------------
 2906|     13|        type_add_interface_Wm (node, iface, info, NULL);
 2907|     13|    }
 2908|     13|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     13|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2909|     13|  g_rec_mutex_unlock (&class_init_rec_mutex);
 2910|     13|}
g_type_class_ref:
 2963|  1.29M|{
 2964|  1.29M|  TypeNode *node;
 2965|  1.29M|  GType ptype;
 2966|  1.29M|  gboolean holds_ref;
 2967|  1.29M|  GTypeClass *pclass;
 2968|       |
 2969|       |  /* optimize for common code path */
 2970|  1.29M|  node = lookup_type_node_I (type);
 2971|  1.29M|  if (!node || !node->is_classed)
  ------------------
  |  Branch (2971:7): [True: 0, False: 1.29M]
  |  Branch (2971:16): [True: 0, False: 1.29M]
  ------------------
 2972|      0|    {
 2973|      0|      g_warning ("cannot retrieve class for invalid (unclassed) type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 2974|      0|		 type_descriptive_name_I (type));
 2975|      0|      return NULL;
 2976|      0|    }
 2977|       |
 2978|  1.29M|  if (G_LIKELY (type_data_ref_U (node)))
  ------------------
  |  | 1024|  1.29M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  1.29M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.29M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.29M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 1.29M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.29M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.29M|   else                                         \
  |  |  |  | 1021|  1.29M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.29M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.29M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 1.29M, False: 0]
  |  |  ------------------
  ------------------
 2979|  1.29M|    {
 2980|  1.29M|      if (G_LIKELY (g_atomic_int_get (&node->data->class.init_state) == INITIALIZED))
  ------------------
  |  | 1024|  1.29M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  1.29M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.29M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.87M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [Folded, False: 1.29M]
  |  |  |  |  |  Branch (1018:8): [True: 1.29M, False: 31]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.29M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.29M|   else                                         \
  |  |  |  | 1021|  1.29M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.29M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.29M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 1.29M, False: 31]
  |  |  ------------------
  ------------------
 2981|  1.29M|        return node->data->class.class;
 2982|     31|      holds_ref = TRUE;
  ------------------
  |  |  818|     31|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     31|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2983|     31|    }
 2984|      0|  else
 2985|      0|    holds_ref = FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 2986|       |  
 2987|       |  /* here, we either have node->data->class.class == NULL, or a recursive
 2988|       |   * call to g_type_class_ref() with a partly initialized class, or
 2989|       |   * node->data->class.init_state == INITIALIZED, because any
 2990|       |   * concurrently running initialization was guarded by class_init_rec_mutex.
 2991|       |   */
 2992|     31|  g_rec_mutex_lock (&class_init_rec_mutex); /* required locking order: 1) class_init_rec_mutex, 2) type_rw_lock */
 2993|       |
 2994|       |  /* we need an initialized parent class for initializing derived classes */
 2995|     31|  ptype = NODE_PARENT_TYPE (node);
  ------------------
  |  |  253|     31|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 2996|     31|  pclass = ptype ? g_type_class_ref (ptype) : NULL;
  ------------------
  |  Branch (2996:12): [True: 29, False: 2]
  ------------------
 2997|       |
 2998|     31|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|     31|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2999|       |
 3000|     31|  if (!holds_ref)
  ------------------
  |  Branch (3000:7): [True: 0, False: 31]
  ------------------
 3001|      0|    type_data_ref_Wm (node);
 3002|       |
 3003|     31|  if (!node->data->class.class) /* class uninitialized */
  ------------------
  |  Branch (3003:7): [True: 20, False: 11]
  ------------------
 3004|     20|    type_class_init_Wm (node, pclass);
 3005|       |
 3006|     31|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     31|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 3007|       |
 3008|     31|  if (pclass)
  ------------------
  |  Branch (3008:7): [True: 29, False: 2]
  ------------------
 3009|     29|    g_type_class_unref (pclass);
 3010|       |
 3011|     31|  g_rec_mutex_unlock (&class_init_rec_mutex);
 3012|       |
 3013|     31|  return node->data->class.class;
 3014|  1.29M|}
g_type_class_unref:
 3027|  1.29M|{
 3028|  1.29M|  TypeNode *node;
 3029|  1.29M|  GTypeClass *class = g_class;
 3030|       |  
 3031|  1.29M|  g_return_if_fail (g_class != NULL);
  ------------------
  |  |  630|  1.29M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.29M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.29M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.29M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.29M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.29M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.29M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.29M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.29M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.29M|   else                                         \
  |  |  |  |  |  | 1021|  1.29M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.29M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.29M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.29M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.29M|      { } \
  |  |  633|  1.29M|    else \
  |  |  634|  1.29M|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  1.29M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.29M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.29M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3032|       |  
 3033|  1.29M|  node = lookup_type_node_I (class->g_type);
 3034|  1.29M|  if (node && node->is_classed && NODE_REFCOUNT (node))
  ------------------
  |  |  256|  1.29M|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  1.29M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  1.29M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.29M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  1.29M|    gint gaig_temp;                                                          \
  |  |  |  |   99|  1.29M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1.29M]
  |  |  |  |  ------------------
  |  |  |  |  100|  1.29M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  1.29M|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  1.29M|  }))
  |  |  ------------------
  |  |  |  Branch (256:49): [True: 1.29M, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3034:7): [True: 1.29M, False: 0]
  |  Branch (3034:15): [True: 1.29M, False: 0]
  ------------------
 3035|  1.29M|    type_data_unref_U (node, FALSE);
  ------------------
  |  |  814|  1.29M|#define	FALSE	(0)
  ------------------
 3036|      0|  else
 3037|      0|    g_warning ("cannot unreference class of invalid (unclassed) type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 3038|  1.29M|	       type_descriptive_name_I (class->g_type));
 3039|  1.29M|}
g_type_class_peek:
 3082|   434k|{
 3083|   434k|  TypeNode *node;
 3084|   434k|  gpointer class;
 3085|       |  
 3086|   434k|  node = lookup_type_node_I (type);
 3087|   434k|  if (node && node->is_classed && NODE_REFCOUNT (node) &&
  ------------------
  |  |  256|   869k|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|   434k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   434k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|   434k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   434k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|   434k|    gint gaig_temp;                                                          \
  |  |  |  |   99|   434k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 434k]
  |  |  |  |  ------------------
  |  |  |  |  100|   434k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|   434k|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|   434k|  }))
  |  |  ------------------
  |  |  |  Branch (256:49): [True: 434k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3087:7): [True: 434k, False: 0]
  |  Branch (3087:15): [True: 434k, False: 0]
  ------------------
 3088|   434k|      g_atomic_int_get (&node->data->class.init_state) == INITIALIZED)
  ------------------
  |  |   96|   434k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|   434k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|   434k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|   434k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|   434k|    gint gaig_temp;                                                          \
  |  |   99|   434k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 434k]
  |  |  ------------------
  |  |  100|   434k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|   434k|    (gint) gaig_temp;                                                        \
  |  |  102|   434k|  }))
  ------------------
  |  Branch (3088:7): [True: 434k, False: 0]
  ------------------
 3089|       |    /* ref_count _may_ be 0 */
 3090|   434k|    class = node->data->class.class;
 3091|      0|  else
 3092|      0|    class = NULL;
 3093|       |  
 3094|   434k|  return class;
 3095|   434k|}
g_type_class_peek_static:
 3112|  1.29M|{
 3113|  1.29M|  TypeNode *node;
 3114|  1.29M|  gpointer class;
 3115|       |  
 3116|  1.29M|  node = lookup_type_node_I (type);
 3117|  1.29M|  if (node && node->is_classed && NODE_REFCOUNT (node) &&
  ------------------
  |  |  256|  2.58M|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  1.29M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  1.29M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.29M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  1.29M|    gint gaig_temp;                                                          \
  |  |  |  |   99|  1.29M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1.29M]
  |  |  |  |  ------------------
  |  |  |  |  100|  1.29M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  1.29M|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  1.29M|  }))
  |  |  ------------------
  |  |  |  Branch (256:49): [True: 1.29M, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3117:7): [True: 1.29M, False: 0]
  |  Branch (3117:15): [True: 1.29M, False: 0]
  ------------------
 3118|  1.29M|      /* peek only static types: */ node->plugin == NULL &&
  ------------------
  |  Branch (3118:37): [True: 1.29M, False: 0]
  ------------------
 3119|  1.29M|      g_atomic_int_get (&node->data->class.init_state) == INITIALIZED)
  ------------------
  |  |   96|  1.29M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  1.29M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.29M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  1.29M|    gint gaig_temp;                                                          \
  |  |   99|  1.29M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 1.29M]
  |  |  ------------------
  |  |  100|  1.29M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  1.29M|    (gint) gaig_temp;                                                        \
  |  |  102|  1.29M|  }))
  ------------------
  |  Branch (3119:7): [True: 1.29M, False: 7]
  ------------------
 3120|       |    /* ref_count _may_ be 0 */
 3121|  1.29M|    class = node->data->class.class;
 3122|      7|  else
 3123|      7|    class = NULL;
 3124|       |  
 3125|  1.29M|  return class;
 3126|  1.29M|}
g_type_class_peek_parent:
 3147|     27|{
 3148|     27|  TypeNode *node;
 3149|     27|  gpointer class = NULL;
 3150|       |  
 3151|     27|  g_return_val_if_fail (g_class != NULL, NULL);
  ------------------
  |  |  643|     27|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     27|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     27|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     27|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     27| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     27|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     27|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     27|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 27, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     27|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     27|   else                                         \
  |  |  |  |  |  | 1021|     27|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     27|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     27|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 27, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     27|      { } \
  |  |  646|     27|    else \
  |  |  647|     27|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     27|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     27|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 27]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3152|       |  
 3153|     27|  node = lookup_type_node_I (G_TYPE_FROM_CLASS (g_class));
  ------------------
  |  |  613|     27|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  ------------------
 3154|       |  /* We used to acquire a read lock here. That is not necessary, since 
 3155|       |   * parent->data->class.class is constant as long as the derived class
 3156|       |   * exists. 
 3157|       |   */
 3158|     27|  if (node && node->is_classed && node->data && NODE_PARENT_TYPE (node))
  ------------------
  |  |  253|     27|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  |  |  ------------------
  |  |  |  Branch (253:34): [True: 26, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (3158:7): [True: 27, False: 0]
  |  Branch (3158:15): [True: 27, False: 0]
  |  Branch (3158:35): [True: 27, False: 0]
  ------------------
 3159|     26|    {
 3160|     26|      node = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|     26|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 3161|     26|      class = node->data->class.class;
 3162|     26|    }
 3163|      1|  else if (NODE_PARENT_TYPE (node))
  ------------------
  |  |  253|      1|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  |  |  ------------------
  |  |  |  Branch (253:34): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3164|      0|    g_warning (G_STRLOC ": invalid class pointer '%p'", g_class);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 3165|       |  
 3166|     27|  return class;
 3167|     27|}
g_type_interface_peek:
 3184|  8.75M|{
 3185|  8.75M|  TypeNode *node;
 3186|  8.75M|  TypeNode *iface;
 3187|  8.75M|  gpointer vtable = NULL;
 3188|  8.75M|  GTypeClass *class = instance_class;
 3189|       |  
 3190|  8.75M|  g_return_val_if_fail (instance_class != NULL, NULL);
  ------------------
  |  |  643|  8.75M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  8.75M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  8.75M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  8.75M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  8.75M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  8.75M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  8.75M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  8.75M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 8.75M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  8.75M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  8.75M|   else                                         \
  |  |  |  |  |  | 1021|  8.75M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  8.75M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  8.75M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 8.75M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  8.75M|      { } \
  |  |  646|  8.75M|    else \
  |  |  647|  8.75M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  8.75M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  8.75M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 8.75M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3191|       |  
 3192|  8.75M|  node = lookup_type_node_I (class->g_type);
 3193|  8.75M|  iface = lookup_type_node_I (iface_type);
 3194|  8.75M|  if (node && node->is_instantiatable && iface)
  ------------------
  |  Branch (3194:7): [True: 8.75M, False: 0]
  |  Branch (3194:15): [True: 8.75M, False: 0]
  |  Branch (3194:42): [True: 8.75M, False: 0]
  ------------------
 3195|  8.75M|    type_lookup_iface_vtable_I (node, iface, &vtable);
 3196|      0|  else
 3197|      0|    g_warning (G_STRLOC ": invalid class pointer '%p'", class);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 3198|       |  
 3199|  8.75M|  return vtable;
 3200|  8.75M|}
g_type_name:
 3367|     46|{
 3368|     46|  TypeNode *node;
 3369|       |  
 3370|     46|  g_assert_type_system_initialized ();
  ------------------
  |  |  140|     46|  g_assert (static_quark_type_flags)
  |  |  ------------------
  |  |  |  |  231|     46|#define g_assert(expr)                  G_STMT_START { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|     46|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  232|     46|                                             if G_LIKELY (expr) ; else \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1024|     46|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1016|     46| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   54|     46|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|     46|   int _g_boolean_var_;                         \
  |  |  |  |  |  |  |  | 1018|     46|   if (expr)                                    \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1018:8): [True: 46, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1019|     46|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  |  |  | 1020|     46|   else                                         \
  |  |  |  |  |  |  |  | 1021|     46|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  |  |  | 1022|     46|   _g_boolean_var_;                             \
  |  |  |  |  |  |  |  | 1023|     46|})
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1024:25): [True: 46, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  233|     46|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  |  |  ------------------
  |  |  |  |  234|      0|                                                                         #expr); \
  |  |  |  |  235|     46|                                        } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|     46|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 46]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3371|       |  
 3372|     46|  node = lookup_type_node_I (type);
 3373|       |  
 3374|     46|  return node ? NODE_NAME (node) : NULL;
  ------------------
  |  |  255|     46|#define NODE_NAME(node)				(g_quark_to_string (node->qname))
  ------------------
  |  Branch (3374:10): [True: 46, False: 0]
  ------------------
 3375|     46|}
g_type_from_name:
 3408|    160|{
 3409|    160|  GType type = 0;
 3410|       |  
 3411|    160|  g_return_val_if_fail (name != NULL, 0);
  ------------------
  |  |  643|    160|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    160|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    160|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    160|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    160| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    160|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    160|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    160|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 160, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    160|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    160|   else                                         \
  |  |  |  |  |  | 1021|    160|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    160|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    160|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 160, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    160|      { } \
  |  |  646|    160|    else \
  |  |  647|    160|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    160|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    160|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 160]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3412|       |  
 3413|    160|  G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|    160|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 3414|    160|  type = (GType) g_hash_table_lookup (static_type_nodes_ht, name);
 3415|    160|  G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|    160|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 3416|       |  
 3417|    160|  return type;
 3418|    160|}
g_type_parent:
 3431|  17.8k|{
 3432|  17.8k|  TypeNode *node;
 3433|       |  
 3434|  17.8k|  node = lookup_type_node_I (type);
 3435|       |  
 3436|  17.8k|  return node ? NODE_PARENT_TYPE (node) : 0;
  ------------------
  |  |  253|  17.8k|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
  |  Branch (3436:10): [True: 17.8k, False: 0]
  ------------------
 3437|  17.8k|}
g_type_depth:
 3450|     11|{
 3451|     11|  TypeNode *node;
 3452|       |  
 3453|     11|  node = lookup_type_node_I (type);
 3454|       |  
 3455|     11|  return node ? node->n_supers + 1 : 0;
  ------------------
  |  Branch (3455:10): [True: 11, False: 0]
  ------------------
 3456|     11|}
g_type_is_a:
 3571|   875k|{
 3572|   875k|  TypeNode *node, *iface_node;
 3573|   875k|  gboolean is_a;
 3574|       |
 3575|   875k|  if (type == iface_type)
  ------------------
  |  Branch (3575:7): [True: 1, False: 875k]
  ------------------
 3576|      1|    return TRUE;
  ------------------
  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3577|       |  
 3578|   875k|  node = lookup_type_node_I (type);
 3579|   875k|  iface_node = lookup_type_node_I (iface_type);
 3580|   875k|  is_a = node && iface_node && type_node_conforms_to_U (node, iface_node, TRUE, TRUE);
  ------------------
  |  |  818|   875k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   875k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                is_a = node && iface_node && type_node_conforms_to_U (node, iface_node, TRUE, TRUE);
  ------------------
  |  |  818|   875k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   875k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  |  Branch (3580:10): [True: 875k, False: 0]
  |  Branch (3580:18): [True: 875k, False: 0]
  |  Branch (3580:32): [True: 875k, False: 65]
  ------------------
 3581|       |  
 3582|   875k|  return is_a;
 3583|   875k|}
g_type_interfaces:
 3644|      5|{
 3645|      5|  TypeNode *node;
 3646|       |  
 3647|      5|  node = lookup_type_node_I (type);
 3648|      5|  if (node && node->is_instantiatable)
  ------------------
  |  Branch (3648:7): [True: 5, False: 0]
  |  Branch (3648:15): [True: 5, False: 0]
  ------------------
 3649|      5|    {
 3650|      5|      IFaceEntries *entries;
 3651|      5|      GType *ifaces;
 3652|      5|      guint i;
 3653|       |      
 3654|      5|      G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|      5|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 3655|      5|      entries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (node);
  ------------------
  |  |  260|      5|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|      5|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  |  |  ------------------
  ------------------
 3656|      5|      if (entries)
  ------------------
  |  Branch (3656:11): [True: 4, False: 1]
  ------------------
 3657|      4|	{
 3658|      4|	  ifaces = g_new (GType, IFACE_ENTRIES_N_ENTRIES (entries) + 1);
  ------------------
  |  |  290|      4|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      4|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      4|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      4|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      4|	  gpointer __p;						\
  |  |  |  |  239|      4|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  240|      4|	    __p = g_##func (__n);				\
  |  |  |  |  241|      4|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  242|      4|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      4|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      4|	  else							\
  |  |  |  |  245|      4|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      4|	  __p;							\
  |  |  |  |  247|      4|	}))
  |  |  ------------------
  ------------------
 3659|      8|	  for (i = 0; i < IFACE_ENTRIES_N_ENTRIES (entries); i++)
  ------------------
  |  |  294|      8|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|      8|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|      8|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (3659:16): [True: 4, False: 4]
  ------------------
 3660|      4|	    ifaces[i] = entries->entry[i].iface_type;
 3661|      4|	}
 3662|      1|      else
 3663|      1|	{
 3664|      1|	  ifaces = g_new (GType, 1);
  ------------------
  |  |  290|      1|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      1|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      1|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      1|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      1|	  gpointer __p;						\
  |  |  |  |  239|      1|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  240|      1|	    __p = g_##func (__n);				\
  |  |  |  |  241|      1|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      1|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      1|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      1|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 1]
  |  |  |  |  |  Branch (242:26): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      1|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      1|	  else							\
  |  |  |  |  245|      1|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      1|	  __p;							\
  |  |  |  |  247|      1|	}))
  |  |  ------------------
  ------------------
 3665|      1|	  i = 0;
 3666|      1|	}
 3667|      5|      ifaces[i] = 0;
 3668|       |      
 3669|      5|      if (n_interfaces)
  ------------------
  |  Branch (3669:11): [True: 5, False: 0]
  ------------------
 3670|      5|	*n_interfaces = i;
 3671|      5|      G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|      5|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 3672|       |      
 3673|      5|      return ifaces;
 3674|      5|    }
 3675|      0|  else
 3676|      0|    {
 3677|      0|      if (n_interfaces)
  ------------------
  |  Branch (3677:11): [True: 0, False: 0]
  ------------------
 3678|      0|	*n_interfaces = 0;
 3679|       |      
 3680|       |      return NULL;
 3681|      0|    }
 3682|      5|}
g_type_test_flags:
 3916|     22|{
 3917|     22|  TypeNode *node;
 3918|     22|  gboolean result = FALSE;
  ------------------
  |  |  814|     22|#define	FALSE	(0)
  ------------------
 3919|       |  
 3920|     22|  node = lookup_type_node_I (type);
 3921|     22|  if (node)
  ------------------
  |  Branch (3921:7): [True: 22, False: 0]
  ------------------
 3922|     22|    {
 3923|     22|      guint fflags = flags & TYPE_FUNDAMENTAL_FLAG_MASK;
  ------------------
  |  |  142|     22|#define TYPE_FUNDAMENTAL_FLAG_MASK (G_TYPE_FLAG_CLASSED | \
  |  |  143|     22|				    G_TYPE_FLAG_INSTANTIATABLE | \
  |  |  144|     22|				    G_TYPE_FLAG_DERIVABLE | \
  |  |  145|     22|				    G_TYPE_FLAG_DEEP_DERIVABLE)
  ------------------
 3924|     22|      guint tflags = flags & TYPE_FLAG_MASK;
  ------------------
  |  |  146|     22|#define	TYPE_FLAG_MASK		   (G_TYPE_FLAG_ABSTRACT | G_TYPE_FLAG_VALUE_ABSTRACT)
  ------------------
 3925|       |      
 3926|     22|      if (fflags)
  ------------------
  |  Branch (3926:11): [True: 22, False: 0]
  ------------------
 3927|     22|	{
 3928|     22|	  GTypeFundamentalInfo *finfo = type_node_fundamental_info_I (node);
 3929|       |	  
 3930|     22|	  fflags = (finfo->type_flags & fflags) == fflags;
 3931|     22|	}
 3932|      0|      else
 3933|      0|	fflags = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3934|       |      
 3935|     22|      if (tflags)
  ------------------
  |  Branch (3935:11): [True: 0, False: 22]
  ------------------
 3936|      0|	{
 3937|      0|	  G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|      0|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 3938|      0|	  tflags = (tflags & GPOINTER_TO_UINT (type_get_qdata_L (node, static_quark_type_flags))) == tflags;
  ------------------
  |  |   99|      0|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 3939|      0|	  G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|      0|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 3940|      0|	}
 3941|     22|      else
 3942|     22|	tflags = TRUE;
  ------------------
  |  |  818|     22|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     22|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3943|       |      
 3944|     22|      result = tflags && fflags;
  ------------------
  |  Branch (3944:16): [True: 22, False: 0]
  |  Branch (3944:26): [True: 22, False: 0]
  ------------------
 3945|     22|    }
 3946|       |  
 3947|     22|  return result;
 3948|     22|}
g_type_fundamental:
 4052|  1.29M|{
 4053|  1.29M|  TypeNode *node = lookup_type_node_I (type_id);
 4054|       |  
 4055|  1.29M|  return node ? NODE_FUNDAMENTAL_TYPE (node) : 0;
  ------------------
  |  |  254|  1.29M|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (4055:10): [True: 1.29M, False: 0]
  ------------------
 4056|  1.29M|}
g_type_check_instance_is_a:
 4061|  24.7M|{
 4062|  24.7M|  TypeNode *node, *iface;
 4063|  24.7M|  gboolean check;
 4064|       |  
 4065|  24.7M|  if (!type_instance || !type_instance->g_class)
  ------------------
  |  Branch (4065:7): [True: 0, False: 24.7M]
  |  Branch (4065:25): [True: 0, False: 24.7M]
  ------------------
 4066|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 4067|       |  
 4068|  24.7M|  node = lookup_type_node_I (type_instance->g_class->g_type);
 4069|  24.7M|  iface = lookup_type_node_I (iface_type);
 4070|  24.7M|  check = node && node->is_instantiatable && iface && type_node_conforms_to_U (node, iface, TRUE, FALSE);
  ------------------
  |  |  818|  24.7M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  24.7M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                check = node && node->is_instantiatable && iface && type_node_conforms_to_U (node, iface, TRUE, FALSE);
  ------------------
  |  |  814|  24.7M|#define	FALSE	(0)
  ------------------
  |  Branch (4070:11): [True: 24.7M, False: 0]
  |  Branch (4070:19): [True: 24.7M, False: 0]
  |  Branch (4070:46): [True: 24.7M, False: 0]
  |  Branch (4070:55): [True: 24.7M, False: 0]
  ------------------
 4071|       |  
 4072|  24.7M|  return check;
 4073|  24.7M|}
g_type_check_instance_is_fundamentally_a:
 4078|  4.37M|{
 4079|  4.37M|  TypeNode *node;
 4080|  4.37M|  if (!type_instance || !type_instance->g_class)
  ------------------
  |  Branch (4080:7): [True: 0, False: 4.37M]
  |  Branch (4080:25): [True: 0, False: 4.37M]
  ------------------
 4081|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 4082|  4.37M|  node = lookup_type_node_I (type_instance->g_class->g_type);
 4083|  4.37M|  return node && (NODE_FUNDAMENTAL_TYPE(node) == fundamental_type);
  ------------------
  |  |  254|  4.37M|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (4083:10): [True: 4.37M, False: 0]
  |  Branch (4083:18): [True: 4.37M, False: 0]
  ------------------
 4084|  4.37M|}
g_type_check_class_is_a:
 4089|     46|{
 4090|     46|  TypeNode *node, *iface;
 4091|     46|  gboolean check;
 4092|       |  
 4093|     46|  if (!type_class)
  ------------------
  |  Branch (4093:7): [True: 0, False: 46]
  ------------------
 4094|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 4095|       |  
 4096|     46|  node = lookup_type_node_I (type_class->g_type);
 4097|     46|  iface = lookup_type_node_I (is_a_type);
 4098|     46|  check = node && node->is_classed && iface && type_node_conforms_to_U (node, iface, FALSE, FALSE);
  ------------------
  |  |  814|     46|#define	FALSE	(0)
  ------------------
                check = node && node->is_classed && iface && type_node_conforms_to_U (node, iface, FALSE, FALSE);
  ------------------
  |  |  814|     46|#define	FALSE	(0)
  ------------------
  |  Branch (4098:11): [True: 46, False: 0]
  |  Branch (4098:19): [True: 46, False: 0]
  |  Branch (4098:39): [True: 46, False: 0]
  |  Branch (4098:48): [True: 46, False: 0]
  ------------------
 4099|       |  
 4100|     46|  return check;
 4101|     46|}
g_type_check_instance_cast:
 4106|  24.0M|{
 4107|  24.0M|  if (type_instance)
  ------------------
  |  Branch (4107:7): [True: 24.0M, False: 1.66k]
  ------------------
 4108|  24.0M|    {
 4109|  24.0M|      if (type_instance->g_class)
  ------------------
  |  Branch (4109:11): [True: 24.0M, False: 0]
  ------------------
 4110|  24.0M|	{
 4111|  24.0M|	  TypeNode *node, *iface;
 4112|  24.0M|	  gboolean is_instantiatable, check;
 4113|       |	  
 4114|  24.0M|	  node = lookup_type_node_I (type_instance->g_class->g_type);
 4115|  24.0M|	  is_instantiatable = node && node->is_instantiatable;
  ------------------
  |  Branch (4115:24): [True: 24.0M, False: 0]
  |  Branch (4115:32): [True: 24.0M, False: 0]
  ------------------
 4116|  24.0M|	  iface = lookup_type_node_I (iface_type);
 4117|  24.0M|	  check = is_instantiatable && iface && type_node_conforms_to_U (node, iface, TRUE, FALSE);
  ------------------
  |  |  818|  24.0M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  24.0M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
              	  check = is_instantiatable && iface && type_node_conforms_to_U (node, iface, TRUE, FALSE);
  ------------------
  |  |  814|  24.0M|#define	FALSE	(0)
  ------------------
  |  Branch (4117:12): [True: 24.0M, False: 0]
  |  Branch (4117:33): [True: 24.0M, False: 0]
  |  Branch (4117:42): [True: 24.0M, False: 0]
  ------------------
 4118|  24.0M|	  if (check)
  ------------------
  |  Branch (4118:8): [True: 24.0M, False: 0]
  ------------------
 4119|  24.0M|	    return type_instance;
 4120|       |	  
 4121|      0|	  if (is_instantiatable)
  ------------------
  |  Branch (4121:8): [True: 0, False: 0]
  ------------------
 4122|      0|	    g_warning ("invalid cast from '%s' to '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4123|      0|		       type_descriptive_name_I (type_instance->g_class->g_type),
 4124|      0|		       type_descriptive_name_I (iface_type));
 4125|      0|	  else
 4126|      0|	    g_warning ("invalid uninstantiatable type '%s' in cast to '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4127|      0|		       type_descriptive_name_I (type_instance->g_class->g_type),
 4128|      0|		       type_descriptive_name_I (iface_type));
 4129|      0|	}
 4130|      0|      else
 4131|      0|	g_warning ("invalid unclassed pointer in cast to '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4132|  24.0M|		   type_descriptive_name_I (iface_type));
 4133|  24.0M|    }
 4134|       |  
 4135|  1.66k|  return type_instance;
 4136|  24.0M|}
g_type_check_class_cast:
 4141|  2.77M|{
 4142|  2.77M|  if (type_class)
  ------------------
  |  Branch (4142:7): [True: 2.77M, False: 0]
  ------------------
 4143|  2.77M|    {
 4144|  2.77M|      TypeNode *node, *iface;
 4145|  2.77M|      gboolean is_classed, check;
 4146|       |      
 4147|  2.77M|      node = lookup_type_node_I (type_class->g_type);
 4148|  2.77M|      is_classed = node && node->is_classed;
  ------------------
  |  Branch (4148:20): [True: 2.77M, False: 0]
  |  Branch (4148:28): [True: 2.77M, False: 0]
  ------------------
 4149|  2.77M|      iface = lookup_type_node_I (is_a_type);
 4150|  2.77M|      check = is_classed && iface && type_node_conforms_to_U (node, iface, FALSE, FALSE);
  ------------------
  |  |  814|  2.77M|#define	FALSE	(0)
  ------------------
                    check = is_classed && iface && type_node_conforms_to_U (node, iface, FALSE, FALSE);
  ------------------
  |  |  814|  2.77M|#define	FALSE	(0)
  ------------------
  |  Branch (4150:15): [True: 2.77M, False: 0]
  |  Branch (4150:29): [True: 2.77M, False: 0]
  |  Branch (4150:38): [True: 2.77M, False: 0]
  ------------------
 4151|  2.77M|      if (check)
  ------------------
  |  Branch (4151:11): [True: 2.77M, False: 0]
  ------------------
 4152|  2.77M|	return type_class;
 4153|       |      
 4154|      0|      if (is_classed)
  ------------------
  |  Branch (4154:11): [True: 0, False: 0]
  ------------------
 4155|      0|	g_warning ("invalid class cast from '%s' to '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4156|      0|		   type_descriptive_name_I (type_class->g_type),
 4157|      0|		   type_descriptive_name_I (is_a_type));
 4158|      0|      else
 4159|      0|	g_warning ("invalid unclassed type '%s' in class cast to '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4160|      0|		   type_descriptive_name_I (type_class->g_type),
 4161|      0|		   type_descriptive_name_I (is_a_type));
 4162|      0|    }
 4163|      0|  else
 4164|      0|    g_warning ("invalid class cast from (NULL) pointer to '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4165|  2.77M|	       type_descriptive_name_I (is_a_type));
 4166|      0|  return type_class;
 4167|  2.77M|}
g_type_check_instance:
 4180|  3.02M|{
 4181|       |  /* this function is just here to make the signal system
 4182|       |   * conveniently elaborated on instance checks
 4183|       |   */
 4184|  3.02M|  if (type_instance)
  ------------------
  |  Branch (4184:7): [True: 3.02M, False: 0]
  ------------------
 4185|  3.02M|    {
 4186|  3.02M|      if (type_instance->g_class)
  ------------------
  |  Branch (4186:11): [True: 3.02M, False: 0]
  ------------------
 4187|  3.02M|	{
 4188|  3.02M|	  TypeNode *node = lookup_type_node_I (type_instance->g_class->g_type);
 4189|       |	  
 4190|  3.02M|	  if (node && node->is_instantiatable)
  ------------------
  |  Branch (4190:8): [True: 3.02M, False: 0]
  |  Branch (4190:16): [True: 3.02M, False: 0]
  ------------------
 4191|  3.02M|	    return TRUE;
  ------------------
  |  |  818|  3.02M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  3.02M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 4192|       |	  
 4193|      0|	  g_warning ("instance of invalid non-instantiatable type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4194|      0|		     type_descriptive_name_I (type_instance->g_class->g_type));
 4195|      0|	}
 4196|      0|      else
 4197|      0|	g_warning ("instance with invalid (NULL) class pointer");
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4198|  3.02M|    }
 4199|      0|  else
 4200|      0|    g_warning ("invalid (NULL) pointer instance");
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4201|       |  
 4202|      0|  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 4203|  3.02M|}
g_type_check_is_value_type:
 4248|      4|{
 4249|      4|  return type_check_is_value_type_U (type);
 4250|      4|}
g_type_check_value:
 4254|   434k|{
 4255|   434k|  return value && type_check_is_value_type_U (value->g_type);
  ------------------
  |  Branch (4255:10): [True: 434k, False: 0]
  |  Branch (4255:19): [True: 434k, False: 0]
  ------------------
 4256|   434k|}
g_type_check_value_holds:
 4261|   434k|{
 4262|   434k|  return value && type_check_is_value_type_U (value->g_type) && g_type_is_a (value->g_type, type);
  ------------------
  |  Branch (4262:10): [True: 434k, False: 0]
  |  Branch (4262:19): [True: 434k, False: 0]
  |  Branch (4262:65): [True: 434k, False: 0]
  ------------------
 4263|   434k|}
g_type_value_table_peek:
 4280|  1.31M|{
 4281|  1.31M|  GTypeValueTable *vtable = NULL;
 4282|  1.31M|  TypeNode *node = lookup_type_node_I (type);
 4283|  1.31M|  gboolean has_refed_data, has_table;
 4284|       |
 4285|  1.31M|  if (node && NODE_REFCOUNT (node) && node->mutatable_check_cache)
  ------------------
  |  |  256|  2.63M|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  1.31M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.31M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  1.31M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.31M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  1.31M|    gint gaig_temp;                                                          \
  |  |  |  |   99|  1.31M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1.31M]
  |  |  |  |  ------------------
  |  |  |  |  100|  1.31M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  1.31M|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  1.31M|  }))
  |  |  ------------------
  |  |  |  Branch (256:49): [True: 1.31M, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4285:7): [True: 1.31M, False: 0]
  |  Branch (4285:39): [True: 1.31M, False: 4.11k]
  ------------------
 4286|  1.31M|    return node->data->common.value_table;
 4287|       |
 4288|  4.11k|  G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|  4.11k|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 4289|       |  
 4290|  4.11k| restart_table_peek:
 4291|  4.11k|  has_refed_data = node && node->data && NODE_REFCOUNT (node) > 0;
  ------------------
  |  |  256|  4.11k|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  4.11k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.11k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  4.11k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  4.11k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  4.11k|    gint gaig_temp;                                                          \
  |  |  |  |   99|  4.11k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 4.11k]
  |  |  |  |  ------------------
  |  |  |  |  100|  4.11k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  4.11k|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  4.11k|  }))
  |  |  ------------------
  ------------------
  |  Branch (4291:20): [True: 4.11k, False: 0]
  |  Branch (4291:28): [True: 4.11k, False: 0]
  |  Branch (4291:42): [True: 4.11k, False: 0]
  ------------------
 4292|  4.11k|  has_table = has_refed_data && node->data->common.value_table->value_init;
  ------------------
  |  Branch (4292:15): [True: 4.11k, False: 0]
  |  Branch (4292:33): [True: 4.11k, False: 0]
  ------------------
 4293|  4.11k|  if (has_refed_data)
  ------------------
  |  Branch (4293:7): [True: 4.11k, False: 0]
  ------------------
 4294|  4.11k|    {
 4295|  4.11k|      if (has_table)
  ------------------
  |  Branch (4295:11): [True: 4.11k, False: 0]
  ------------------
 4296|  4.11k|	vtable = node->data->common.value_table;
 4297|      0|      else if (NODE_IS_IFACE (node))
  ------------------
  |  |  258|      0|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|      0|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      0|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      0|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      0|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4298|      0|	{
 4299|      0|	  guint i;
 4300|       |	  
 4301|      0|	  for (i = 0; i < IFACE_NODE_N_PREREQUISITES (node); i++)
  ------------------
  |  |  261|      0|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  |  Branch (4301:16): [True: 0, False: 0]
  ------------------
 4302|      0|	    {
 4303|      0|	      GType prtype = IFACE_NODE_PREREQUISITES (node)[i];
  ------------------
  |  |  262|      0|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
 4304|      0|	      TypeNode *prnode = lookup_type_node_I (prtype);
 4305|       |	      
 4306|      0|	      if (prnode->is_instantiatable)
  ------------------
  |  Branch (4306:12): [True: 0, False: 0]
  ------------------
 4307|      0|		{
 4308|      0|		  type = prtype;
 4309|      0|		  node = lookup_type_node_I (type);
 4310|      0|		  goto restart_table_peek;
 4311|      0|		}
 4312|      0|	    }
 4313|      0|	}
 4314|  4.11k|    }
 4315|       |  
 4316|  4.11k|  G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|  4.11k|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 4317|       |  
 4318|  4.11k|  if (vtable)
  ------------------
  |  Branch (4318:7): [True: 4.11k, False: 0]
  ------------------
 4319|  4.11k|    return vtable;
 4320|       |  
 4321|      0|  if (!node)
  ------------------
  |  Branch (4321:7): [True: 0, False: 0]
  ------------------
 4322|      0|    g_warning (G_STRLOC ": type id '%" G_GSIZE_FORMAT "' is invalid", type);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4323|      0|  if (!has_refed_data)
  ------------------
  |  Branch (4323:7): [True: 0, False: 0]
  ------------------
 4324|      0|    g_warning ("can't peek value table for type '%s' which is not currently referenced",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4325|      0|	       type_descriptive_name_I (type));
 4326|       |  
 4327|       |  return NULL;
 4328|  4.11k|}
_g_type_boxed_init:
 4370|      2|{
 4371|      2|  TypeNode *node = lookup_type_node_I (type);
 4372|       |
 4373|      2|  node->data->boxed.copy_func = copy_func;
 4374|      2|  node->data->boxed.free_func = free_func;
 4375|      2|}
gtype.c:gobject_init_ctor:
 4546|      2|{
 4547|      2|  gobject_init ();
 4548|      2|}
g_type_add_instance_private:
 4667|     12|{
 4668|     12|  TypeNode *node = lookup_type_node_I (class_gtype);
 4669|       |
 4670|     12|  g_return_val_if_fail (private_size > 0, 0);
  ------------------
  |  |  643|     12|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     12|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     12|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     12|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     12| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     12|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     12|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     12|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 12, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     12|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     12|   else                                         \
  |  |  |  |  |  | 1021|     12|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     12|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     12|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 12, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     12|      { } \
  |  |  646|     12|    else \
  |  |  647|     12|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     12|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     12|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4671|     12|  g_return_val_if_fail (private_size <= 0xffff, 0);
  ------------------
  |  |  643|     12|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     12|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     12|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     12|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     12| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     12|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     12|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     12|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 12, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     12|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     12|   else                                         \
  |  |  |  |  |  | 1021|     12|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     12|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     12|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 12, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     12|      { } \
  |  |  646|     12|    else \
  |  |  647|     12|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     12|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     12|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4672|       |
 4673|     12|  if (!node || !node->is_classed || !node->is_instantiatable || !node->data)
  ------------------
  |  Branch (4673:7): [True: 0, False: 12]
  |  Branch (4673:16): [True: 0, False: 12]
  |  Branch (4673:37): [True: 0, False: 12]
  |  Branch (4673:65): [True: 0, False: 12]
  ------------------
 4674|      0|    {
 4675|      0|      g_warning ("cannot add private field to invalid (non-instantiatable) type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4676|      0|		 type_descriptive_name_I (class_gtype));
 4677|      0|      return 0;
 4678|      0|    }
 4679|       |
 4680|     12|  if (node->plugin != NULL)
  ------------------
  |  Branch (4680:7): [True: 0, False: 12]
  ------------------
 4681|      0|    {
 4682|      0|      g_warning ("cannot use g_type_add_instance_private() with dynamic type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4683|      0|                 type_descriptive_name_I (class_gtype));
 4684|      0|      return 0;
 4685|      0|    }
 4686|       |
 4687|       |  /* in the future, we want to register the private data size of a type
 4688|       |   * directly from the get_type() implementation so that we can take full
 4689|       |   * advantage of the type definition macros that we already have.
 4690|       |   *
 4691|       |   * unfortunately, this does not behave correctly if a class in the middle
 4692|       |   * of the type hierarchy uses the "old style" of private data registration
 4693|       |   * from the class_init() implementation, as the private data offset is not
 4694|       |   * going to be known until the full class hierarchy is initialized.
 4695|       |   *
 4696|       |   * in order to transition our code to the Glorious New Future™, we proceed
 4697|       |   * with a two-step implementation: first, we provide this new function to
 4698|       |   * register the private data size in the get_type() implementation and we
 4699|       |   * hide it behind a macro. the function will return the private size, instead
 4700|       |   * of the offset, which will be stored inside a static variable defined by
 4701|       |   * the G_DEFINE_TYPE_EXTENDED macro. the G_DEFINE_TYPE_EXTENDED macro will
 4702|       |   * check the variable and call g_type_class_add_instance_private(), which
 4703|       |   * will use the data size and actually register the private data, then
 4704|       |   * return the computed offset of the private data, which will be stored
 4705|       |   * inside the static variable, so we can use it to retrieve the pointer
 4706|       |   * to the private data structure.
 4707|       |   *
 4708|       |   * once all our code has been migrated to the new idiomatic form of private
 4709|       |   * data registration, we will change the g_type_add_instance_private()
 4710|       |   * function to actually perform the registration and return the offset
 4711|       |   * of the private data; g_type_class_add_instance_private() already checks
 4712|       |   * if the passed argument is negative (meaning that it's an offset in the
 4713|       |   * GTypeInstance allocation) and becomes a no-op if that's the case. this
 4714|       |   * should make the migration fully transparent even if we're effectively
 4715|       |   * copying this macro into everybody's code.
 4716|       |   */
 4717|     12|  return private_size;
 4718|     12|}
g_type_class_adjust_private_offset:
 4724|      8|{
 4725|      8|  GType class_gtype = ((GTypeClass *) g_class)->g_type;
 4726|      8|  TypeNode *node = lookup_type_node_I (class_gtype);
 4727|      8|  gssize private_size;
 4728|       |
 4729|      8|  g_return_if_fail (private_size_or_offset != NULL);
  ------------------
  |  |  630|      8|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      8|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      8|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      8|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      8| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      8|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      8|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      8|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      8|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      8|   else                                         \
  |  |  |  |  |  | 1021|      8|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      8|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      8|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      8|      { } \
  |  |  633|      8|    else \
  |  |  634|      8|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      8|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      8|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4730|       |
 4731|       |  /* if we have been passed the offset instead of the private data size,
 4732|       |   * then we consider this as a no-op, and just return the value. see the
 4733|       |   * comment in g_type_add_instance_private() for the full explanation.
 4734|       |   */
 4735|      8|  if (*private_size_or_offset > 0)
  ------------------
  |  Branch (4735:7): [True: 8, False: 0]
  ------------------
 4736|      8|    g_return_if_fail (*private_size_or_offset <= 0xffff);
  ------------------
  |  |  630|      8|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      8|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      8|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      8|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      8| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      8|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      8|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      8|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      8|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      8|   else                                         \
  |  |  |  |  |  | 1021|      8|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      8|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      8|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      8|      { } \
  |  |  633|      8|    else \
  |  |  634|      8|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      8|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      8|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4737|      0|  else
 4738|      0|    return;
 4739|       |
 4740|      8|  if (!node || !node->is_classed || !node->is_instantiatable || !node->data)
  ------------------
  |  Branch (4740:7): [True: 0, False: 8]
  |  Branch (4740:16): [True: 0, False: 8]
  |  Branch (4740:37): [True: 0, False: 8]
  |  Branch (4740:65): [True: 0, False: 8]
  ------------------
 4741|      0|    {
 4742|      0|      g_warning ("cannot add private field to invalid (non-instantiatable) type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4743|      0|		 type_descriptive_name_I (class_gtype));
 4744|      0|      *private_size_or_offset = 0;
 4745|      0|      return;
 4746|      0|    }
 4747|       |
 4748|      8|  if (NODE_PARENT_TYPE (node))
  ------------------
  |  |  253|      8|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  |  |  ------------------
  |  |  |  Branch (253:34): [True: 7, False: 1]
  |  |  ------------------
  ------------------
 4749|      7|    {
 4750|      7|      TypeNode *pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|      7|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 4751|      7|      if (node->data->instance.private_size != pnode->data->instance.private_size)
  ------------------
  |  Branch (4751:11): [True: 0, False: 7]
  ------------------
 4752|      0|	{
 4753|      0|	  g_warning ("g_type_add_instance_private() called multiple times for the same type");
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4754|      0|          *private_size_or_offset = 0;
 4755|      0|	  return;
 4756|      0|	}
 4757|      7|    }
 4758|       |
 4759|      8|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      8|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 4760|       |
 4761|      8|  private_size = ALIGN_STRUCT (node->data->instance.private_size + *private_size_or_offset);
  ------------------
  |  |  161|      8|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      8|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      8|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 4762|      8|  g_assert (private_size <= 0xffff);
  ------------------
  |  |  231|      8|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      8|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      8|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      8|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      8| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      8|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      8|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      8|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      8|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      8|   else                                         \
  |  |  |  |  |  | 1021|      8|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      8|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      8|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      8|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      8|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      8|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4763|      8|  node->data->instance.private_size = private_size;
 4764|       |
 4765|      8|  *private_size_or_offset = -(gint) node->data->instance.private_size;
 4766|       |
 4767|      8|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      8|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 4768|      8|}
g_type_ensure:
 4956|  77.3k|{
 4957|       |  /* In theory, @type has already been resolved and so there's nothing
 4958|       |   * to do here. But this protects us in the case where the function
 4959|       |   * gets inlined (as it might in gobject_init_ctor() above).
 4960|       |   */
 4961|  77.3k|  if (G_UNLIKELY (type == (GType)-1))
  ------------------
  |  | 1025|  77.3k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  77.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  77.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  77.3k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  77.3k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 77.3k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  77.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  77.3k|   else                                         \
  |  |  |  | 1021|  77.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  77.3k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  77.3k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 77.3k]
  |  |  ------------------
  ------------------
 4962|  77.3k|    g_error ("can't happen");
  ------------------
  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  337|      0|                        for (;;) ;                   \
  |  |  338|      0|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4963|  77.3k|}
gtype.c:lookup_type_node_I:
  395|   143M|{
  396|   143M|  if (utype > G_TYPE_FUNDAMENTAL_MAX)
  ------------------
  |  |   45|   143M|#define	G_TYPE_FUNDAMENTAL_MAX		(255 << G_TYPE_FUNDAMENTAL_SHIFT)
  |  |  ------------------
  |  |  |  |  210|   143M|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  ------------------
  ------------------
  |  Branch (396:7): [True: 136M, False: 7.15M]
  ------------------
  397|   136M|    return (TypeNode*) (utype & ~TYPE_ID_MASK);
  ------------------
  |  |  267|   136M|#define	TYPE_ID_MASK				((GType) ((1 << G_TYPE_FUNDAMENTAL_SHIFT) - 1))
  |  |  ------------------
  |  |  |  |  210|   136M|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  ------------------
  ------------------
  398|  7.15M|  else
  399|  7.15M|    return static_fundamental_type_nodes[utype >> G_TYPE_FUNDAMENTAL_SHIFT];
  ------------------
  |  |  210|  7.15M|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  ------------------
  400|   143M|}
gtype.c:type_iface_add_prerequisite_W:
 1508|      5|{
 1509|      5|  GType prerequisite_type = NODE_TYPE (prerequisite_node);
  ------------------
  |  |  252|      5|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 1510|      5|  GType *prerequisites, *dependants;
 1511|      5|  guint n_dependants, i;
 1512|       |  
 1513|      5|  g_assert (NODE_IS_IFACE (iface) &&
  ------------------
  |  |  231|      5|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      5|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     30|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      5|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      5|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1514|      5|	    IFACE_NODE_N_PREREQUISITES (iface) < MAX_N_PREREQUISITES &&
 1515|      5|	    (prerequisite_node->is_instantiatable || NODE_IS_IFACE (prerequisite_node)));
 1516|       |  
 1517|      5|  prerequisites = IFACE_NODE_PREREQUISITES (iface);
  ------------------
  |  |  262|      5|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
 1518|      5|  for (i = 0; i < IFACE_NODE_N_PREREQUISITES (iface); i++)
  ------------------
  |  |  261|      5|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  |  Branch (1518:15): [True: 1, False: 4]
  ------------------
 1519|      1|    if (prerequisites[i] == prerequisite_type)
  ------------------
  |  Branch (1519:9): [True: 0, False: 1]
  ------------------
 1520|      0|      return;			/* we already have that prerequisiste */
 1521|      1|    else if (prerequisites[i] > prerequisite_type)
  ------------------
  |  Branch (1521:14): [True: 1, False: 0]
  ------------------
 1522|      1|      break;
 1523|      5|  IFACE_NODE_N_PREREQUISITES (iface) += 1;
  ------------------
  |  |  261|      5|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
 1524|      5|  IFACE_NODE_PREREQUISITES (iface) = g_renew (GType,
  ------------------
  |  |  262|      5|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
                IFACE_NODE_PREREQUISITES (iface) = g_renew (GType,
  ------------------
  |  |  321|      5|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|      5|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|      5|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|      5|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|      5|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|      5|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  |  |  254|      5|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|      5|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  |  |  256|      5|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (256:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (256:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  257|      5|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|      5|	  else							\
  |  |  |  |  259|      5|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|      5|	  __p;							\
  |  |  |  |  261|      5|	}))
  |  |  ------------------
  ------------------
 1525|      5|					      IFACE_NODE_PREREQUISITES (iface),
 1526|      5|					      IFACE_NODE_N_PREREQUISITES (iface));
 1527|      5|  prerequisites = IFACE_NODE_PREREQUISITES (iface);
  ------------------
  |  |  262|      5|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
 1528|      5|  memmove (prerequisites + i + 1, prerequisites + i,
 1529|      5|           sizeof (prerequisites[0]) * (IFACE_NODE_N_PREREQUISITES (iface) - i - 1));
  ------------------
  |  |  261|      5|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
 1530|      5|  prerequisites[i] = prerequisite_type;
 1531|       |  
 1532|       |  /* we want to get notified when prerequisites get added to prerequisite_node */
 1533|      5|  if (NODE_IS_IFACE (prerequisite_node))
  ------------------
  |  |  258|      5|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|      5|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      5|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      5|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      5|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 1534|      0|    {
 1535|      0|      dependants = iface_node_get_dependants_array_L (prerequisite_node);
  ------------------
  |  |  265|      0|#define	iface_node_get_dependants_array_L(n)	((GType*) type_get_qdata_L ((n), static_quark_dependants_array))
  ------------------
 1536|      0|      n_dependants = dependants ? dependants[0] : 0;
  ------------------
  |  Branch (1536:22): [True: 0, False: 0]
  ------------------
 1537|      0|      n_dependants += 1;
 1538|      0|      dependants = g_renew (GType, dependants, n_dependants + 1);
  ------------------
  |  |  321|      0|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|      0|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|      0|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|      0|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|      0|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|      0|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  254|      0|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|      0|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  256|      0|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (256:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (256:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  257|      0|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|      0|	  else							\
  |  |  |  |  259|      0|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|      0|	  __p;							\
  |  |  |  |  261|      0|	}))
  |  |  ------------------
  ------------------
 1539|      0|      dependants[n_dependants] = NODE_TYPE (iface);
  ------------------
  |  |  252|      0|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 1540|      0|      dependants[0] = n_dependants;
 1541|      0|      iface_node_set_dependants_array_W (prerequisite_node, dependants);
  ------------------
  |  |  266|      0|#define	iface_node_set_dependants_array_W(n,d)	(type_set_qdata_W ((n), static_quark_dependants_array, (d)))
  ------------------
 1542|      0|    }
 1543|       |  
 1544|       |  /* we need to notify all dependants */
 1545|      5|  dependants = iface_node_get_dependants_array_L (iface);
  ------------------
  |  |  265|      5|#define	iface_node_get_dependants_array_L(n)	((GType*) type_get_qdata_L ((n), static_quark_dependants_array))
  ------------------
 1546|      5|  n_dependants = dependants ? dependants[0] : 0;
  ------------------
  |  Branch (1546:18): [True: 0, False: 5]
  ------------------
 1547|      5|  for (i = 1; i <= n_dependants; i++)
  ------------------
  |  Branch (1547:15): [True: 0, False: 5]
  ------------------
 1548|      0|    type_iface_add_prerequisite_W (lookup_type_node_I (dependants[i]), prerequisite_node);
 1549|      5|}
gtype.c:check_type_name_I:
  743|    110|{
  744|    110|  static const gchar extra_chars[] = "-_+";
  745|    110|  const gchar *p = type_name;
  746|    110|  gboolean name_valid;
  747|       |  
  748|    110|  if (!type_name[0] || !type_name[1] || !type_name[2])
  ------------------
  |  Branch (748:7): [True: 0, False: 110]
  |  Branch (748:24): [True: 0, False: 110]
  |  Branch (748:41): [True: 0, False: 110]
  ------------------
  749|      0|    {
  750|      0|      g_warning ("type name '%s' is too short", type_name);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  751|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  752|      0|    }
  753|       |  /* check the first letter */
  754|    110|  name_valid = (p[0] >= 'A' && p[0] <= 'Z') || (p[0] >= 'a' && p[0] <= 'z') || p[0] == '_';
  ------------------
  |  Branch (754:17): [True: 110, False: 0]
  |  Branch (754:32): [True: 84, False: 26]
  |  Branch (754:49): [True: 26, False: 0]
  |  Branch (754:64): [True: 26, False: 0]
  |  Branch (754:80): [True: 0, False: 0]
  ------------------
  755|  1.09k|  for (p = type_name + 1; *p; p++)
  ------------------
  |  Branch (755:27): [True: 980, False: 110]
  ------------------
  756|    980|    name_valid &= ((p[0] >= 'A' && p[0] <= 'Z') ||
  ------------------
  |  Branch (756:21): [True: 964, False: 16]
  |  Branch (756:36): [True: 162, False: 802]
  ------------------
  757|    818|		   (p[0] >= 'a' && p[0] <= 'z') ||
  ------------------
  |  Branch (757:7): [True: 802, False: 16]
  |  Branch (757:22): [True: 802, False: 0]
  ------------------
  758|     16|		   (p[0] >= '0' && p[0] <= '9') ||
  ------------------
  |  Branch (758:7): [True: 16, False: 0]
  |  Branch (758:22): [True: 16, False: 0]
  ------------------
  759|      0|		   strchr (extra_chars, p[0]));
  ------------------
  |  Branch (759:6): [True: 0, False: 0]
  ------------------
  760|    110|  if (!name_valid)
  ------------------
  |  Branch (760:7): [True: 0, False: 110]
  ------------------
  761|      0|    {
  762|      0|      g_warning ("type name '%s' contains invalid characters", type_name);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  763|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  764|      0|    }
  765|    110|  if (g_type_from_name (type_name))
  ------------------
  |  Branch (765:7): [True: 0, False: 110]
  ------------------
  766|      0|    {
  767|      0|      g_warning ("cannot register existing type '%s'", type_name);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  768|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  769|      0|    }
  770|       |  
  771|    110|  return TRUE;
  ------------------
  |  |  818|    110|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    110|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  772|    110|}
gtype.c:type_node_fundamental_new_W:
  542|     42|{
  543|     42|  GTypeFundamentalInfo *finfo;
  544|     42|  TypeNode *node;
  545|       |  
  546|     42|  g_assert ((ftype & TYPE_ID_MASK) == 0);
  ------------------
  |  |  231|     42|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     42|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     42|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     42|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     42| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     42|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     42|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     42|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 42, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     42|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     42|   else                                         \
  |  |  |  |  |  | 1021|     42|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     42|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     42|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 42, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     42|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     42|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     42|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 42]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  547|     42|  g_assert (ftype <= G_TYPE_FUNDAMENTAL_MAX);
  ------------------
  |  |  231|     42|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     42|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     42|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     42|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     42| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     42|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     42|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     42|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 42, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     42|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     42|   else                                         \
  |  |  |  |  |  | 1021|     42|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     42|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     42|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 42, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     42|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     42|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     42|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 42]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  548|       |  
  549|     42|  if (ftype >> G_TYPE_FUNDAMENTAL_SHIFT == static_fundamental_next)
  ------------------
  |  |  210|     42|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  ------------------
  |  Branch (549:7): [True: 0, False: 42]
  ------------------
  550|      0|    static_fundamental_next++;
  551|       |  
  552|     42|  type_flags &= TYPE_FUNDAMENTAL_FLAG_MASK;
  ------------------
  |  |  142|     42|#define TYPE_FUNDAMENTAL_FLAG_MASK (G_TYPE_FLAG_CLASSED | \
  |  |  143|     42|				    G_TYPE_FLAG_INSTANTIATABLE | \
  |  |  144|     42|				    G_TYPE_FLAG_DERIVABLE | \
  |  |  145|     42|				    G_TYPE_FLAG_DEEP_DERIVABLE)
  ------------------
  553|       |  
  554|     42|  node = type_node_any_new_W (NULL, ftype, name, NULL, type_flags);
  555|       |  
  556|     42|  finfo = type_node_fundamental_info_I (node);
  557|     42|  finfo->type_flags = type_flags;
  558|       |  
  559|     42|  return node;
  560|     42|}
gtype.c:type_node_any_new_W:
  427|    114|{
  428|    114|  guint n_supers;
  429|    114|  GType type;
  430|    114|  TypeNode *node;
  431|    114|  guint i, node_size = 0;
  432|       |
  433|    114|  n_supers = pnode ? pnode->n_supers + 1 : 0;
  ------------------
  |  Branch (433:14): [True: 72, False: 42]
  ------------------
  434|       |  
  435|    114|  if (!pnode)
  ------------------
  |  Branch (435:7): [True: 42, False: 72]
  ------------------
  436|     42|    node_size += SIZEOF_FUNDAMENTAL_INFO;	      /* fundamental type info */
  ------------------
  |  |  147|     42|#define	SIZEOF_FUNDAMENTAL_INFO	   ((gssize) MAX (MAX (sizeof (GTypeFundamentalInfo), \
  |  |  ------------------
  |  |  |  |  822|     84|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (822:21): [Folded, False: 42]
  |  |  |  |  |  Branch (822:23): [Folded, False: 42]
  |  |  |  |  |  Branch (822:36): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  148|     42|						       sizeof (gpointer)), \
  |  |  149|     42|                                                  sizeof (glong)))
  ------------------
  437|    114|  node_size += SIZEOF_BASE_TYPE_NODE ();	      /* TypeNode structure */
  ------------------
  |  |  247|    114|#define SIZEOF_BASE_TYPE_NODE()			(G_STRUCT_OFFSET (TypeNode, supers))
  |  |  ------------------
  |  |  |  |  853|    114|      ((glong) offsetof (struct_type, member))
  |  |  ------------------
  ------------------
  438|    114|  node_size += (sizeof (GType) * (1 + n_supers + 1)); /* self + ancestors + (0) for ->supers[] */
  439|    114|  node = g_malloc0 (node_size);
  440|    114|  if (!pnode)					      /* offset fundamental types */
  ------------------
  |  Branch (440:7): [True: 42, False: 72]
  ------------------
  441|     42|    {
  442|     42|      node = G_STRUCT_MEMBER_P (node, SIZEOF_FUNDAMENTAL_INFO);
  ------------------
  |  |  860|    168|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  |  |  |  Branch (860:50): [Folded, False: 42]
  |  |  |  Branch (860:50): [Folded, False: 0]
  |  |  |  Branch (860:50): [Folded, False: 42]
  |  |  ------------------
  ------------------
  443|     42|      static_fundamental_type_nodes[ftype >> G_TYPE_FUNDAMENTAL_SHIFT] = node;
  ------------------
  |  |  210|     42|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  ------------------
  444|     42|      type = ftype;
  445|       |
  446|     42|#if ENABLE_VALGRIND
  447|     42|      VALGRIND_MALLOCLIKE_BLOCK (node, node_size - SIZEOF_FUNDAMENTAL_INFO, FALSE, TRUE);
  ------------------
  |  | 6479|     42|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK,       \
  |  |  ------------------
  |  |  |  |  203|     42|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|     42|    __extension__                                                 \
  |  |  |  |  |  |  414|     42|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|     42|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|     42|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|     42|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|    168|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (418:40): [Folded, False: 42]
  |  |  |  |  |  |  |  Branch (418:40): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (418:40): [Folded, False: 42]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  419|     42|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|     42|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|     42|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|     42|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|     42|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|     42|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|     42|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|     42|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|     42|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|     42|                    );                                            \
  |  |  |  |  |  |  429|     42|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|     42|    })
  |  |  |  |  ------------------
  |  |  |  |  204|     42|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|     42|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 42]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6480|     42|                                    addr, sizeB, rzB, is_zeroed, 0)
  ------------------
  448|     42|#endif
  449|     42|    }
  450|     72|  else
  451|     72|    type = (GType) node;
  452|       |  
  453|    114|  g_assert ((type & TYPE_ID_MASK) == 0);
  ------------------
  |  |  231|    114|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    114|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|    114|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|    114|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    114| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    114|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    114|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    114|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 114, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    114|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    114|   else                                         \
  |  |  |  |  |  | 1021|    114|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    114|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    114|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 114, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|    114|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|    114|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    114|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 114]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  454|       |  
  455|    114|  node->n_supers = n_supers;
  456|    114|  if (!pnode)
  ------------------
  |  Branch (456:7): [True: 42, False: 72]
  ------------------
  457|     42|    {
  458|     42|      node->supers[0] = type;
  459|     42|      node->supers[1] = 0;
  460|       |      
  461|     42|      node->is_classed = (type_flags & G_TYPE_FLAG_CLASSED) != 0;
  462|     42|      node->is_instantiatable = (type_flags & G_TYPE_FLAG_INSTANTIATABLE) != 0;
  463|       |      
  464|     42|      if (NODE_IS_IFACE (node))
  ------------------
  |  |  258|     42|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     42|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     42|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     42|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     42|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 2, False: 40]
  |  |  ------------------
  ------------------
  465|      2|	{
  466|      2|          IFACE_NODE_N_PREREQUISITES (node) = 0;
  ------------------
  |  |  261|      2|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  467|      2|	  IFACE_NODE_PREREQUISITES (node) = NULL;
  ------------------
  |  |  262|      2|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
  468|      2|	}
  469|     40|      else
  470|     40|	_g_atomic_array_init (CLASSED_NODE_IFACES_ENTRIES (node));
  ------------------
  |  |  259|     40|#define	CLASSED_NODE_IFACES_ENTRIES(node)	(&(node)->_prot.iface_entries)
  ------------------
  471|     42|    }
  472|     72|  else
  473|     72|    {
  474|     72|      node->supers[0] = type;
  475|     72|      memcpy (node->supers + 1, pnode->supers, sizeof (GType) * (1 + pnode->n_supers + 1));
  476|       |      
  477|     72|      node->is_classed = pnode->is_classed;
  478|     72|      node->is_instantiatable = pnode->is_instantiatable;
  479|       |      
  480|     72|      if (NODE_IS_IFACE (node))
  ------------------
  |  |  258|     72|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     72|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     72|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     72|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     72|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 6, False: 66]
  |  |  ------------------
  ------------------
  481|      6|	{
  482|      6|	  IFACE_NODE_N_PREREQUISITES (node) = 0;
  ------------------
  |  |  261|      6|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  483|      6|	  IFACE_NODE_PREREQUISITES (node) = NULL;
  ------------------
  |  |  262|      6|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
  484|      6|	}
  485|     66|      else
  486|     66|	{
  487|     66|	  guint j;
  488|     66|	  IFaceEntries *entries;
  489|       |
  490|     66|	  entries = _g_atomic_array_copy (CLASSED_NODE_IFACES_ENTRIES (pnode),
  ------------------
  |  |  259|     66|#define	CLASSED_NODE_IFACES_ENTRIES(node)	(&(node)->_prot.iface_entries)
  ------------------
  491|     66|					  IFACE_ENTRIES_HEADER_SIZE,
  ------------------
  |  |  293|     66|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  ------------------
  492|     66|					  0);
  493|     66|	  if (entries)
  ------------------
  |  Branch (493:8): [True: 8, False: 58]
  ------------------
  494|      8|	    {
  495|     16|	      for (j = 0; j < IFACE_ENTRIES_N_ENTRIES (entries); j++)
  ------------------
  |  |  294|     16|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     16|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|     16|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (495:20): [True: 8, False: 8]
  ------------------
  496|      8|		{
  497|      8|		  entries->entry[j].vtable = NULL;
  498|      8|		  entries->entry[j].init_state = UNINITIALIZED;
  499|      8|		}
  500|      8|	      _g_atomic_array_update (CLASSED_NODE_IFACES_ENTRIES (node),
  ------------------
  |  |  259|      8|#define	CLASSED_NODE_IFACES_ENTRIES(node)	(&(node)->_prot.iface_entries)
  ------------------
  501|      8|				      entries);
  502|      8|	    }
  503|     66|	}
  504|       |
  505|     72|      i = pnode->n_children++;
  506|     72|      pnode->children = g_renew (GType, pnode->children, pnode->n_children);
  ------------------
  |  |  321|     72|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|     72|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     72|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|     72|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|     72|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|     72|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|     72|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 72]
  |  |  |  |  ------------------
  |  |  |  |  254|     72|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|     72|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 72]
  |  |  |  |  ------------------
  |  |  |  |  256|     72|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (256:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (256:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  257|     72|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|     72|	  else							\
  |  |  |  |  259|     72|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|     72|	  __p;							\
  |  |  |  |  261|     72|	}))
  |  |  ------------------
  ------------------
  507|     72|      pnode->children[i] = type;
  508|     72|    }
  509|       |
  510|    114|  TRACE(GOBJECT_TYPE_NEW(name, node->supers[1], type));
  511|       |
  512|    114|  node->plugin = plugin;
  513|    114|  node->n_children = 0;
  514|    114|  node->children = NULL;
  515|    114|  node->data = NULL;
  516|    114|  node->qname = g_quark_from_string (name);
  517|    114|  node->global_gdata = NULL;
  518|    114|  g_hash_table_insert (static_type_nodes_ht,
  519|    114|		       (gpointer) g_quark_to_string (node->qname),
  520|    114|		       (gpointer) type);
  521|       |
  522|    114|  g_atomic_int_inc ((gint *)&type_registration_serial);
  ------------------
  |  |  148|    114|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|    114|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|    114|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|    114|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|    114|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 114]
  |  |  ------------------
  |  |  151|    114|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|    114|  }))
  ------------------
  523|       |
  524|    114|  return node;
  525|    114|}
gtype.c:check_type_info_I:
  892|    110|{
  893|    110|  GTypeFundamentalInfo *finfo = type_node_fundamental_info_I (lookup_type_node_I (ftype));
  894|    110|  gboolean is_interface = ftype == G_TYPE_INTERFACE;
  ------------------
  |  |   68|    110|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  ------------------
  |  |  |  |  221|    110|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|    110|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  895|       |  
  896|    110|  g_assert (ftype <= G_TYPE_FUNDAMENTAL_MAX && !(ftype & TYPE_ID_MASK));
  ------------------
  |  |  231|    110|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    110|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|    110|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|    110|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    110| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    110|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    110|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    330|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 110, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 110, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    110|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    110|   else                                         \
  |  |  |  |  |  | 1021|    110|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    110|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    110|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 110, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|    110|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|    110|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    110|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 110]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  897|       |  
  898|       |  /* check instance members */
  899|    110|  if (!(finfo->type_flags & G_TYPE_FLAG_INSTANTIATABLE) &&
  ------------------
  |  Branch (899:7): [True: 44, False: 66]
  ------------------
  900|     44|      (info->instance_size || info->n_preallocs || info->instance_init))
  ------------------
  |  Branch (900:8): [True: 0, False: 44]
  |  Branch (900:31): [True: 0, False: 44]
  |  Branch (900:52): [True: 0, False: 44]
  ------------------
  901|      0|    {
  902|      0|      if (pnode)
  ------------------
  |  Branch (902:11): [True: 0, False: 0]
  ------------------
  903|      0|	g_warning ("cannot instantiate '%s', derived from non-instantiatable parent type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  904|      0|		   type_name,
  905|      0|		   NODE_NAME (pnode));
  906|      0|      else
  907|      0|	g_warning ("cannot instantiate '%s' as non-instantiatable fundamental",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  908|      0|		   type_name);
  909|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  910|      0|    }
  911|       |  /* check class & interface members */
  912|    110|  if (!((finfo->type_flags & G_TYPE_FLAG_CLASSED) || is_interface) &&
  ------------------
  |  Branch (912:9): [True: 70, False: 40]
  |  Branch (912:54): [True: 6, False: 34]
  ------------------
  913|     34|      (info->class_init || info->class_finalize || info->class_data ||
  ------------------
  |  Branch (913:8): [True: 0, False: 34]
  |  Branch (913:28): [True: 0, False: 34]
  |  Branch (913:52): [True: 0, False: 34]
  ------------------
  914|     34|       info->class_size || info->base_init || info->base_finalize))
  ------------------
  |  Branch (914:8): [True: 0, False: 34]
  |  Branch (914:28): [True: 0, False: 34]
  |  Branch (914:47): [True: 0, False: 34]
  ------------------
  915|      0|    {
  916|      0|      if (pnode)
  ------------------
  |  Branch (916:11): [True: 0, False: 0]
  ------------------
  917|      0|	g_warning ("cannot create class for '%s', derived from non-classed parent type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  918|      0|		   type_name,
  919|      0|                   NODE_NAME (pnode));
  920|      0|      else
  921|      0|	g_warning ("cannot create class for '%s' as non-classed fundamental",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  922|      0|		   type_name);
  923|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  924|      0|    }
  925|       |  /* check interface size */
  926|    110|  if (is_interface && info->class_size < sizeof (GTypeInterface))
  ------------------
  |  Branch (926:7): [True: 6, False: 104]
  |  Branch (926:23): [True: 0, False: 6]
  ------------------
  927|      0|    {
  928|      0|      g_warning ("specified interface size for type '%s' is smaller than 'GTypeInterface' size",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  929|      0|		 type_name);
  930|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  931|      0|    }
  932|       |  /* check class size */
  933|    110|  if (finfo->type_flags & G_TYPE_FLAG_CLASSED)
  ------------------
  |  Branch (933:7): [True: 70, False: 40]
  ------------------
  934|     70|    {
  935|     70|      if (info->class_size < sizeof (GTypeClass))
  ------------------
  |  Branch (935:11): [True: 0, False: 70]
  ------------------
  936|      0|	{
  937|      0|	  g_warning ("specified class size for type '%s' is smaller than 'GTypeClass' size",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  938|      0|		     type_name);
  939|      0|	  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  940|      0|	}
  941|     70|      if (pnode && info->class_size < pnode->data->class.class_size)
  ------------------
  |  Branch (941:11): [True: 62, False: 8]
  |  Branch (941:20): [True: 0, False: 62]
  ------------------
  942|      0|	{
  943|      0|	  g_warning ("specified class size for type '%s' is smaller "
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  944|      0|		     "than the parent type's '%s' class size",
  945|      0|		     type_name,
  946|      0|		     NODE_NAME (pnode));
  947|      0|	  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  948|      0|	}
  949|     70|    }
  950|       |  /* check instance size */
  951|    110|  if (finfo->type_flags & G_TYPE_FLAG_INSTANTIATABLE)
  ------------------
  |  Branch (951:7): [True: 66, False: 44]
  ------------------
  952|     66|    {
  953|     66|      if (info->instance_size < sizeof (GTypeInstance))
  ------------------
  |  Branch (953:11): [True: 0, False: 66]
  ------------------
  954|      0|	{
  955|      0|	  g_warning ("specified instance size for type '%s' is smaller than 'GTypeInstance' size",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  956|      0|		     type_name);
  957|      0|	  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  958|      0|	}
  959|     66|      if (pnode && info->instance_size < pnode->data->instance.instance_size)
  ------------------
  |  Branch (959:11): [True: 62, False: 4]
  |  Branch (959:20): [True: 0, False: 62]
  ------------------
  960|      0|	{
  961|      0|	  g_warning ("specified instance size for type '%s' is smaller "
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  962|      0|		     "than the parent type's '%s' instance size",
  963|      0|		     type_name,
  964|      0|		     NODE_NAME (pnode));
  965|      0|	  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  966|      0|	}
  967|     66|    }
  968|       |  
  969|    110|  return TRUE;
  ------------------
  |  |  818|    110|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    110|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  970|    110|}
gtype.c:type_data_make_W:
 1088|    112|{
 1089|    112|  TypeData *data;
 1090|    112|  GTypeValueTable *vtable = NULL;
 1091|    112|  guint vtable_size = 0;
 1092|       |  
 1093|    112|  g_assert (node->data == NULL && info != NULL);
  ------------------
  |  |  231|    112|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    112|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|    112|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|    112|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    112| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    112|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    112|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    336|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 112, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 112, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    112|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    112|   else                                         \
  |  |  |  |  |  | 1021|    112|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    112|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    112|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 112, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|    112|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|    112|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    112|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 112]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1094|       |  
 1095|    112|  if (!value_table)
  ------------------
  |  Branch (1095:7): [True: 74, False: 38]
  ------------------
 1096|     74|    {
 1097|     74|      TypeNode *pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|     74|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 1098|       |      
 1099|     74|      if (pnode)
  ------------------
  |  Branch (1099:11): [True: 70, False: 4]
  ------------------
 1100|     70|	vtable = pnode->data->common.value_table;
 1101|      4|      else
 1102|      4|	{
 1103|      4|	  static const GTypeValueTable zero_vtable = { NULL, };
 1104|       |	  
 1105|      4|	  value_table = &zero_vtable;
 1106|      4|	}
 1107|     74|    }
 1108|    112|  if (value_table)
  ------------------
  |  Branch (1108:7): [True: 42, False: 70]
  ------------------
 1109|     42|    {
 1110|       |      /* need to setup vtable_size since we have to allocate it with data in one chunk */
 1111|     42|      vtable_size = sizeof (GTypeValueTable);
 1112|     42|      if (value_table->collect_format)
  ------------------
  |  Branch (1112:11): [True: 38, False: 4]
  ------------------
 1113|     38|	vtable_size += strlen (value_table->collect_format);
 1114|     42|      if (value_table->lcopy_format)
  ------------------
  |  Branch (1114:11): [True: 38, False: 4]
  ------------------
 1115|     38|	vtable_size += strlen (value_table->lcopy_format);
 1116|     42|      vtable_size += 2;
 1117|     42|    }
 1118|       |   
 1119|    112|  if (node->is_instantiatable) /* careful, is_instantiatable is also is_classed */
  ------------------
  |  Branch (1119:7): [True: 66, False: 46]
  ------------------
 1120|     66|    {
 1121|     66|      TypeNode *pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|     66|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 1122|       |
 1123|     66|      data = g_malloc0 (sizeof (InstanceData) + vtable_size);
 1124|     66|      if (vtable_size)
  ------------------
  |  Branch (1124:11): [True: 4, False: 62]
  ------------------
 1125|      4|	vtable = G_STRUCT_MEMBER_P (data, sizeof (InstanceData));
  ------------------
  |  |  860|      4|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1126|     66|      data->instance.class_size = info->class_size;
 1127|     66|      data->instance.class_init_base = info->base_init;
 1128|     66|      data->instance.class_finalize_base = info->base_finalize;
 1129|     66|      data->instance.class_init = info->class_init;
 1130|     66|      data->instance.class_finalize = info->class_finalize;
 1131|     66|      data->instance.class_data = info->class_data;
 1132|     66|      data->instance.class = NULL;
 1133|     66|      data->instance.init_state = UNINITIALIZED;
 1134|     66|      data->instance.instance_size = info->instance_size;
 1135|       |      /* We'll set the final value for data->instance.private size
 1136|       |       * after the parent class has been initialized
 1137|       |       */
 1138|     66|      data->instance.private_size = 0;
 1139|     66|      data->instance.class_private_size = 0;
 1140|     66|      if (pnode)
  ------------------
  |  Branch (1140:11): [True: 62, False: 4]
  ------------------
 1141|     62|        data->instance.class_private_size = pnode->data->instance.class_private_size;
 1142|     66|      data->instance.n_preallocs = MIN (info->n_preallocs, 1024);
  ------------------
  |  |  825|     66|#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (825:21): [True: 66, False: 0]
  |  |  ------------------
  ------------------
 1143|     66|      data->instance.instance_init = info->instance_init;
 1144|     66|    }
 1145|     46|  else if (node->is_classed) /* only classed */
  ------------------
  |  Branch (1145:12): [True: 4, False: 42]
  ------------------
 1146|      4|    {
 1147|      4|      TypeNode *pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|      4|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 1148|       |
 1149|      4|      data = g_malloc0 (sizeof (ClassData) + vtable_size);
 1150|      4|      if (vtable_size)
  ------------------
  |  Branch (1150:11): [True: 4, False: 0]
  ------------------
 1151|      4|	vtable = G_STRUCT_MEMBER_P (data, sizeof (ClassData));
  ------------------
  |  |  860|      4|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1152|      4|      data->class.class_size = info->class_size;
 1153|      4|      data->class.class_init_base = info->base_init;
 1154|      4|      data->class.class_finalize_base = info->base_finalize;
 1155|      4|      data->class.class_init = info->class_init;
 1156|      4|      data->class.class_finalize = info->class_finalize;
 1157|      4|      data->class.class_data = info->class_data;
 1158|      4|      data->class.class = NULL;
 1159|      4|      data->class.class_private_size = 0;
 1160|      4|      if (pnode)
  ------------------
  |  Branch (1160:11): [True: 0, False: 4]
  ------------------
 1161|      0|        data->class.class_private_size = pnode->data->class.class_private_size;
 1162|      4|      data->class.init_state = UNINITIALIZED;
 1163|      4|    }
 1164|     42|  else if (NODE_IS_IFACE (node))
  ------------------
  |  |  258|     42|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     42|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     42|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     42|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     42|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 8, False: 34]
  |  |  ------------------
  ------------------
 1165|      8|    {
 1166|      8|      data = g_malloc0 (sizeof (IFaceData) + vtable_size);
 1167|      8|      if (vtable_size)
  ------------------
  |  Branch (1167:11): [True: 2, False: 6]
  ------------------
 1168|      2|	vtable = G_STRUCT_MEMBER_P (data, sizeof (IFaceData));
  ------------------
  |  |  860|      2|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1169|      8|      data->iface.vtable_size = info->class_size;
 1170|      8|      data->iface.vtable_init_base = info->base_init;
 1171|      8|      data->iface.vtable_finalize_base = info->base_finalize;
 1172|      8|      data->iface.dflt_init = info->class_init;
 1173|      8|      data->iface.dflt_finalize = info->class_finalize;
 1174|      8|      data->iface.dflt_data = info->class_data;
 1175|      8|      data->iface.dflt_vtable = NULL;
 1176|      8|    }
 1177|     34|  else if (NODE_IS_BOXED (node))
  ------------------
  |  |  257|     34|#define	NODE_IS_BOXED(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_BOXED)
  |  |  ------------------
  |  |  |  |  254|     34|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_BOXED(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_BOXED)
  |  |  ------------------
  |  |  |  |  166|     34|#define G_TYPE_BOXED			G_TYPE_MAKE_FUNDAMENTAL (18)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     34|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     34|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (257:31): [True: 4, False: 30]
  |  |  ------------------
  ------------------
 1178|      4|    {
 1179|      4|      data = g_malloc0 (sizeof (BoxedData) + vtable_size);
 1180|      4|      if (vtable_size)
  ------------------
  |  Branch (1180:11): [True: 4, False: 0]
  ------------------
 1181|      4|	vtable = G_STRUCT_MEMBER_P (data, sizeof (BoxedData));
  ------------------
  |  |  860|      4|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1182|      4|    }
 1183|     30|  else
 1184|     30|    {
 1185|     30|      data = g_malloc0 (sizeof (CommonData) + vtable_size);
 1186|     30|      if (vtable_size)
  ------------------
  |  Branch (1186:11): [True: 28, False: 2]
  ------------------
 1187|     28|	vtable = G_STRUCT_MEMBER_P (data, sizeof (CommonData));
  ------------------
  |  |  860|     28|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1188|     30|    }
 1189|       |  
 1190|    112|  node->data = data;
 1191|       |  
 1192|    112|  if (vtable_size)
  ------------------
  |  Branch (1192:7): [True: 42, False: 70]
  ------------------
 1193|     42|    {
 1194|     42|      gchar *p;
 1195|       |      
 1196|       |      /* we allocate the vtable and its strings together with the type data, so
 1197|       |       * children can take over their parent's vtable pointer, and we don't
 1198|       |       * need to worry freeing it or not when the child data is destroyed
 1199|       |       */
 1200|     42|      *vtable = *value_table;
 1201|     42|      p = G_STRUCT_MEMBER_P (vtable, sizeof (*vtable));
  ------------------
  |  |  860|     42|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1202|     42|      p[0] = 0;
 1203|     42|      vtable->collect_format = p;
 1204|     42|      if (value_table->collect_format)
  ------------------
  |  Branch (1204:11): [True: 38, False: 4]
  ------------------
 1205|     38|	{
 1206|     38|	  strcat (p, value_table->collect_format);
 1207|     38|	  p += strlen (value_table->collect_format);
 1208|     38|	}
 1209|     42|      p++;
 1210|     42|      p[0] = 0;
 1211|     42|      vtable->lcopy_format = p;
 1212|     42|      if (value_table->lcopy_format)
  ------------------
  |  Branch (1212:11): [True: 38, False: 4]
  ------------------
 1213|     38|	strcat  (p, value_table->lcopy_format);
 1214|     42|    }
 1215|    112|  node->data->common.value_table = vtable;
 1216|    112|  node->mutatable_check_cache = (node->data->common.value_table->value_init != NULL &&
  ------------------
  |  Branch (1216:34): [True: 102, False: 10]
  ------------------
 1217|    102|				 !((G_TYPE_FLAG_VALUE_ABSTRACT | G_TYPE_FLAG_ABSTRACT) &
  ------------------
  |  Branch (1217:6): [True: 95, False: 7]
  ------------------
 1218|    102|				   GPOINTER_TO_UINT (type_get_qdata_L (node, static_quark_type_flags))));
  ------------------
  |  |   99|    102|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 1219|       |  
 1220|    112|  g_assert (node->data->common.value_table != NULL); /* paranoid */
  ------------------
  |  |  231|    112|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    112|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|    112|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|    112|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    112| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    112|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    112|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    112|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 112, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    112|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    112|   else                                         \
  |  |  |  |  |  | 1021|    112|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    112|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    112|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 112, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|    112|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|    112|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    112|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 112]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1221|       |
 1222|    112|  g_atomic_int_set ((int *) &node->ref_count, 1);
  ------------------
  |  |  104|    112|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|    112|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|    112|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|    112|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|    112|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|    112|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 112]
  |  |  ------------------
  |  |  108|    112|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|    112|  }))
  ------------------
 1223|    112|}
gtype.c:check_value_table_I:
  828|    110|{
  829|    110|  if (!value_table)
  ------------------
  |  Branch (829:7): [True: 72, False: 38]
  ------------------
  830|     72|    return FALSE;
  ------------------
  |  |  814|     72|#define	FALSE	(0)
  ------------------
  831|     38|  else if (value_table->value_init == NULL)
  ------------------
  |  Branch (831:12): [True: 0, False: 38]
  ------------------
  832|      0|    {
  833|      0|      if (value_table->value_free || value_table->value_copy ||
  ------------------
  |  Branch (833:11): [True: 0, False: 0]
  |  Branch (833:38): [True: 0, False: 0]
  ------------------
  834|      0|	  value_table->value_peek_pointer ||
  ------------------
  |  Branch (834:4): [True: 0, False: 0]
  ------------------
  835|      0|	  value_table->collect_format || value_table->collect_value ||
  ------------------
  |  Branch (835:4): [True: 0, False: 0]
  |  Branch (835:35): [True: 0, False: 0]
  ------------------
  836|      0|	  value_table->lcopy_format || value_table->lcopy_value)
  ------------------
  |  Branch (836:4): [True: 0, False: 0]
  |  Branch (836:33): [True: 0, False: 0]
  ------------------
  837|      0|	g_warning ("cannot handle uninitializable values of type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  838|      0|		   type_name);
  839|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  840|      0|    }
  841|     38|  else /* value_table->value_init != NULL */
  842|     38|    {
  843|     38|      if (!value_table->value_free)
  ------------------
  |  Branch (843:11): [True: 28, False: 10]
  ------------------
  844|     28|	{
  845|       |	  /* +++ optional +++
  846|       |	   * g_warning ("missing 'value_free()' for type '%s'", type_name);
  847|       |	   * return FALSE;
  848|       |	   */
  849|     28|	}
  850|     38|      if (!value_table->value_copy)
  ------------------
  |  Branch (850:11): [True: 0, False: 38]
  ------------------
  851|      0|	{
  852|      0|	  g_warning ("missing 'value_copy()' for type '%s'", type_name);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  853|      0|	  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  854|      0|	}
  855|     38|      if ((value_table->collect_format || value_table->collect_value) &&
  ------------------
  |  Branch (855:12): [True: 38, False: 0]
  |  Branch (855:43): [True: 0, False: 0]
  ------------------
  856|     38|	  (!value_table->collect_format || !value_table->collect_value))
  ------------------
  |  Branch (856:5): [True: 0, False: 38]
  |  Branch (856:37): [True: 0, False: 38]
  ------------------
  857|      0|	{
  858|      0|	  g_warning ("one of 'collect_format' and 'collect_value()' is unspecified for type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  859|      0|		     type_name);
  860|      0|	  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  861|      0|	}
  862|     38|      if (value_table->collect_format && !check_collect_format_I (value_table->collect_format))
  ------------------
  |  Branch (862:11): [True: 38, False: 0]
  |  Branch (862:42): [True: 0, False: 38]
  ------------------
  863|      0|	{
  864|      0|	  g_warning ("the '%s' specification for type '%s' is too long or invalid",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  865|      0|		     "collect_format",
  866|      0|		     type_name);
  867|      0|	  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  868|      0|	}
  869|     38|      if ((value_table->lcopy_format || value_table->lcopy_value) &&
  ------------------
  |  Branch (869:12): [True: 38, False: 0]
  |  Branch (869:41): [True: 0, False: 0]
  ------------------
  870|     38|	  (!value_table->lcopy_format || !value_table->lcopy_value))
  ------------------
  |  Branch (870:5): [True: 0, False: 38]
  |  Branch (870:35): [True: 0, False: 38]
  ------------------
  871|      0|	{
  872|      0|	  g_warning ("one of 'lcopy_format' and 'lcopy_value()' is unspecified for type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  873|      0|		     type_name);
  874|      0|	  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  875|      0|	}
  876|     38|      if (value_table->lcopy_format && !check_collect_format_I (value_table->lcopy_format))
  ------------------
  |  Branch (876:11): [True: 38, False: 0]
  |  Branch (876:40): [True: 0, False: 38]
  ------------------
  877|      0|	{
  878|      0|	  g_warning ("the '%s' specification for type '%s' is too long or invalid",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  879|      0|		     "lcopy_format",
  880|      0|		     type_name);
  881|      0|	  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  882|      0|	}
  883|     38|    }
  884|     38|  return TRUE;
  ------------------
  |  |  818|     38|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     38|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  885|    110|}
gtype.c:check_collect_format_I:
  813|     76|{
  814|     76|  const gchar *p = collect_format;
  815|     76|  gchar valid_format[] = { G_VALUE_COLLECT_INT, G_VALUE_COLLECT_LONG,
  816|     76|			   G_VALUE_COLLECT_INT64, G_VALUE_COLLECT_DOUBLE,
  817|     76|			   G_VALUE_COLLECT_POINTER, 0 };
  818|       |  
  819|    152|  while (*p)
  ------------------
  |  Branch (819:10): [True: 76, False: 76]
  ------------------
  820|     76|    if (!strchr (valid_format, *p++))
  ------------------
  |  Branch (820:9): [True: 0, False: 76]
  ------------------
  821|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  822|     76|  return p - collect_format <= G_VALUE_COLLECT_FORMAT_MAX_LENGTH;
  ------------------
  |  |  257|     76|#define	G_VALUE_COLLECT_FORMAT_MAX_LENGTH	(8)
  ------------------
  823|     76|}
gtype.c:check_derivation_I:
  777|     72|{
  778|     72|  TypeNode *pnode;
  779|     72|  GTypeFundamentalInfo* finfo;
  780|       |  
  781|     72|  pnode = lookup_type_node_I (parent_type);
  782|     72|  if (!pnode)
  ------------------
  |  Branch (782:7): [True: 0, False: 72]
  ------------------
  783|      0|    {
  784|      0|      g_warning ("cannot derive type '%s' from invalid parent type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  785|      0|		 type_name,
  786|      0|		 type_descriptive_name_I (parent_type));
  787|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  788|      0|    }
  789|     72|  finfo = type_node_fundamental_info_I (pnode);
  790|       |  /* ensure flat derivability */
  791|     72|  if (!(finfo->type_flags & G_TYPE_FLAG_DERIVABLE))
  ------------------
  |  Branch (791:7): [True: 0, False: 72]
  ------------------
  792|      0|    {
  793|      0|      g_warning ("cannot derive '%s' from non-derivable parent type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  794|      0|		 type_name,
  795|      0|		 NODE_NAME (pnode));
  796|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  797|      0|    }
  798|       |  /* ensure deep derivability */
  799|     72|  if (parent_type != NODE_FUNDAMENTAL_TYPE (pnode) &&
  ------------------
  |  |  254|    144|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (799:7): [True: 10, False: 62]
  ------------------
  800|     10|      !(finfo->type_flags & G_TYPE_FLAG_DEEP_DERIVABLE))
  ------------------
  |  Branch (800:7): [True: 0, False: 10]
  ------------------
  801|      0|    {
  802|      0|      g_warning ("cannot derive '%s' from non-fundamental parent type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  803|      0|		 type_name,
  804|      0|		 NODE_NAME (pnode));
  805|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  806|      0|    }
  807|       |  
  808|     72|  return TRUE;
  ------------------
  |  |  818|     72|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     72|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  809|     72|}
gtype.c:type_data_ref_Wm:
 1227|     72|{
 1228|     72|  if (!node->data)
  ------------------
  |  Branch (1228:7): [True: 0, False: 72]
  ------------------
 1229|      0|    {
 1230|      0|      TypeNode *pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|      0|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 1231|      0|      GTypeInfo tmp_info;
 1232|      0|      GTypeValueTable tmp_value_table;
 1233|       |      
 1234|      0|      g_assert (node->plugin != NULL);
  ------------------
  |  |  231|      0|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      0|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      0|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      0|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1235|       |      
 1236|      0|      if (pnode)
  ------------------
  |  Branch (1236:11): [True: 0, False: 0]
  ------------------
 1237|      0|	{
 1238|      0|	  type_data_ref_Wm (pnode);
 1239|      0|	  if (node->data)
  ------------------
  |  Branch (1239:8): [True: 0, False: 0]
  ------------------
 1240|      0|	    INVALID_RECURSION ("g_type_plugin_*", node->plugin, NODE_NAME (node));
  ------------------
  |  |  131|      0|#define	INVALID_RECURSION(func, arg, type_name) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  132|      0|    static const gchar _action[] = " invalidly modified type ";  \
  |  |  133|      0|    gpointer _arg = (gpointer) (arg); const gchar *_tname = (type_name), *_fname = (func); \
  |  |  134|      0|    if (_arg) \
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  135|      0|      g_error ("%s(%p)%s'%s'", _fname, _arg, _action, _tname); \
  |  |  ------------------
  |  |  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  |  |  337|      0|                        for (;;) ;                   \
  |  |  |  |  338|      0|                      } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  136|      0|    else \
  |  |  137|      0|      g_error ("%s()%s'%s'", _fname, _action, _tname); \
  |  |  ------------------
  |  |  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  |  |  337|      0|                        for (;;) ;                   \
  |  |  |  |  338|      0|                      } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  138|      0|}G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1241|      0|	}
 1242|       |      
 1243|      0|      memset (&tmp_info, 0, sizeof (tmp_info));
 1244|      0|      memset (&tmp_value_table, 0, sizeof (tmp_value_table));
 1245|       |      
 1246|      0|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      0|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 1247|      0|      g_type_plugin_use (node->plugin);
 1248|      0|      g_type_plugin_complete_type_info (node->plugin, NODE_TYPE (node), &tmp_info, &tmp_value_table);
  ------------------
  |  |  252|      0|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 1249|      0|      G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      0|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 1250|      0|      if (node->data)
  ------------------
  |  Branch (1250:11): [True: 0, False: 0]
  ------------------
 1251|      0|	INVALID_RECURSION ("g_type_plugin_*", node->plugin, NODE_NAME (node));
  ------------------
  |  |  131|      0|#define	INVALID_RECURSION(func, arg, type_name) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  132|      0|    static const gchar _action[] = " invalidly modified type ";  \
  |  |  133|      0|    gpointer _arg = (gpointer) (arg); const gchar *_tname = (type_name), *_fname = (func); \
  |  |  134|      0|    if (_arg) \
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  135|      0|      g_error ("%s(%p)%s'%s'", _fname, _arg, _action, _tname); \
  |  |  ------------------
  |  |  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  |  |  337|      0|                        for (;;) ;                   \
  |  |  |  |  338|      0|                      } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  136|      0|    else \
  |  |  137|      0|      g_error ("%s()%s'%s'", _fname, _action, _tname); \
  |  |  ------------------
  |  |  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  |  |  337|      0|                        for (;;) ;                   \
  |  |  |  |  338|      0|                      } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  138|      0|}G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1252|       |      
 1253|      0|      check_type_info_I (pnode, NODE_FUNDAMENTAL_TYPE (node), NODE_NAME (node), &tmp_info);
  ------------------
  |  |  254|      0|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
                    check_type_info_I (pnode, NODE_FUNDAMENTAL_TYPE (node), NODE_NAME (node), &tmp_info);
  ------------------
  |  |  255|      0|#define NODE_NAME(node)				(g_quark_to_string (node->qname))
  ------------------
 1254|      0|      type_data_make_W (node, &tmp_info,
 1255|      0|			check_value_table_I (NODE_NAME (node),
  ------------------
  |  |  255|      0|#define NODE_NAME(node)				(g_quark_to_string (node->qname))
  ------------------
  |  Branch (1255:4): [True: 0, False: 0]
  ------------------
 1256|      0|					     &tmp_value_table) ? &tmp_value_table : NULL);
 1257|      0|    }
 1258|     72|  else
 1259|     72|    {
 1260|     72|      g_assert (NODE_REFCOUNT (node) > 0);
  ------------------
  |  |  231|     72|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     72|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     72|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     72|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     72| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     72|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     72|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    216|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 72]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 72, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     72|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     72|   else                                         \
  |  |  |  |  |  | 1021|     72|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     72|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     72|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 72, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     72|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     72|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     72|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 72]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1261|       |      
 1262|     72|      g_atomic_int_inc ((int *) &node->ref_count);
  ------------------
  |  |  148|     72|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     72|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|     72|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     72|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|     72|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 72]
  |  |  ------------------
  |  |  151|     72|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|     72|  }))
  ------------------
 1263|     72|    }
 1264|     72|}
gtype.c:type_node_new_W:
  567|     72|{
  568|     72|  g_assert (pnode);
  ------------------
  |  |  231|     72|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     72|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     72|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     72|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     72| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     72|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     72|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     72|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 72, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     72|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     72|   else                                         \
  |  |  |  |  |  | 1021|     72|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     72|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     72|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 72, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     72|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     72|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     72|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 72]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  569|     72|  g_assert (pnode->n_supers < MAX_N_SUPERS);
  ------------------
  |  |  231|     72|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     72|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     72|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     72|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     72| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     72|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     72|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     72|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 72, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     72|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     72|   else                                         \
  |  |  |  |  |  | 1021|     72|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     72|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     72|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 72, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     72|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     72|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     72|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 72]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  570|     72|  g_assert (pnode->n_children < MAX_N_CHILDREN);
  ------------------
  |  |  231|     72|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     72|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     72|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     72|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     72| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     72|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     72|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     72|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 72, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     72|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     72|   else                                         \
  |  |  |  |  |  | 1021|     72|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     72|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     72|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 72, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     72|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     72|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     72|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 72]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  571|       |  
  572|     72|  return type_node_any_new_W (pnode, NODE_FUNDAMENTAL_TYPE (pnode), name, plugin, 0);
  ------------------
  |  |  254|     72|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  573|     72|}
gtype.c:check_add_interface_L:
  991|     13|{
  992|     13|  TypeNode *node = lookup_type_node_I (instance_type);
  993|     13|  TypeNode *iface = lookup_type_node_I (iface_type);
  994|     13|  IFaceEntry *entry;
  995|     13|  TypeNode *tnode;
  996|     13|  GType *prerequisites;
  997|     13|  guint i;
  998|       |
  999|       |  
 1000|     13|  if (!node || !node->is_instantiatable)
  ------------------
  |  Branch (1000:7): [True: 0, False: 13]
  |  Branch (1000:16): [True: 0, False: 13]
  ------------------
 1001|      0|    {
 1002|      0|      g_warning ("cannot add interfaces to invalid (non-instantiatable) type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1003|      0|		 type_descriptive_name_I (instance_type));
 1004|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1005|      0|    }
 1006|     13|  if (!iface || !NODE_IS_IFACE (iface))
  ------------------
  |  |  258|     13|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     13|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     13|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     13|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     13|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1006:7): [True: 0, False: 13]
  |  Branch (1006:17): [True: 0, False: 13]
  ------------------
 1007|      0|    {
 1008|      0|      g_warning ("cannot add invalid (non-interface) type '%s' to type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1009|      0|		 type_descriptive_name_I (iface_type),
 1010|      0|		 NODE_NAME (node));
 1011|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1012|      0|    }
 1013|     13|  if (node->data && node->data->class.class)
  ------------------
  |  Branch (1013:7): [True: 13, False: 0]
  |  Branch (1013:21): [True: 0, False: 13]
  ------------------
 1014|      0|    {
 1015|      0|      g_warning ("attempting to add an interface (%s) to class (%s) after class_init",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1016|      0|                 NODE_NAME (iface), NODE_NAME (node));
 1017|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1018|      0|    }
 1019|     13|  tnode = lookup_type_node_I (NODE_PARENT_TYPE (iface));
  ------------------
  |  |  253|     13|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 1020|     13|  if (NODE_PARENT_TYPE (tnode) && !type_lookup_iface_entry_L (node, tnode))
  ------------------
  |  |  253|     26|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  |  |  ------------------
  |  |  |  Branch (253:34): [True: 0, False: 13]
  |  |  ------------------
  ------------------
  |  Branch (1020:35): [True: 0, False: 0]
  ------------------
 1021|      0|    {
 1022|       |      /* 2001/7/31:timj: erk, i guess this warning is junk as interface derivation is flat */
 1023|      0|      g_warning ("cannot add sub-interface '%s' to type '%s' which does not conform to super-interface '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1024|      0|		 NODE_NAME (iface),
 1025|      0|		 NODE_NAME (node),
 1026|      0|		 NODE_NAME (tnode));
 1027|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1028|      0|    }
 1029|       |  /* allow overriding of interface type introduced for parent type */
 1030|     13|  entry = type_lookup_iface_entry_L (node, iface);
 1031|     13|  if (entry && entry->vtable == NULL && !type_iface_peek_holder_L (iface, NODE_TYPE (node)))
  ------------------
  |  |  252|      0|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
  |  Branch (1031:7): [True: 0, False: 13]
  |  Branch (1031:16): [True: 0, False: 0]
  |  Branch (1031:41): [True: 0, False: 0]
  ------------------
 1032|      0|    {
 1033|       |      /* ok, we do conform to this interface already, but the interface vtable was not
 1034|       |       * yet initialized, and we just conform to the interface because it got added to
 1035|       |       * one of our parents. so we allow overriding of holder info here.
 1036|       |       */
 1037|      0|      return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1038|      0|    }
 1039|       |  /* check whether one of our children already conforms (or whether the interface
 1040|       |   * got added to this node already)
 1041|       |   */
 1042|     13|  tnode = find_conforming_child_type_L (node, iface);  /* tnode is_a node */
 1043|     13|  if (tnode)
  ------------------
  |  Branch (1043:7): [True: 0, False: 13]
  ------------------
 1044|      0|    {
 1045|      0|      g_warning ("cannot add interface type '%s' to type '%s', since type '%s' already conforms to interface",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1046|      0|		 NODE_NAME (iface),
 1047|      0|		 NODE_NAME (node),
 1048|      0|		 NODE_NAME (tnode));
 1049|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1050|      0|    }
 1051|     13|  prerequisites = IFACE_NODE_PREREQUISITES (iface);
  ------------------
  |  |  262|     13|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
 1052|     27|  for (i = 0; i < IFACE_NODE_N_PREREQUISITES (iface); i++)
  ------------------
  |  |  261|     27|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  |  Branch (1052:15): [True: 14, False: 13]
  ------------------
 1053|     14|    {
 1054|     14|      tnode = lookup_type_node_I (prerequisites[i]);
 1055|     14|      if (!type_node_is_a_L (node, tnode))
  ------------------
  |  Branch (1055:11): [True: 0, False: 14]
  ------------------
 1056|      0|	{
 1057|      0|	  g_warning ("cannot add interface type '%s' to type '%s' which does not conform to prerequisite '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1058|      0|		     NODE_NAME (iface),
 1059|      0|		     NODE_NAME (node),
 1060|      0|		     NODE_NAME (tnode));
 1061|      0|	  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1062|      0|	}
 1063|     14|    }
 1064|     13|  return TRUE;
  ------------------
  |  |  818|     13|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     13|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1065|     13|}
gtype.c:type_lookup_iface_entry_L:
  619|     72|{
  620|     72|  if (!NODE_IS_IFACE (iface_node))
  ------------------
  |  |  258|     72|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     72|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     72|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     72|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     72|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (620:7): [True: 0, False: 72]
  ------------------
  621|      0|    return NULL;
  622|       |
  623|     72|  return lookup_iface_entry_I (CLASSED_NODE_IFACES_ENTRIES_LOCKED (node),
  ------------------
  |  |  260|     72|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|     72|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  |  |  ------------------
  ------------------
  624|     72|			       iface_node);
  625|     72|}
gtype.c:lookup_iface_entry_I:
  578|  28.2M|{
  579|  28.2M|  guint8 *offsets;
  580|  28.2M|  gsize offset_index;
  581|  28.2M|  IFaceEntry *check;
  582|  28.2M|  gsize index;
  583|  28.2M|  IFaceEntry *entry;
  584|       |
  585|  28.2M|  if (entries == NULL)
  ------------------
  |  Branch (585:7): [True: 22, False: 28.2M]
  ------------------
  586|     22|    return NULL;
  587|       |
  588|  28.2M|  G_ATOMIC_ARRAY_DO_TRANSACTION
  ------------------
  |  |   44|  28.2M|#define G_ATOMIC_ARRAY_DO_TRANSACTION(_array, _type, _C_) G_STMT_START {	\
  |  |  ------------------
  |  |  |  |  874|  28.2M|#define G_STMT_START  do
  |  |  ------------------
  |  |   45|  28.2M|    gpointer *_datap  = &(_array)->data;				\
  |  |   46|  28.2M|    _type *transaction_data, *__check;						\
  |  |   47|  28.2M|										\
  |  |   48|  28.2M|    __check = g_atomic_pointer_get (_datap);					\
  |  |  ------------------
  |  |  |  |  113|  28.2M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  28.2M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  28.2M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  28.2M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  28.2M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  28.2M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  28.2M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  28.2M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  28.2M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  28.2M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  28.2M|  }))
  |  |  ------------------
  |  |   49|  28.2M|    do {									\
  |  |   50|  28.2M|      transaction_data = __check;						\
  |  |   51|   282M|      {_C_;}									\
  |  |  ------------------
  |  |  |  Branch (51:8): [True: 28.2M, False: 4]
  |  |  |  Branch (51:8): [True: 28.2M, False: 2]
  |  |  |  Branch (51:8): [True: 28.2M, False: 2]
  |  |  |  Branch (51:8): [True: 28.2M, False: 11]
  |  |  |  Branch (51:8): [True: 28.2M, False: 0]
  |  |  ------------------
  |  |   52|  28.2M|      __check = g_atomic_pointer_get (_datap);					\
  |  |  ------------------
  |  |  |  |  113|  28.2M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  28.2M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  28.2M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  28.2M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  28.2M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  28.2M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  28.2M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  28.2M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  28.2M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  28.2M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  28.2M|  }))
  |  |  ------------------
  |  |   53|  28.2M|    } while (transaction_data != __check);					\
  |  |  ------------------
  |  |  |  Branch (53:14): [True: 0, False: 28.2M]
  |  |  ------------------
  |  |   54|  28.2M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  28.2M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 28.2M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  589|  28.2M|    (&iface_node->_prot.offsets, guint8,
  590|       |
  591|  28.2M|     entry = NULL;
  592|  28.2M|     offsets = transaction_data;
  593|  28.2M|     offset_index = entries->offset_index;
  594|  28.2M|     if (offsets != NULL &&
  595|  28.2M|	 offset_index < G_ATOMIC_ARRAY_DATA_SIZE(offsets))
  596|  28.2M|       {
  597|  28.2M|	 index = offsets[offset_index];
  598|  28.2M|	 if (index > 0)
  599|  28.2M|	   {
  600|       |	     /* zero means unset, subtract one to get real index */
  601|  28.2M|	     index -= 1;
  602|       |
  603|  28.2M|	     if (index < IFACE_ENTRIES_N_ENTRIES (entries))
  604|  28.2M|	       {
  605|  28.2M|		 check = (IFaceEntry *)&entries->entry[index];
  606|  28.2M|		 if (check->iface_type == NODE_TYPE (iface_node))
  607|  28.2M|		   entry = check;
  608|  28.2M|	       }
  609|  28.2M|	   }
  610|  28.2M|       }
  611|  28.2M|     );
  612|       |
  613|  28.2M| return entry;
  614|  28.2M|}
gtype.c:type_iface_peek_holder_L:
 1750|     30|{
 1751|     30|  IFaceHolder *iholder;
 1752|       |  
 1753|     30|  g_assert (NODE_IS_IFACE (iface));
  ------------------
  |  |  231|     30|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     30|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     30|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     30|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     30| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     30|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     30|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     30|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 30, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     30|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     30|   else                                         \
  |  |  |  |  |  | 1021|     30|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     30|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     30|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 30, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     30|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     30|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     30|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1754|       |  
 1755|     30|  iholder = iface_node_get_holders_L (iface);
  ------------------
  |  |  263|     30|#define	iface_node_get_holders_L(node)		((IFaceHolder*) type_get_qdata_L ((node), static_quark_iface_holder))
  ------------------
 1756|     47|  while (iholder && iholder->instance_type != instance_type)
  ------------------
  |  Branch (1756:10): [True: 39, False: 8]
  |  Branch (1756:21): [True: 17, False: 22]
  ------------------
 1757|     17|    iholder = iholder->next;
 1758|     30|  return iholder;
 1759|     30|}
gtype.c:find_conforming_child_type_L:
  975|     13|{
  976|     13|  TypeNode *node = NULL;
  977|     13|  guint i;
  978|       |  
  979|     13|  if (type_lookup_iface_entry_L (pnode, iface))
  ------------------
  |  Branch (979:7): [True: 0, False: 13]
  ------------------
  980|      0|    return pnode;
  981|       |  
  982|     13|  for (i = 0; i < pnode->n_children && !node; i++)
  ------------------
  |  Branch (982:15): [True: 0, False: 13]
  |  Branch (982:40): [True: 0, False: 0]
  ------------------
  983|      0|    node = find_conforming_child_type_L (lookup_type_node_I (pnode->children[i]), iface);
  984|       |  
  985|     13|  return node;
  986|     13|}
gtype.c:check_interface_info_I:
 1071|     13|{
 1072|     13|  if ((info->interface_finalize || info->interface_data) && !info->interface_init)
  ------------------
  |  Branch (1072:8): [True: 0, False: 13]
  |  Branch (1072:36): [True: 0, False: 13]
  |  Branch (1072:61): [True: 0, False: 0]
  ------------------
 1073|      0|    {
 1074|      0|      g_warning ("interface type '%s' for type '%s' comes without initializer",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1075|      0|		 NODE_NAME (iface),
 1076|      0|		 type_descriptive_name_I (instance_type));
 1077|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1078|      0|    }
 1079|       |  
 1080|     13|  return TRUE;
  ------------------
  |  |  818|     13|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     13|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1081|     13|}
gtype.c:type_add_interface_Wm:
 1469|     13|{
 1470|     13|  IFaceHolder *iholder = g_new0 (IFaceHolder, 1);
  ------------------
  |  |  307|     13|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|     13|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     13|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|     13|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|     13|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|     13|	  gpointer __p;						\
  |  |  |  |  239|     13|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 13]
  |  |  |  |  ------------------
  |  |  |  |  240|     13|	    __p = g_##func (__n);				\
  |  |  |  |  241|     13|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 13, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|     13|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|     13|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|     13|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 13]
  |  |  |  |  |  Branch (242:26): [True: 13, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|     13|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|     13|	  else							\
  |  |  |  |  245|     13|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|     13|	  __p;							\
  |  |  |  |  247|     13|	}))
  |  |  ------------------
  ------------------
 1471|     13|  IFaceEntry *entry;
 1472|     13|  guint i;
 1473|       |
 1474|     13|  g_assert (node->is_instantiatable && NODE_IS_IFACE (iface) && ((info && !plugin) || (!info && plugin)));
  ------------------
  |  |  231|     13|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     13|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     13|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     13|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     13| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     13|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     13|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    104|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 13, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 13, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 13, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 13, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     13|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     13|   else                                         \
  |  |  |  |  |  | 1021|     13|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     13|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     13|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 13, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     13|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     13|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     13|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1475|       |  
 1476|     13|  iholder->next = iface_node_get_holders_L (iface);
  ------------------
  |  |  263|     13|#define	iface_node_get_holders_L(node)		((IFaceHolder*) type_get_qdata_L ((node), static_quark_iface_holder))
  ------------------
 1477|     13|  iface_node_set_holders_W (iface, iholder);
  ------------------
  |  |  264|     13|#define	iface_node_set_holders_W(node, holders)	(type_set_qdata_W ((node), static_quark_iface_holder, (holders)))
  ------------------
 1478|     13|  iholder->instance_type = NODE_TYPE (node);
  ------------------
  |  |  252|     13|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 1479|     13|  iholder->info = info ? g_memdup2 (info, sizeof (*info)) : NULL;
  ------------------
  |  Branch (1479:19): [True: 13, False: 0]
  ------------------
 1480|     13|  iholder->plugin = plugin;
 1481|       |
 1482|       |  /* create an iface entry for this type */
 1483|     13|  type_node_add_iface_entry_W (node, NODE_TYPE (iface), NULL);
  ------------------
  |  |  252|     13|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 1484|       |  
 1485|       |  /* if the class is already (partly) initialized, we may need to base
 1486|       |   * initialize and/or initialize the new interface.
 1487|       |   */
 1488|     13|  if (node->data)
  ------------------
  |  Branch (1488:7): [True: 13, False: 0]
  ------------------
 1489|     13|    {
 1490|     13|      InitState class_state = g_atomic_int_get (&node->data->class.init_state);
  ------------------
  |  |   96|     13|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     13|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|     13|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     13|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|     13|    gint gaig_temp;                                                          \
  |  |   99|     13|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 13]
  |  |  ------------------
  |  |  100|     13|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|     13|    (gint) gaig_temp;                                                        \
  |  |  102|     13|  }))
  ------------------
 1491|       |      
 1492|     13|      if (class_state >= BASE_IFACE_INIT)
  ------------------
  |  Branch (1492:11): [True: 0, False: 13]
  ------------------
 1493|      0|        type_iface_vtable_base_init_Wm (iface, node);
 1494|       |      
 1495|     13|      if (class_state >= IFACE_INIT)
  ------------------
  |  Branch (1495:11): [True: 0, False: 13]
  ------------------
 1496|      0|        type_iface_vtable_iface_init_Wm (iface, node);
 1497|     13|    }
 1498|       |  
 1499|       |  /* create iface entries for children of this type */
 1500|     13|  entry = type_lookup_iface_entry_L (node, iface);
 1501|     13|  for (i = 0; i < node->n_children; i++)
  ------------------
  |  Branch (1501:15): [True: 0, False: 13]
  ------------------
 1502|      0|    type_node_add_iface_entry_W (lookup_type_node_I (node->children[i]), NODE_TYPE (iface), entry);
  ------------------
  |  |  252|      0|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 1503|     13|}
gtype.c:type_node_add_iface_entry_W:
 1369|     13|{
 1370|     13|  IFaceEntries *entries;
 1371|     13|  IFaceEntry *entry;
 1372|     13|  TypeNode *iface_node;
 1373|     13|  guint i, j;
 1374|     13|  guint num_entries;
 1375|       |
 1376|     13|  g_assert (node->is_instantiatable);
  ------------------
  |  |  231|     13|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     13|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     13|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     13|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     13| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     13|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     13|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     13|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 13, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     13|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     13|   else                                         \
  |  |  |  |  |  | 1021|     13|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     13|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     13|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 13, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     13|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     13|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     13|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1377|       |
 1378|     13|  entries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (node);
  ------------------
  |  |  260|     13|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|     13|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  |  |  ------------------
  ------------------
 1379|     13|  if (entries != NULL)
  ------------------
  |  Branch (1379:7): [True: 7, False: 6]
  ------------------
 1380|      7|    {
 1381|      7|      num_entries = IFACE_ENTRIES_N_ENTRIES (entries);
  ------------------
  |  |  294|      7|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|      7|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|      7|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
 1382|       |
 1383|      7|      g_assert (num_entries < MAX_N_INTERFACES);
  ------------------
  |  |  231|      7|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      7|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      7|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      7|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      7| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      7|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      7|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      7|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 7, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      7|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      7|   else                                         \
  |  |  |  |  |  | 1021|      7|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      7|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      7|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 7, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      7|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      7|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      7|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1384|       |
 1385|     14|      for (i = 0; i < num_entries; i++)
  ------------------
  |  Branch (1385:19): [True: 7, False: 7]
  ------------------
 1386|      7|	{
 1387|      7|	  entry = &entries->entry[i];
 1388|      7|	  if (entry->iface_type == iface_type)
  ------------------
  |  Branch (1388:8): [True: 0, False: 7]
  ------------------
 1389|      0|	    {
 1390|       |	      /* this can happen in two cases:
 1391|       |	       * - our parent type already conformed to iface_type and node
 1392|       |	       *   got its own holder info. here, our children already have
 1393|       |	       *   entries and NULL vtables, since this will only work for
 1394|       |	       *   uninitialized classes.
 1395|       |	       * - an interface type is added to an ancestor after it was
 1396|       |	       *   added to a child type.
 1397|       |	       */
 1398|      0|	      if (!parent_entry)
  ------------------
  |  Branch (1398:12): [True: 0, False: 0]
  ------------------
 1399|      0|		g_assert (entry->vtable == NULL && entry->init_state == UNINITIALIZED);
  ------------------
  |  |  231|      0|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      0|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      0|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      0|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1400|      0|	      else
 1401|      0|		{
 1402|       |		  /* sick, interface is added to ancestor *after* child type;
 1403|       |		   * nothing todo, the entry and our children were already setup correctly
 1404|       |		   */
 1405|      0|		}
 1406|      0|	      return;
 1407|      0|	    }
 1408|      7|	}
 1409|      7|    }
 1410|       |
 1411|     13|  entries = _g_atomic_array_copy (CLASSED_NODE_IFACES_ENTRIES (node),
  ------------------
  |  |  259|     13|#define	CLASSED_NODE_IFACES_ENTRIES(node)	(&(node)->_prot.iface_entries)
  ------------------
 1412|     13|				  IFACE_ENTRIES_HEADER_SIZE,
  ------------------
  |  |  293|     13|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  ------------------
 1413|     13|				  sizeof (IFaceEntry));
 1414|     13|  num_entries = IFACE_ENTRIES_N_ENTRIES (entries);
  ------------------
  |  |  294|     13|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     13|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|     13|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
 1415|     13|  i = num_entries - 1;
 1416|     13|  if (i == 0)
  ------------------
  |  Branch (1416:7): [True: 6, False: 7]
  ------------------
 1417|      6|    entries->offset_index = 0;
 1418|     13|  entries->entry[i].iface_type = iface_type;
 1419|     13|  entries->entry[i].vtable = NULL;
 1420|     13|  entries->entry[i].init_state = UNINITIALIZED;
 1421|       |
 1422|     13|  if (parent_entry)
  ------------------
  |  Branch (1422:7): [True: 0, False: 13]
  ------------------
 1423|      0|    {
 1424|      0|      if (node->data && g_atomic_int_get (&node->data->class.init_state) >= BASE_IFACE_INIT)
  ------------------
  |  |   96|      0|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|      0|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      0|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|      0|    gint gaig_temp;                                                          \
  |  |   99|      0|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 0]
  |  |  ------------------
  |  |  100|      0|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|      0|    (gint) gaig_temp;                                                        \
  |  |  102|      0|  }))
  ------------------
  |  Branch (1424:11): [True: 0, False: 0]
  |  Branch (1424:25): [True: 0, False: 0]
  ------------------
 1425|      0|        {
 1426|      0|          entries->entry[i].init_state = INITIALIZED;
 1427|      0|          entries->entry[i].vtable = parent_entry->vtable;
 1428|      0|        }
 1429|      0|    }
 1430|       |
 1431|       |  /* Update offsets in iface */
 1432|     13|  iface_node = lookup_type_node_I (iface_type);
 1433|       |
 1434|     13|  if (iface_node_has_available_offset_L (iface_node,
  ------------------
  |  Branch (1434:7): [True: 11, False: 2]
  ------------------
 1435|     13|					 entries->offset_index,
 1436|     13|					 i))
 1437|     11|    {
 1438|     11|      iface_node_set_offset_L (iface_node,
 1439|     11|			       entries->offset_index, i);
 1440|     11|    }
 1441|      2|  else
 1442|      2|   {
 1443|      2|      entries->offset_index =
 1444|      2|	find_free_iface_offset_L (entries);
 1445|      5|      for (j = 0; j < IFACE_ENTRIES_N_ENTRIES (entries); j++)
  ------------------
  |  |  294|      5|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|      5|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|      5|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (1445:19): [True: 3, False: 2]
  ------------------
 1446|      3|	{
 1447|      3|	  entry = &entries->entry[j];
 1448|      3|	  iface_node =
 1449|      3|	    lookup_type_node_I (entry->iface_type);
 1450|      3|	  iface_node_set_offset_L (iface_node,
 1451|      3|				   entries->offset_index, j);
 1452|      3|	}
 1453|      2|    }
 1454|       |
 1455|     13|  _g_atomic_array_update (CLASSED_NODE_IFACES_ENTRIES (node), entries);
  ------------------
  |  |  259|     13|#define	CLASSED_NODE_IFACES_ENTRIES(node)	(&(node)->_prot.iface_entries)
  ------------------
 1456|       |
 1457|     13|  if (parent_entry)
  ------------------
  |  Branch (1457:7): [True: 0, False: 13]
  ------------------
 1458|      0|    {
 1459|      0|      for (i = 0; i < node->n_children; i++)
  ------------------
  |  Branch (1459:19): [True: 0, False: 0]
  ------------------
 1460|      0|        type_node_add_iface_entry_W (lookup_type_node_I (node->children[i]), iface_type, &entries->entry[i]);
 1461|      0|    }
 1462|     13|}
gtype.c:iface_node_has_available_offset_L:
 1285|     19|{
 1286|     19|  guint8 *offsets;
 1287|       |
 1288|     19|  offsets = G_ATOMIC_ARRAY_GET_LOCKED (&iface_node->_prot.offsets, guint8);
  ------------------
  |  |   42|     19|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  ------------------
 1289|     19|  if (offsets == NULL)
  ------------------
  |  Branch (1289:7): [True: 4, False: 15]
  ------------------
 1290|      4|    return TRUE;
  ------------------
  |  |  818|      4|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      4|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1291|       |
 1292|     15|  if (G_ATOMIC_ARRAY_DATA_SIZE (offsets) <= offset)
  ------------------
  |  |   28|     15|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  ------------------
  |  Branch (1292:7): [True: 3, False: 12]
  ------------------
 1293|      3|    return TRUE;
  ------------------
  |  |  818|      3|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      3|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1294|       |
 1295|     12|  if (offsets[offset] == 0 ||
  ------------------
  |  Branch (1295:7): [True: 0, False: 12]
  ------------------
 1296|     12|      offsets[offset] == for_index+1)
  ------------------
  |  Branch (1296:7): [True: 8, False: 4]
  ------------------
 1297|      8|    return TRUE;
  ------------------
  |  |  818|      8|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      8|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1298|       |
 1299|      4|  return FALSE;
  ------------------
  |  |  814|      4|#define	FALSE	(0)
  ------------------
 1300|     12|}
gtype.c:iface_node_set_offset_L:
 1336|     14|{
 1337|     14|  guint8 *offsets, *old_offsets;
 1338|     14|  gsize new_size, old_size;
 1339|     14|  gsize i;
 1340|       |
 1341|     14|  old_offsets = G_ATOMIC_ARRAY_GET_LOCKED (&iface_node->_prot.offsets, guint8);
  ------------------
  |  |   42|     14|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  ------------------
 1342|     14|  if (old_offsets == NULL)
  ------------------
  |  Branch (1342:7): [True: 4, False: 10]
  ------------------
 1343|      4|    old_size = 0;
 1344|     10|  else
 1345|     10|    {
 1346|     10|      old_size = G_ATOMIC_ARRAY_DATA_SIZE (old_offsets);
  ------------------
  |  |   28|     10|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  ------------------
 1347|     10|      if (offset < old_size &&
  ------------------
  |  Branch (1347:11): [True: 7, False: 3]
  ------------------
 1348|      7|	  old_offsets[offset] == index + 1)
  ------------------
  |  Branch (1348:4): [True: 7, False: 0]
  ------------------
 1349|      7|	return; /* Already set to this index, return */
 1350|     10|    }
 1351|      7|  new_size = MAX (old_size, offset + 1);
  ------------------
  |  |  822|      7|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 0, False: 7]
  |  |  ------------------
  ------------------
 1352|       |
 1353|      7|  offsets = _g_atomic_array_copy (&iface_node->_prot.offsets,
 1354|      7|				  0, new_size - old_size);
 1355|       |
 1356|       |  /* Mark new area as unused */
 1357|     14|  for (i = old_size; i < new_size; i++)
  ------------------
  |  Branch (1357:22): [True: 7, False: 7]
  ------------------
 1358|      7|    offsets[i] = 0;
 1359|       |
 1360|      7|  offsets[offset] = index + 1;
 1361|       |
 1362|      7|  _g_atomic_array_update (&iface_node->_prot.offsets, offsets);
 1363|      7|}
gtype.c:find_free_iface_offset_L:
 1304|      2|{
 1305|      2|  IFaceEntry *entry;
 1306|      2|  TypeNode *iface_node;
 1307|      2|  gsize offset;
 1308|      2|  int i;
 1309|      2|  int n_entries;
 1310|       |
 1311|      2|  n_entries = IFACE_ENTRIES_N_ENTRIES (entries);
  ------------------
  |  |  294|      2|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|      2|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|      2|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
 1312|      2|  offset = 0;
 1313|      2|  do
 1314|      4|    {
 1315|      8|      for (i = 0; i < n_entries; i++)
  ------------------
  |  Branch (1315:19): [True: 6, False: 2]
  ------------------
 1316|      6|	{
 1317|      6|	  entry = &entries->entry[i];
 1318|      6|	  iface_node = lookup_type_node_I (entry->iface_type);
 1319|       |
 1320|      6|	  if (!iface_node_has_available_offset_L (iface_node, offset, i))
  ------------------
  |  Branch (1320:8): [True: 2, False: 4]
  ------------------
 1321|      2|            {
 1322|      2|              offset++;
 1323|      2|              break;
 1324|      2|            }
 1325|      6|	}
 1326|      4|    }
 1327|      4|  while (i != n_entries);
  ------------------
  |  Branch (1327:10): [True: 2, False: 2]
  ------------------
 1328|       |
 1329|      2|  return offset;
 1330|      2|}
gtype.c:type_iface_vtable_base_init_Wm:
 2048|     19|{
 2049|     19|  IFaceEntry *entry;
 2050|     19|  IFaceHolder *iholder;
 2051|     19|  GTypeInterface *vtable = NULL;
 2052|     19|  TypeNode *pnode;
 2053|       |  
 2054|       |  /* type_iface_retrieve_holder_info_Wm() doesn't modify write lock for returning NULL */
 2055|     19|  iholder = type_iface_retrieve_holder_info_Wm (iface, NODE_TYPE (node), TRUE);
  ------------------
  |  |  252|     19|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
                iholder = type_iface_retrieve_holder_info_Wm (iface, NODE_TYPE (node), TRUE);
  ------------------
  |  |  818|     19|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     19|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2056|     19|  if (!iholder)
  ------------------
  |  Branch (2056:7): [True: 8, False: 11]
  ------------------
 2057|      8|    return FALSE;	/* we don't modify write lock upon FALSE */
  ------------------
  |  |  814|      8|#define	FALSE	(0)
  ------------------
 2058|       |
 2059|     11|  type_iface_ensure_dflt_vtable_Wm (iface);
 2060|       |
 2061|     11|  entry = type_lookup_iface_entry_L (node, iface);
 2062|       |
 2063|     11|  g_assert (iface->data && entry && entry->vtable == NULL && iholder && iholder->info);
  ------------------
  |  |  231|     11|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     11|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     11|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     11|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     11| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     11|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     99|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     11|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     11|   else                                         \
  |  |  |  |  |  | 1021|     11|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     11|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     11|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     11|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     11|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     11|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2064|       |  
 2065|     11|  entry->init_state = IFACE_INIT;
 2066|       |
 2067|     11|  pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|     11|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 2068|     11|  if (pnode)	/* want to copy over parent iface contents */
  ------------------
  |  Branch (2068:7): [True: 11, False: 0]
  ------------------
 2069|     11|    {
 2070|     11|      IFaceEntry *pentry = type_lookup_iface_entry_L (pnode, iface);
 2071|       |      
 2072|     11|      if (pentry)
  ------------------
  |  Branch (2072:11): [True: 0, False: 11]
  ------------------
 2073|      0|	vtable = g_memdup2 (pentry->vtable, iface->data->iface.vtable_size);
 2074|     11|    }
 2075|     11|  if (!vtable)
  ------------------
  |  Branch (2075:7): [True: 11, False: 0]
  ------------------
 2076|     11|    vtable = g_memdup2 (iface->data->iface.dflt_vtable, iface->data->iface.vtable_size);
 2077|     11|  entry->vtable = vtable;
 2078|     11|  vtable->g_type = NODE_TYPE (iface);
  ------------------
  |  |  252|     11|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2079|     11|  vtable->g_instance_type = NODE_TYPE (node);
  ------------------
  |  |  252|     11|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2080|       |  
 2081|     11|  if (iface->data->iface.vtable_init_base)
  ------------------
  |  Branch (2081:7): [True: 0, False: 11]
  ------------------
 2082|      0|    {
 2083|      0|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      0|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2084|      0|      iface->data->iface.vtable_init_base (vtable);
 2085|      0|      G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      0|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2086|      0|    }
 2087|     11|  return TRUE;	/* initialized the vtable */
  ------------------
  |  |  818|     11|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     11|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2088|     11|}
gtype.c:type_iface_retrieve_holder_info_Wm:
 1765|     19|{
 1766|     19|  IFaceHolder *iholder = type_iface_peek_holder_L (iface, instance_type);
 1767|       |  
 1768|     19|  if (iholder && !iholder->info && need_info)
  ------------------
  |  Branch (1768:7): [True: 11, False: 8]
  |  Branch (1768:18): [True: 0, False: 11]
  |  Branch (1768:36): [True: 0, False: 0]
  ------------------
 1769|      0|    {
 1770|      0|      GInterfaceInfo tmp_info;
 1771|       |      
 1772|      0|      g_assert (iholder->plugin != NULL);
  ------------------
  |  |  231|      0|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      0|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      0|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      0|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1773|       |      
 1774|      0|      type_data_ref_Wm (iface);
 1775|      0|      if (iholder->info)
  ------------------
  |  Branch (1775:11): [True: 0, False: 0]
  ------------------
 1776|      0|	INVALID_RECURSION ("g_type_plugin_*", iface->plugin, NODE_NAME (iface));
  ------------------
  |  |  131|      0|#define	INVALID_RECURSION(func, arg, type_name) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  132|      0|    static const gchar _action[] = " invalidly modified type ";  \
  |  |  133|      0|    gpointer _arg = (gpointer) (arg); const gchar *_tname = (type_name), *_fname = (func); \
  |  |  134|      0|    if (_arg) \
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  135|      0|      g_error ("%s(%p)%s'%s'", _fname, _arg, _action, _tname); \
  |  |  ------------------
  |  |  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  |  |  337|      0|                        for (;;) ;                   \
  |  |  |  |  338|      0|                      } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  136|      0|    else \
  |  |  137|      0|      g_error ("%s()%s'%s'", _fname, _action, _tname); \
  |  |  ------------------
  |  |  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  |  |  337|      0|                        for (;;) ;                   \
  |  |  |  |  338|      0|                      } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  138|      0|}G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1777|       |      
 1778|      0|      memset (&tmp_info, 0, sizeof (tmp_info));
 1779|       |      
 1780|      0|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      0|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 1781|      0|      g_type_plugin_use (iholder->plugin);
 1782|      0|      g_type_plugin_complete_interface_info (iholder->plugin, instance_type, NODE_TYPE (iface), &tmp_info);
  ------------------
  |  |  252|      0|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 1783|      0|      G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      0|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 1784|      0|      if (iholder->info)
  ------------------
  |  Branch (1784:11): [True: 0, False: 0]
  ------------------
 1785|      0|        INVALID_RECURSION ("g_type_plugin_*", iholder->plugin, NODE_NAME (iface));
  ------------------
  |  |  131|      0|#define	INVALID_RECURSION(func, arg, type_name) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  132|      0|    static const gchar _action[] = " invalidly modified type ";  \
  |  |  133|      0|    gpointer _arg = (gpointer) (arg); const gchar *_tname = (type_name), *_fname = (func); \
  |  |  134|      0|    if (_arg) \
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  135|      0|      g_error ("%s(%p)%s'%s'", _fname, _arg, _action, _tname); \
  |  |  ------------------
  |  |  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  |  |  337|      0|                        for (;;) ;                   \
  |  |  |  |  338|      0|                      } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  136|      0|    else \
  |  |  137|      0|      g_error ("%s()%s'%s'", _fname, _action, _tname); \
  |  |  ------------------
  |  |  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  |  |  337|      0|                        for (;;) ;                   \
  |  |  |  |  338|      0|                      } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  138|      0|}G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1786|       |      
 1787|      0|      check_interface_info_I (iface, instance_type, &tmp_info);
 1788|      0|      iholder->info = g_memdup2 (&tmp_info, sizeof (tmp_info));
 1789|      0|    }
 1790|       |  
 1791|     19|  return iholder;	/* we don't modify write lock upon returning NULL */
 1792|     19|}
gtype.c:type_iface_vtable_iface_init_Wm:
 2099|     11|{
 2100|     11|  IFaceEntry *entry = type_lookup_iface_entry_L (node, iface);
 2101|     11|  IFaceHolder *iholder = type_iface_peek_holder_L (iface, NODE_TYPE (node));
  ------------------
  |  |  252|     11|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2102|     11|  GTypeInterface *vtable = NULL;
 2103|     11|  guint i;
 2104|       |  
 2105|       |  /* iholder->info should have been filled in by type_iface_vtable_base_init_Wm() */
 2106|     11|  g_assert (iface->data && entry && iholder && iholder->info);
  ------------------
  |  |  231|     11|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     11|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     11|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     11|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     11| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     11|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     77|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     11|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     11|   else                                         \
  |  |  |  |  |  | 1021|     11|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     11|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     11|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     11|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     11|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     11|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2107|     11|  g_assert (entry->init_state == IFACE_INIT); /* assert prior base_init() */
  ------------------
  |  |  231|     11|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     11|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     11|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     11|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     11| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     11|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     11|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     11|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     11|   else                                         \
  |  |  |  |  |  | 1021|     11|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     11|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     11|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     11|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     11|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     11|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2108|       |  
 2109|     11|  entry->init_state = INITIALIZED;
 2110|       |      
 2111|     11|  vtable = entry->vtable;
 2112|       |
 2113|     11|  if (iholder->info->interface_init)
  ------------------
  |  Branch (2113:7): [True: 11, False: 0]
  ------------------
 2114|     11|    {
 2115|     11|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     11|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2116|     11|      if (iholder->info->interface_init)
  ------------------
  |  Branch (2116:11): [True: 11, False: 0]
  ------------------
 2117|     11|	iholder->info->interface_init (vtable, iholder->info->interface_data);
 2118|     11|      G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|     11|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2119|     11|    }
 2120|       |  
 2121|     22|  for (i = 0; i < static_n_iface_check_funcs; i++)
  ------------------
  |  Branch (2121:15): [True: 11, False: 11]
  ------------------
 2122|     11|    {
 2123|     11|      GTypeInterfaceCheckFunc check_func = static_iface_check_funcs[i].check_func;
 2124|     11|      gpointer check_data = static_iface_check_funcs[i].check_data;
 2125|       |
 2126|     11|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     11|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2127|     11|      check_func (check_data, (gpointer)vtable);
 2128|     11|      G_WRITE_LOCK (&type_rw_lock);      
  ------------------
  |  |  128|     11|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2129|     11|    }
 2130|     11|}
gtype.c:type_data_ref_U:
 1268|  1.29M|{
 1269|  1.29M|  guint current;
 1270|       |
 1271|  1.29M|  do {
 1272|  1.29M|    current = NODE_REFCOUNT (node);
  ------------------
  |  |  256|  1.29M|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  1.29M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  1.29M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.29M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  1.29M|    gint gaig_temp;                                                          \
  |  |  |  |   99|  1.29M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1.29M]
  |  |  |  |  ------------------
  |  |  |  |  100|  1.29M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  1.29M|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  1.29M|  }))
  |  |  ------------------
  ------------------
 1273|       |
 1274|  1.29M|    if (current < 1)
  ------------------
  |  Branch (1274:9): [True: 0, False: 1.29M]
  ------------------
 1275|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1276|  1.29M|  } while (!g_atomic_int_compare_and_exchange ((int *) &node->ref_count, current, current + 1));
  ------------------
  |  |  160|  1.29M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  161|  1.29M|    gint gaicae_oldval = (oldval);                                           \
  |  |  162|  1.29M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.29M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  163|  1.29M|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  ------------------
  |  |  |  Branch (163:13): [Folded, False: 1.29M]
  |  |  ------------------
  |  |  164|  1.29M|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|  1.29M|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|  1.29M|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  1.29M|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (164:5): [True: 1.29M, False: 0]
  |  |  ------------------
  |  |  165|  1.29M|  }))
  ------------------
  |  Branch (1276:12): [True: 0, False: 1.29M]
  ------------------
 1277|       |
 1278|  1.29M|  return TRUE;
  ------------------
  |  |  818|  1.29M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.29M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1279|  1.29M|}
gtype.c:type_class_init_Wm:
 2170|     20|{
 2171|     20|  GSList *slist, *init_slist = NULL;
 2172|     20|  GTypeClass *class;
 2173|     20|  IFaceEntries *entries;
 2174|     20|  IFaceEntry *entry;
 2175|     20|  TypeNode *bnode, *pnode;
 2176|     20|  guint i;
 2177|       |  
 2178|       |  /* Accessing data->class will work for instantiatable types
 2179|       |   * too because ClassData is a subset of InstanceData
 2180|       |   */
 2181|     20|  g_assert (node->is_classed && node->data &&
  ------------------
  |  |  231|     20|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     20|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     20|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     20|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     20| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     20|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     20|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    220|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 20, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 20, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 20, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 20, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 20]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 20, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     20|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     20|   else                                         \
  |  |  |  |  |  | 1021|     20|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     20|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     20|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 20, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     20|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     20|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     20|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 20]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2182|     20|	    node->data->class.class_size &&
 2183|     20|	    !node->data->class.class &&
 2184|     20|	    g_atomic_int_get (&node->data->class.init_state) == UNINITIALIZED);
 2185|     20|  if (node->data->class.class_private_size)
  ------------------
  |  Branch (2185:7): [True: 0, False: 20]
  ------------------
 2186|      0|    class = g_malloc0 (ALIGN_STRUCT (node->data->class.class_size) + node->data->class.class_private_size);
  ------------------
  |  |  161|      0|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 2187|     20|  else
 2188|     20|    class = g_malloc0 (node->data->class.class_size);
 2189|     20|  node->data->class.class = class;
 2190|     20|  g_atomic_int_set (&node->data->class.init_state, BASE_CLASS_INIT);
  ------------------
  |  |  104|     20|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     20|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|     20|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     20|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|     20|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|     20|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 20]
  |  |  ------------------
  |  |  108|     20|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|     20|  }))
  ------------------
 2191|       |  
 2192|     20|  if (pclass)
  ------------------
  |  Branch (2192:7): [True: 18, False: 2]
  ------------------
 2193|     18|    {
 2194|     18|      TypeNode *pnode = lookup_type_node_I (pclass->g_type);
 2195|       |      
 2196|     18|      memcpy (class, pclass, pnode->data->class.class_size);
 2197|     18|      memcpy (G_STRUCT_MEMBER_P (class, ALIGN_STRUCT (node->data->class.class_size)), G_STRUCT_MEMBER_P (pclass, ALIGN_STRUCT (pnode->data->class.class_size)), pnode->data->class.class_private_size);
  ------------------
  |  |  860|     18|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
                    memcpy (G_STRUCT_MEMBER_P (class, ALIGN_STRUCT (node->data->class.class_size)), G_STRUCT_MEMBER_P (pclass, ALIGN_STRUCT (pnode->data->class.class_size)), pnode->data->class.class_private_size);
  ------------------
  |  |  860|     18|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 2198|       |
 2199|     18|      if (node->is_instantiatable)
  ------------------
  |  Branch (2199:11): [True: 18, False: 0]
  ------------------
 2200|     18|	{
 2201|       |	  /* We need to initialize the private_size here rather than in
 2202|       |	   * type_data_make_W() since the class init for the parent
 2203|       |	   * class may have changed pnode->data->instance.private_size.
 2204|       |	   */
 2205|     18|	  node->data->instance.private_size = pnode->data->instance.private_size;
 2206|     18|	}
 2207|     18|    }
 2208|     20|  class->g_type = NODE_TYPE (node);
  ------------------
  |  |  252|     20|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2209|       |  
 2210|     20|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     20|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2211|       |  
 2212|       |  /* stack all base class initialization functions, so we
 2213|       |   * call them in ascending order.
 2214|       |   */
 2215|     75|  for (bnode = node; bnode; bnode = lookup_type_node_I (NODE_PARENT_TYPE (bnode)))
  ------------------
  |  |  253|     55|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
  |  Branch (2215:22): [True: 55, False: 20]
  ------------------
 2216|     55|    if (bnode->data->class.class_init_base)
  ------------------
  |  Branch (2216:9): [True: 20, False: 35]
  ------------------
 2217|     20|      init_slist = g_slist_prepend (init_slist, (gpointer) bnode->data->class.class_init_base);
 2218|     40|  for (slist = init_slist; slist; slist = slist->next)
  ------------------
  |  Branch (2218:28): [True: 20, False: 20]
  ------------------
 2219|     20|    {
 2220|     20|      GBaseInitFunc class_init_base = (GBaseInitFunc) slist->data;
 2221|       |      
 2222|     20|      class_init_base (class);
 2223|     20|    }
 2224|     20|  g_slist_free (init_slist);
 2225|       |  
 2226|     20|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|     20|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2227|       |
 2228|     20|  g_atomic_int_set (&node->data->class.init_state, BASE_IFACE_INIT);
  ------------------
  |  |  104|     20|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     20|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|     20|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     20|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|     20|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|     20|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 20]
  |  |  ------------------
  |  |  108|     20|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|     20|  }))
  ------------------
 2229|       |  
 2230|       |  /* Before we initialize the class, base initialize all interfaces, either
 2231|       |   * from parent, or through our holder info
 2232|       |   */
 2233|     20|  pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|     20|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 2234|       |
 2235|     20|  i = 0;
 2236|     39|  while ((entries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (node)) != NULL &&
  ------------------
  |  |  260|     39|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|     39|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  |  |  ------------------
  ------------------
  |  Branch (2236:10): [True: 31, False: 8]
  ------------------
 2237|     31|	  i < IFACE_ENTRIES_N_ENTRIES (entries))
  ------------------
  |  |  294|     31|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     31|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|     31|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2237:4): [True: 19, False: 12]
  ------------------
 2238|     19|    {
 2239|     19|      entry = &entries->entry[i];
 2240|     19|      while (i < IFACE_ENTRIES_N_ENTRIES (entries) &&
  ------------------
  |  |  294|     38|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     19|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|     19|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2240:14): [True: 19, False: 0]
  ------------------
 2241|     19|	     entry->init_state == IFACE_INIT)
  ------------------
  |  Branch (2241:7): [True: 0, False: 19]
  ------------------
 2242|      0|	{
 2243|      0|	  entry++;
 2244|      0|	  i++;
 2245|      0|	}
 2246|       |
 2247|     19|      if (i == IFACE_ENTRIES_N_ENTRIES (entries))
  ------------------
  |  |  294|     19|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     19|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|     19|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2247:11): [True: 0, False: 19]
  ------------------
 2248|      0|	break;
 2249|       |
 2250|     19|      if (!type_iface_vtable_base_init_Wm (lookup_type_node_I (entry->iface_type), node))
  ------------------
  |  Branch (2250:11): [True: 8, False: 11]
  ------------------
 2251|      8|	{
 2252|      8|	  guint j;
 2253|      8|	  IFaceEntries *pentries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (pnode);
  ------------------
  |  |  260|      8|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|      8|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  |  |  ------------------
  ------------------
 2254|       |	  
 2255|       |	  /* need to get this interface from parent, type_iface_vtable_base_init_Wm()
 2256|       |	   * doesn't modify write lock upon FALSE, so entry is still valid; 
 2257|       |	   */
 2258|      8|	  g_assert (pnode != NULL);
  ------------------
  |  |  231|      8|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      8|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      8|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      8|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      8| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      8|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      8|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      8|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      8|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      8|   else                                         \
  |  |  |  |  |  | 1021|      8|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      8|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      8|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      8|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      8|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      8|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2259|       |
 2260|      8|	  if (pentries)
  ------------------
  |  Branch (2260:8): [True: 8, False: 0]
  ------------------
 2261|      8|	    for (j = 0; j < IFACE_ENTRIES_N_ENTRIES (pentries); j++)
  ------------------
  |  |  294|      8|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|      8|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|      8|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2261:18): [True: 8, False: 0]
  ------------------
 2262|      8|	      {
 2263|      8|		IFaceEntry *pentry = &pentries->entry[j];
 2264|       |
 2265|      8|		if (pentry->iface_type == entry->iface_type)
  ------------------
  |  Branch (2265:7): [True: 8, False: 0]
  ------------------
 2266|      8|		  {
 2267|      8|		    entry->vtable = pentry->vtable;
 2268|      8|		    entry->init_state = INITIALIZED;
 2269|      8|		    break;
 2270|      8|		  }
 2271|      8|	      }
 2272|      8|	  g_assert (entry->vtable != NULL);
  ------------------
  |  |  231|      8|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      8|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      8|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      8|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      8| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      8|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      8|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      8|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      8|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      8|   else                                         \
  |  |  |  |  |  | 1021|      8|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      8|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      8|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      8|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      8|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      8|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2273|      8|	}
 2274|       |
 2275|       |      /* If the write lock was released, additional interface entries might
 2276|       |       * have been inserted into CLASSED_NODE_IFACES_ENTRIES (node); they'll
 2277|       |       * be base-initialized when inserted, so we don't have to worry that
 2278|       |       * we might miss them. Uninitialized entries can only be moved higher
 2279|       |       * when new ones are inserted.
 2280|       |       */
 2281|     19|      i++;
 2282|     19|    }
 2283|       |  
 2284|     20|  g_atomic_int_set (&node->data->class.init_state, CLASS_INIT);
  ------------------
  |  |  104|     20|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     20|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|     20|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     20|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|     20|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|     20|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 20]
  |  |  ------------------
  |  |  108|     20|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|     20|  }))
  ------------------
 2285|       |  
 2286|     20|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     20|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2287|       |
 2288|     20|  if (node->data->class.class_init)
  ------------------
  |  Branch (2288:7): [True: 20, False: 0]
  ------------------
 2289|     20|    node->data->class.class_init (class, (gpointer) node->data->class.class_data);
 2290|       |  
 2291|     20|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|     20|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2292|       |  
 2293|     20|  g_atomic_int_set (&node->data->class.init_state, IFACE_INIT);
  ------------------
  |  |  104|     20|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     20|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|     20|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     20|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|     20|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|     20|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 20]
  |  |  ------------------
  |  |  108|     20|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|     20|  }))
  ------------------
 2294|       |  
 2295|       |  /* finish initializing the interfaces through our holder info.
 2296|       |   * inherited interfaces are already init_state == INITIALIZED, because
 2297|       |   * they either got setup in the above base_init loop, or during
 2298|       |   * class_init from within type_add_interface_Wm() for this or
 2299|       |   * an ancestor type.
 2300|       |   */
 2301|     20|  i = 0;
 2302|     31|  while ((entries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (node)) != NULL)
  ------------------
  |  |  260|     31|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|     31|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  |  |  ------------------
  ------------------
  |  Branch (2302:10): [True: 23, False: 8]
  ------------------
 2303|     23|    {
 2304|     23|      entry = &entries->entry[i];
 2305|     31|      while (i < IFACE_ENTRIES_N_ENTRIES (entries) &&
  ------------------
  |  |  294|     62|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     31|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|     31|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2305:14): [True: 19, False: 12]
  ------------------
 2306|     19|	     entry->init_state == INITIALIZED)
  ------------------
  |  Branch (2306:7): [True: 8, False: 11]
  ------------------
 2307|      8|	{
 2308|      8|	  entry++;
 2309|      8|	  i++;
 2310|      8|	}
 2311|       |
 2312|     23|      if (i == IFACE_ENTRIES_N_ENTRIES (entries))
  ------------------
  |  |  294|     23|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     23|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|     23|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2312:11): [True: 12, False: 11]
  ------------------
 2313|     12|	break;
 2314|       |
 2315|     11|      type_iface_vtable_iface_init_Wm (lookup_type_node_I (entry->iface_type), node);
 2316|       |      
 2317|       |      /* As in the loop above, additional initialized entries might be inserted
 2318|       |       * if the write lock is released, but that's harmless because the entries
 2319|       |       * we need to initialize only move higher in the list.
 2320|       |       */
 2321|     11|      i++;
 2322|     11|    }
 2323|       |  
 2324|     20|  g_atomic_int_set (&node->data->class.init_state, INITIALIZED);
  ------------------
  |  |  104|     20|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     20|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|     20|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     20|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|     20|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|     20|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 20]
  |  |  ------------------
  |  |  108|     20|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|     20|  }))
  ------------------
 2325|     20|}
gtype.c:type_data_unref_U:
 2479|  1.29M|{
 2480|  1.29M|  guint current;
 2481|       |
 2482|  1.29M|  do {
 2483|  1.29M|    current = NODE_REFCOUNT (node);
  ------------------
  |  |  256|  1.29M|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  1.29M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  1.29M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.29M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  1.29M|    gint gaig_temp;                                                          \
  |  |  |  |   99|  1.29M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1.29M]
  |  |  |  |  ------------------
  |  |  |  |  100|  1.29M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  1.29M|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  1.29M|  }))
  |  |  ------------------
  ------------------
 2484|       |
 2485|  1.29M|    if (current <= 1)
  ------------------
  |  Branch (2485:9): [True: 0, False: 1.29M]
  ------------------
 2486|      0|    {
 2487|      0|      if (!node->plugin)
  ------------------
  |  Branch (2487:11): [True: 0, False: 0]
  ------------------
 2488|      0|	{
 2489|      0|	  g_warning ("static type '%s' unreferenced too often",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 2490|      0|		     NODE_NAME (node));
 2491|      0|	  return;
 2492|      0|	}
 2493|      0|      else
 2494|      0|        {
 2495|       |          /* This is the last reference of a type from a plugin.  We are
 2496|       |           * experimentally disabling support for unloading type
 2497|       |           * plugins, so don't allow the last ref to drop.
 2498|       |           */
 2499|      0|          return;
 2500|      0|        }
 2501|       |
 2502|      0|      g_assert (current > 0);
  ------------------
  |  |  231|      0|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      0|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      0|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      0|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2503|       |
 2504|      0|      g_rec_mutex_lock (&class_init_rec_mutex); /* required locking order: 1) class_init_rec_mutex, 2) type_rw_lock */
 2505|      0|      G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      0|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2506|      0|      type_data_last_unref_Wm (node, uncached);
 2507|      0|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      0|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2508|      0|      g_rec_mutex_unlock (&class_init_rec_mutex);
 2509|      0|      return;
 2510|      0|    }
 2511|  1.29M|  } while (!g_atomic_int_compare_and_exchange ((int *) &node->ref_count, current, current - 1));
  ------------------
  |  |  160|  1.29M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.29M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  161|  1.29M|    gint gaicae_oldval = (oldval);                                           \
  |  |  162|  1.29M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.29M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  163|  1.29M|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  ------------------
  |  |  |  Branch (163:13): [Folded, False: 1.29M]
  |  |  ------------------
  |  |  164|  1.29M|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|  1.29M|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|  1.29M|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  1.29M|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (164:5): [True: 1.29M, False: 0]
  |  |  ------------------
  |  |  165|  1.29M|  }))
  ------------------
  |  Branch (2511:12): [True: 0, False: 1.29M]
  ------------------
 2512|  1.29M|}
gtype.c:type_lookup_iface_vtable_I:
  632|  28.2M|{
  633|  28.2M|  IFaceEntry *entry;
  634|  28.2M|  gboolean res;
  635|       |
  636|  28.2M|  if (!NODE_IS_IFACE (iface_node))
  ------------------
  |  |  258|  28.2M|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|  28.2M|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|  28.2M|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|  28.2M|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|  28.2M|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (636:7): [True: 0, False: 28.2M]
  ------------------
  637|      0|    {
  638|      0|      if (vtable_ptr)
  ------------------
  |  Branch (638:11): [True: 0, False: 0]
  ------------------
  639|      0|	*vtable_ptr = NULL;
  640|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  641|      0|    }
  642|       |
  643|  28.2M|  G_ATOMIC_ARRAY_DO_TRANSACTION
  ------------------
  |  |   44|  28.2M|#define G_ATOMIC_ARRAY_DO_TRANSACTION(_array, _type, _C_) G_STMT_START {	\
  |  |  ------------------
  |  |  |  |  874|  28.2M|#define G_STMT_START  do
  |  |  ------------------
  |  |   45|  28.2M|    gpointer *_datap  = &(_array)->data;				\
  |  |   46|  28.2M|    _type *transaction_data, *__check;						\
  |  |   47|  28.2M|										\
  |  |   48|  28.2M|    __check = g_atomic_pointer_get (_datap);					\
  |  |  ------------------
  |  |  |  |  113|  28.2M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  28.2M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  28.2M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  28.2M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  28.2M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  28.2M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  28.2M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  28.2M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  28.2M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  28.2M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  28.2M|  }))
  |  |  ------------------
  |  |   49|  28.2M|    do {									\
  |  |   50|  28.2M|      transaction_data = __check;						\
  |  |   51|  54.5M|      {_C_;}									\
  |  |  ------------------
  |  |  |  Branch (51:8): [True: 8.75M, False: 0]
  |  |  |  Branch (51:8): [True: 8.75M, False: 19.4M]
  |  |  ------------------
  |  |   52|  28.2M|      __check = g_atomic_pointer_get (_datap);					\
  |  |  ------------------
  |  |  |  |  113|  28.2M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  28.2M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  28.2M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  28.2M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  28.2M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  28.2M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  28.2M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  28.2M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  28.2M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  28.2M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  28.2M|  }))
  |  |  ------------------
  |  |   53|  28.2M|    } while (transaction_data != __check);					\
  |  |  ------------------
  |  |  |  Branch (53:14): [True: 0, False: 28.2M]
  |  |  ------------------
  |  |   54|  28.2M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  28.2M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 28.2M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  644|  28.2M|    (CLASSED_NODE_IFACES_ENTRIES (node), IFaceEntries,
  645|       |
  646|  28.2M|     entry = lookup_iface_entry_I (transaction_data, iface_node);
  647|  28.2M|     res = entry != NULL;
  648|  28.2M|     if (vtable_ptr)
  649|  28.2M|       {
  650|  28.2M|	 if (entry)
  651|  28.2M|	   *vtable_ptr = entry->vtable;
  652|  28.2M|	 else
  653|  28.2M|	   *vtable_ptr = NULL;
  654|  28.2M|       }
  655|  28.2M|     );
  656|       |
  657|  28.2M|  return res;
  658|  28.2M|}
gtype.c:type_iface_ensure_dflt_vtable_Wm:
 2014|     11|{
 2015|     11|  g_assert (iface->data);
  ------------------
  |  |  231|     11|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     11|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     11|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     11|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     11| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     11|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     11|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     11|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     11|   else                                         \
  |  |  |  |  |  | 1021|     11|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     11|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     11|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     11|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     11|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     11|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2016|       |
 2017|     11|  if (!iface->data->iface.dflt_vtable)
  ------------------
  |  Branch (2017:7): [True: 4, False: 7]
  ------------------
 2018|      4|    {
 2019|      4|      GTypeInterface *vtable = g_malloc0 (iface->data->iface.vtable_size);
 2020|      4|      iface->data->iface.dflt_vtable = vtable;
 2021|      4|      vtable->g_type = NODE_TYPE (iface);
  ------------------
  |  |  252|      4|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2022|      4|      vtable->g_instance_type = 0;
 2023|      4|      if (iface->data->iface.vtable_init_base ||
  ------------------
  |  Branch (2023:11): [True: 0, False: 4]
  ------------------
 2024|      4|          iface->data->iface.dflt_init)
  ------------------
  |  Branch (2024:11): [True: 4, False: 0]
  ------------------
 2025|      4|        {
 2026|      4|          G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      4|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2027|      4|          if (iface->data->iface.vtable_init_base)
  ------------------
  |  Branch (2027:15): [True: 0, False: 4]
  ------------------
 2028|      0|            iface->data->iface.vtable_init_base (vtable);
 2029|      4|          if (iface->data->iface.dflt_init)
  ------------------
  |  Branch (2029:15): [True: 4, False: 0]
  ------------------
 2030|      4|            iface->data->iface.dflt_init (vtable, (gpointer) iface->data->iface.dflt_data);
 2031|      4|          G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      4|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2032|      4|        }
 2033|      4|    }
 2034|     11|}
gtype.c:type_node_is_a_L:
 3543|     14|{
 3544|     14|  return type_node_check_conformities_UorL (node, iface_node, TRUE, TRUE, TRUE);
  ------------------
  |  |  818|     14|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     14|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                return type_node_check_conformities_UorL (node, iface_node, TRUE, TRUE, TRUE);
  ------------------
  |  |  818|     14|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     14|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                return type_node_check_conformities_UorL (node, iface_node, TRUE, TRUE, TRUE);
  ------------------
  |  |  818|     14|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     14|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3545|     14|}
gtype.c:type_node_check_conformities_UorL:
 3504|  52.5M|{
 3505|  52.5M|  gboolean match;
 3506|       |
 3507|  52.5M|  if (/* support_inheritance && */
 3508|  52.5M|      NODE_IS_ANCESTOR (iface_node, node))
  ------------------
  |  |  270|  52.5M|        ((ancestor)->n_supers <= (node)->n_supers &&                                        \
  |  |  ------------------
  |  |  |  Branch (270:10): [True: 52.5M, False: 3]
  |  |  ------------------
  |  |  271|  52.5M|	 (node)->supers[(node)->n_supers - (ancestor)->n_supers] == NODE_TYPE (ancestor))
  |  |  ------------------
  |  |  |  |  252|  52.5M|#define NODE_TYPE(node)				(node->supers[0])
  |  |  ------------------
  |  |  |  Branch (271:3): [True: 33.0M, False: 19.4M]
  |  |  ------------------
  ------------------
 3509|  33.0M|    return TRUE;
  ------------------
  |  |  818|  33.0M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  33.0M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3510|       |
 3511|  19.4M|  support_interfaces = support_interfaces && node->is_instantiatable && NODE_IS_IFACE (iface_node);
  ------------------
  |  |  258|  38.9M|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|  19.4M|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|  19.4M|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|  19.4M|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|  19.4M|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 19.4M, False: 57]
  |  |  ------------------
  ------------------
  |  Branch (3511:24): [True: 19.4M, False: 0]
  |  Branch (3511:46): [True: 19.4M, False: 4]
  ------------------
 3512|  19.4M|  support_prerequisites = support_prerequisites && NODE_IS_IFACE (node);
  ------------------
  |  |  258|  19.4M|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     65|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     65|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     65|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     65|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 4, False: 61]
  |  |  ------------------
  ------------------
  |  Branch (3512:27): [True: 65, False: 19.4M]
  ------------------
 3513|  19.4M|  match = FALSE;
  ------------------
  |  |  814|  19.4M|#define	FALSE	(0)
  ------------------
 3514|  19.4M|  if (support_interfaces)
  ------------------
  |  Branch (3514:7): [True: 19.4M, False: 61]
  ------------------
 3515|  19.4M|    {
 3516|  19.4M|      if (have_lock)
  ------------------
  |  Branch (3516:11): [True: 0, False: 19.4M]
  ------------------
 3517|      0|	{
 3518|      0|	  if (type_lookup_iface_entry_L (node, iface_node))
  ------------------
  |  Branch (3518:8): [True: 0, False: 0]
  ------------------
 3519|      0|	    match = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3520|      0|	}
 3521|  19.4M|      else
 3522|  19.4M|	{
 3523|  19.4M|	  if (type_lookup_iface_vtable_I (node, iface_node, NULL))
  ------------------
  |  Branch (3523:8): [True: 19.4M, False: 4]
  ------------------
 3524|  19.4M|	    match = TRUE;
  ------------------
  |  |  818|  19.4M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  19.4M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3525|  19.4M|	}
 3526|  19.4M|    }
 3527|  19.4M|  if (!match &&
  ------------------
  |  Branch (3527:7): [True: 65, False: 19.4M]
  ------------------
 3528|     65|      support_prerequisites)
  ------------------
  |  Branch (3528:7): [True: 4, False: 61]
  ------------------
 3529|      4|    {
 3530|      4|      if (!have_lock)
  ------------------
  |  Branch (3530:11): [True: 4, False: 0]
  ------------------
 3531|      4|	G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|      4|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 3532|      4|      if (support_prerequisites && type_lookup_prerequisite_L (node, NODE_TYPE (iface_node)))
  ------------------
  |  |  252|      4|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
  |  Branch (3532:11): [True: 4, False: 0]
  |  Branch (3532:36): [True: 0, False: 4]
  ------------------
 3533|      0|	match = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3534|      4|      if (!have_lock)
  ------------------
  |  Branch (3534:11): [True: 4, False: 0]
  ------------------
 3535|      4|	G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|      4|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 3536|      4|    }
 3537|  19.4M|  return match;
 3538|  52.5M|}
gtype.c:type_lookup_prerequisite_L:
  663|      4|{
  664|      4|  if (NODE_IS_IFACE (iface) && IFACE_NODE_N_PREREQUISITES (iface))
  ------------------
  |  |  258|      8|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|      4|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      4|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 4, False: 0]
  |  |  ------------------
  ------------------
                if (NODE_IS_IFACE (iface) && IFACE_NODE_N_PREREQUISITES (iface))
  ------------------
  |  |  261|      4|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  |  |  ------------------
  |  |  |  Branch (261:42): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  665|      0|    {
  666|      0|      GType *prerequisites = IFACE_NODE_PREREQUISITES (iface) - 1;
  ------------------
  |  |  262|      0|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
  667|      0|      guint n_prerequisites = IFACE_NODE_N_PREREQUISITES (iface);
  ------------------
  |  |  261|      0|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  668|       |      
  669|      0|      do
  670|      0|	{
  671|      0|	  guint i;
  672|      0|	  GType *check;
  673|       |	  
  674|      0|	  i = (n_prerequisites + 1) >> 1;
  675|      0|	  check = prerequisites + i;
  676|      0|	  if (prerequisite_type == *check)
  ------------------
  |  Branch (676:8): [True: 0, False: 0]
  ------------------
  677|      0|	    return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  678|      0|	  else if (prerequisite_type > *check)
  ------------------
  |  Branch (678:13): [True: 0, False: 0]
  ------------------
  679|      0|	    {
  680|      0|	      n_prerequisites -= i;
  681|      0|	      prerequisites = check;
  682|      0|	    }
  683|      0|	  else /* if (prerequisite_type < *check) */
  684|      0|	    n_prerequisites = i - 1;
  685|      0|	}
  686|      0|      while (n_prerequisites);
  ------------------
  |  Branch (686:14): [True: 0, False: 0]
  ------------------
  687|      0|    }
  688|      4|  return FALSE;
  ------------------
  |  |  814|      4|#define	FALSE	(0)
  ------------------
  689|      4|}
gtype.c:type_node_conforms_to_U:
 3552|  52.5M|{
 3553|  52.5M|  return type_node_check_conformities_UorL (node, iface_node, support_interfaces, support_prerequisites, FALSE);
  ------------------
  |  |  814|  52.5M|#define	FALSE	(0)
  ------------------
 3554|  52.5M|}
gtype.c:type_get_qdata_L:
 3699|    265|{
 3700|    265|  GData *gdata = node->global_gdata;
 3701|       |  
 3702|    265|  if (quark && gdata && gdata->n_qdatas)
  ------------------
  |  Branch (3702:7): [True: 265, False: 0]
  |  Branch (3702:16): [True: 155, False: 110]
  |  Branch (3702:25): [True: 155, False: 0]
  ------------------
 3703|    155|    {
 3704|    155|      QData *qdatas = gdata->qdatas - 1;
 3705|    155|      guint n_qdatas = gdata->n_qdatas;
 3706|       |      
 3707|    155|      do
 3708|    194|	{
 3709|    194|	  guint i;
 3710|    194|	  QData *check;
 3711|       |	  
 3712|    194|	  i = (n_qdatas + 1) / 2;
 3713|    194|	  check = qdatas + i;
 3714|    194|	  if (quark == check->quark)
  ------------------
  |  Branch (3714:8): [True: 142, False: 52]
  ------------------
 3715|    142|	    return check->data;
 3716|     52|	  else if (quark > check->quark)
  ------------------
  |  Branch (3716:13): [True: 52, False: 0]
  ------------------
 3717|     52|	    {
 3718|     52|	      n_qdatas -= i;
 3719|     52|	      qdatas = check;
 3720|     52|	    }
 3721|      0|	  else /* if (quark < check->quark) */
 3722|      0|	    n_qdatas = i - 1;
 3723|    194|	}
 3724|    155|      while (n_qdatas);
  ------------------
  |  Branch (3724:14): [True: 39, False: 13]
  ------------------
 3725|    155|    }
 3726|    123|  return NULL;
 3727|    265|}
gtype.c:type_set_qdata_W:
 3769|    123|{
 3770|    123|  GData *gdata;
 3771|    123|  QData *qdata;
 3772|    123|  guint i;
 3773|       |  
 3774|       |  /* setup qdata list if necessary */
 3775|    123|  if (!node->global_gdata)
  ------------------
  |  Branch (3775:7): [True: 110, False: 13]
  ------------------
 3776|    110|    node->global_gdata = g_new0 (GData, 1);
  ------------------
  |  |  307|    110|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|    110|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    110|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|    110|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|    110|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|    110|	  gpointer __p;						\
  |  |  |  |  239|    110|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 110]
  |  |  |  |  ------------------
  |  |  |  |  240|    110|	    __p = g_##func (__n);				\
  |  |  |  |  241|    110|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 110, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|    110|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|    110|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|    110|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 110]
  |  |  |  |  |  Branch (242:26): [True: 110, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|    110|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|    110|	  else							\
  |  |  |  |  245|    110|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|    110|	  __p;							\
  |  |  |  |  247|    110|	}))
  |  |  ------------------
  ------------------
 3777|    123|  gdata = node->global_gdata;
 3778|       |  
 3779|       |  /* try resetting old data */
 3780|    123|  qdata = gdata->qdatas;
 3781|    136|  for (i = 0; i < gdata->n_qdatas; i++)
  ------------------
  |  Branch (3781:15): [True: 22, False: 114]
  ------------------
 3782|     22|    if (qdata[i].quark == quark)
  ------------------
  |  Branch (3782:9): [True: 9, False: 13]
  ------------------
 3783|      9|      {
 3784|      9|	qdata[i].data = data;
 3785|      9|	return;
 3786|      9|      }
 3787|       |  
 3788|       |  /* add new entry */
 3789|    114|  gdata->n_qdatas++;
 3790|    114|  gdata->qdatas = g_renew (QData, gdata->qdatas, gdata->n_qdatas);
  ------------------
  |  |  321|    114|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|    114|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    114|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|    114|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|    114|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|    114|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|    114|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 114]
  |  |  |  |  ------------------
  |  |  |  |  254|    114|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|    114|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 114]
  |  |  |  |  ------------------
  |  |  |  |  256|    114|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (256:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (256:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  257|    114|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|    114|	  else							\
  |  |  |  |  259|    114|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|    114|	  __p;							\
  |  |  |  |  261|    114|	}))
  |  |  ------------------
  ------------------
 3791|    114|  qdata = gdata->qdatas;
 3792|    118|  for (i = 0; i < gdata->n_qdatas - 1; i++)
  ------------------
  |  Branch (3792:15): [True: 4, False: 114]
  ------------------
 3793|      4|    if (qdata[i].quark > quark)
  ------------------
  |  Branch (3793:9): [True: 0, False: 4]
  ------------------
 3794|      0|      break;
 3795|    114|  memmove (qdata + i + 1, qdata + i, sizeof (qdata[0]) * (gdata->n_qdatas - i - 1));
 3796|    114|  qdata[i].quark = quark;
 3797|    114|  qdata[i].data = data;
 3798|    114|}
gtype.c:type_add_flags_W:
 3831|    110|{
 3832|    110|  guint dflags;
 3833|       |  
 3834|    110|  g_return_if_fail ((flags & ~TYPE_FLAG_MASK) == 0);
  ------------------
  |  |  630|    110|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    110|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    110|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    110|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    110| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    110|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    110|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    110|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 110, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    110|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    110|   else                                         \
  |  |  |  |  |  | 1021|    110|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    110|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    110|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 110, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    110|      { } \
  |  |  633|    110|    else \
  |  |  634|    110|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    110|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    110|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 110]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3835|    110|  g_return_if_fail (node != NULL);
  ------------------
  |  |  630|    110|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    110|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    110|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    110|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    110| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    110|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    110|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    110|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 110, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    110|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    110|   else                                         \
  |  |  |  |  |  | 1021|    110|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    110|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    110|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 110, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    110|      { } \
  |  |  633|    110|    else \
  |  |  634|    110|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    110|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    110|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 110]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3836|       |  
 3837|    110|  if ((flags & TYPE_FLAG_MASK) && node->is_classed && node->data && node->data->class.class)
  ------------------
  |  |  146|    110|#define	TYPE_FLAG_MASK		   (G_TYPE_FLAG_ABSTRACT | G_TYPE_FLAG_VALUE_ABSTRACT)
  ------------------
  |  Branch (3837:7): [True: 9, False: 101]
  |  Branch (3837:35): [True: 7, False: 2]
  |  Branch (3837:55): [True: 0, False: 7]
  |  Branch (3837:69): [True: 0, False: 0]
  ------------------
 3838|      0|    g_warning ("tagging type '%s' as abstract after class initialization", NODE_NAME (node));
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 3839|    110|  dflags = GPOINTER_TO_UINT (type_get_qdata_L (node, static_quark_type_flags));
  ------------------
  |  |   99|    110|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 3840|    110|  dflags |= flags;
 3841|    110|  type_set_qdata_W (node, static_quark_type_flags, GUINT_TO_POINTER (dflags));
  ------------------
  |  |  102|    110|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
 3842|    110|}
gtype.c:type_node_fundamental_info_I:
  529|    246|{
  530|    246|  GType ftype = NODE_FUNDAMENTAL_TYPE (node);
  ------------------
  |  |  254|    246|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  531|       |  
  532|    246|  if (ftype != NODE_TYPE (node))
  ------------------
  |  |  252|    246|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
  |  Branch (532:7): [True: 30, False: 216]
  ------------------
  533|     30|    node = lookup_type_node_I (ftype);
  534|       |  
  535|    246|  return node ? G_STRUCT_MEMBER_P (node, -SIZEOF_FUNDAMENTAL_INFO) : NULL;
  ------------------
  |  |  860|    984|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  |  |  |  Branch (860:50): [Folded, False: 246]
  |  |  |  Branch (860:50): [Folded, False: 0]
  |  |  |  Branch (860:50): [Folded, False: 246]
  |  |  ------------------
  ------------------
  |  Branch (535:10): [True: 246, False: 0]
  ------------------
  536|    246|}
gtype.c:type_check_is_value_type_U:
 4207|   868k|{
 4208|   868k|  GTypeFlags tflags = G_TYPE_FLAG_VALUE_ABSTRACT;
 4209|   868k|  TypeNode *node;
 4210|       |  
 4211|       |  /* common path speed up */
 4212|   868k|  node = lookup_type_node_I (type);
 4213|   868k|  if (node && node->mutatable_check_cache)
  ------------------
  |  Branch (4213:7): [True: 868k, False: 0]
  |  Branch (4213:15): [True: 868k, False: 1]
  ------------------
 4214|   868k|    return TRUE;
  ------------------
  |  |  818|   868k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   868k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 4215|       |  
 4216|      1|  G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|      1|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 4217|      1| restart_check:
 4218|      1|  if (node)
  ------------------
  |  Branch (4218:7): [True: 1, False: 0]
  ------------------
 4219|      1|    {
 4220|      1|      if (node->data && NODE_REFCOUNT (node) > 0 &&
  ------------------
  |  |  256|      1|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|      1|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|      1|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|      1|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|      1|    gint gaig_temp;                                                          \
  |  |  |  |   99|      1|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  100|      1|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|      1|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|      1|  }))
  |  |  ------------------
  ------------------
  |  Branch (4220:11): [True: 1, False: 0]
  |  Branch (4220:25): [True: 1, False: 0]
  ------------------
 4221|      1|	  node->data->common.value_table->value_init)
  ------------------
  |  Branch (4221:4): [True: 1, False: 0]
  ------------------
 4222|      1|	tflags = GPOINTER_TO_UINT (type_get_qdata_L (node, static_quark_type_flags));
  ------------------
  |  |   99|      1|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 4223|      0|      else if (NODE_IS_IFACE (node))
  ------------------
  |  |  258|      0|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|      0|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      0|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      0|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      0|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4224|      0|	{
 4225|      0|	  guint i;
 4226|       |	  
 4227|      0|	  for (i = 0; i < IFACE_NODE_N_PREREQUISITES (node); i++)
  ------------------
  |  |  261|      0|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  |  Branch (4227:16): [True: 0, False: 0]
  ------------------
 4228|      0|	    {
 4229|      0|	      GType prtype = IFACE_NODE_PREREQUISITES (node)[i];
  ------------------
  |  |  262|      0|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
 4230|      0|	      TypeNode *prnode = lookup_type_node_I (prtype);
 4231|       |	      
 4232|      0|	      if (prnode->is_instantiatable)
  ------------------
  |  Branch (4232:12): [True: 0, False: 0]
  ------------------
 4233|      0|		{
 4234|      0|		  type = prtype;
 4235|      0|		  node = lookup_type_node_I (type);
 4236|      0|		  goto restart_check;
 4237|      0|		}
 4238|      0|	    }
 4239|      0|	}
 4240|      1|    }
 4241|      1|  G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|      1|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 4242|       |  
 4243|      1|  return !(tflags & G_TYPE_FLAG_VALUE_ABSTRACT);
 4244|      1|}
gtype.c:gobject_init:
 4420|      2|{
 4421|      2|  const gchar *env_string;
 4422|      2|  GTypeInfo info;
 4423|      2|  TypeNode *node;
 4424|      2|  GType type G_GNUC_UNUSED  /* when compiling with G_DISABLE_ASSERT */;
 4425|       |
 4426|       |  /* Ensure GLib is initialized first, see
 4427|       |   * https://bugzilla.gnome.org/show_bug.cgi?id=756139
 4428|       |   */
 4429|      2|  GLIB_PRIVATE_CALL (glib_init) ();
  ------------------
  |  |   94|      2|#define GLIB_PRIVATE_CALL(symbol) (glib__private__()->symbol)
  ------------------
 4430|       |
 4431|      2|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      2|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 4432|       |
 4433|       |  /* setup GObject library wide debugging flags */
 4434|      2|  env_string = g_getenv ("GOBJECT_DEBUG");
 4435|      2|  if (env_string != NULL)
  ------------------
  |  Branch (4435:7): [True: 0, False: 2]
  ------------------
 4436|      0|    {
 4437|      0|      GDebugKey debug_keys[] = {
 4438|      0|        { "objects", G_TYPE_DEBUG_OBJECTS },
 4439|      0|        { "instance-count", G_TYPE_DEBUG_INSTANCE_COUNT },
 4440|      0|        { "signals", G_TYPE_DEBUG_SIGNALS },
 4441|      0|      };
 4442|       |
 4443|      0|      _g_type_debug_flags = g_parse_debug_string (env_string, debug_keys, G_N_ELEMENTS (debug_keys));
  ------------------
  |  |  840|      0|#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
  ------------------
 4444|      0|    }
 4445|       |
 4446|       |  /* quarks */
 4447|      2|  static_quark_type_flags = g_quark_from_static_string ("-g-type-private--GTypeFlags");
 4448|      2|  static_quark_iface_holder = g_quark_from_static_string ("-g-type-private--IFaceHolder");
 4449|      2|  static_quark_dependants_array = g_quark_from_static_string ("-g-type-private--dependants-array");
 4450|       |
 4451|       |  /* type qname hash table */
 4452|      2|  static_type_nodes_ht = g_hash_table_new (g_str_hash, g_str_equal);
 4453|       |
 4454|       |  /* invalid type G_TYPE_INVALID (0)
 4455|       |   */
 4456|      2|  static_fundamental_type_nodes[0] = NULL;
 4457|       |
 4458|       |  /* void type G_TYPE_NONE
 4459|       |   */
 4460|      2|  node = type_node_fundamental_new_W (G_TYPE_NONE, g_intern_static_string ("void"), 0);
  ------------------
  |  |   62|      2|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4461|      2|  type = NODE_TYPE (node);
  ------------------
  |  |  252|      2|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 4462|      2|  g_assert (type == G_TYPE_NONE);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4463|       |
 4464|       |  /* interface fundamental type G_TYPE_INTERFACE (!classed)
 4465|       |   */
 4466|      2|  memset (&info, 0, sizeof (info));
 4467|      2|  node = type_node_fundamental_new_W (G_TYPE_INTERFACE, g_intern_static_string ("GInterface"), G_TYPE_FLAG_DERIVABLE);
  ------------------
  |  |   68|      2|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4468|      2|  type = NODE_TYPE (node);
  ------------------
  |  |  252|      2|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 4469|      2|  type_data_make_W (node, &info, NULL);
 4470|      2|  g_assert (type == G_TYPE_INTERFACE);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4471|       |
 4472|      2|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      2|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 4473|       |
 4474|      2|  _g_value_c_init ();
 4475|       |
 4476|       |  /* G_TYPE_TYPE_PLUGIN
 4477|       |   */
 4478|      2|  g_type_ensure (g_type_plugin_get_type ());
 4479|       |
 4480|       |  /* G_TYPE_* value types
 4481|       |   */
 4482|      2|  _g_value_types_init ();
 4483|       |
 4484|       |  /* G_TYPE_ENUM & G_TYPE_FLAGS
 4485|       |   */
 4486|      2|  _g_enum_types_init ();
 4487|       |
 4488|       |  /* G_TYPE_BOXED
 4489|       |   */
 4490|      2|  _g_boxed_type_init ();
 4491|       |
 4492|       |  /* G_TYPE_PARAM
 4493|       |   */
 4494|      2|  _g_param_type_init ();
 4495|       |
 4496|       |  /* G_TYPE_OBJECT
 4497|       |   */
 4498|      2|  _g_object_type_init ();
 4499|       |
 4500|       |  /* G_TYPE_PARAM_* pspec types
 4501|       |   */
 4502|      2|  _g_param_spec_types_init ();
 4503|       |
 4504|       |  /* Value Transformations
 4505|       |   */
 4506|      2|  _g_value_transforms_init ();
 4507|       |
 4508|       |  /* Signal system
 4509|       |   */
 4510|      2|  _g_signal_init ();
 4511|      2|}

ginputstream.c:g_input_stream_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
ginputstream.c:g_input_stream_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 1, False: 0]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
ginputstream.c:g_input_stream_get_instance_private:
 1990|   859k|type_name##_get_instance_private (TypeName *self) \
 1991|   859k|{ \
 1992|   859k|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|   859k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|   859k|} \
gmemoryinputstream.c:g_memory_input_stream_get_type_once:
 1618|      1|#define G_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
gmemoryinputstream.c:g_memory_input_stream_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 1, False: 0]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
gmemoryinputstream.c:g_memory_input_stream_get_instance_private:
 1990|   430k|type_name##_get_instance_private (TypeName *self) \
 1991|   430k|{ \
 1992|   430k|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|   430k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|   430k|} \
gboxed.c:g_value_array_get_type_once:
 2106|      2|#define G_DEFINE_BOXED_TYPE_WITH_CODE(TypeName, type_name, copy_func, free_func, _C_) _G_DEFINE_BOXED_TYPE_BEGIN (TypeName, type_name, copy_func, free_func) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2129|      2|type_name##_get_type_once (void) \
  |  | 2130|      2|{ \
  |  | 2131|      2|  GType (* _g_register_boxed) \
  |  | 2132|      2|    (const gchar *, \
  |  | 2133|      2|     union \
  |  | 2134|      2|       { \
  |  | 2135|      2|         TypeName * (*do_copy_type) (TypeName *); \
  |  | 2136|      2|         TypeName * (*do_const_copy_type) (const TypeName *); \
  |  | 2137|      2|         GBoxedCopyFunc do_copy_boxed; \
  |  | 2138|      2|       } __attribute__((__transparent_union__)), \
  |  | 2139|      2|     union \
  |  | 2140|      2|       { \
  |  | 2141|      2|         void (* do_free_type) (TypeName *); \
  |  | 2142|      2|         GBoxedFreeFunc do_free_boxed; \
  |  | 2143|      2|       } __attribute__((__transparent_union__)) \
  |  | 2144|      2|    ) = g_boxed_type_register_static; \
  |  | 2145|      2|  GType g_define_type_id = \
  |  | 2146|      2|    _g_register_boxed (g_intern_static_string (#TypeName), copy_func, free_func); \
  |  | 2147|      2|  { /* custom code follows */
  ------------------
              #define G_DEFINE_BOXED_TYPE_WITH_CODE(TypeName, type_name, copy_func, free_func, _C_) _G_DEFINE_BOXED_TYPE_BEGIN (TypeName, type_name, copy_func, free_func) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      2|    }					\
  |  | 2027|      2|  return g_define_type_id; \
  |  | 2028|      2|} /* closes type_name##_get_type_once() */
  ------------------
gvaluetypes.c:g_gtype_get_type_once:
 2200|      2|#define G_DEFINE_POINTER_TYPE_WITH_CODE(TypeName, type_name, _C_) _G_DEFINE_POINTER_TYPE_BEGIN (TypeName, type_name) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2219|      2|type_name##_get_type_once (void) \
  |  | 2220|      2|{ \
  |  | 2221|      2|  GType g_define_type_id = \
  |  | 2222|      2|    g_pointer_type_register_static (g_intern_static_string (#TypeName)); \
  |  | 2223|      2|  { /* custom code follows */
  ------------------
              #define G_DEFINE_POINTER_TYPE_WITH_CODE(TypeName, type_name, _C_) _G_DEFINE_POINTER_TYPE_BEGIN (TypeName, type_name) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      2|    }					\
  |  | 2027|      2|  return g_define_type_id; \
  |  | 2028|      2|} /* closes type_name##_get_type_once() */
  ------------------

g_type_plugin_get_type:
   82|      2|{
   83|      2|  static GType type_plugin_type = 0;
   84|       |  
   85|      2|  if (!type_plugin_type)
  ------------------
  |  Branch (85:7): [True: 2, False: 0]
  ------------------
   86|      2|    {
   87|      2|      const GTypeInfo type_plugin_info = {
   88|      2|        sizeof (GTypePluginClass),
   89|      2|        NULL,           /* base_init */
   90|      2|        NULL,           /* base_finalize */
   91|      2|        0,              /* class_init */
   92|      2|        NULL,           /* class_destroy */
   93|      2|        NULL,           /* class_data */
   94|      2|        0,              /* instance_size */
   95|      2|        0,              /* n_preallocs */
   96|      2|        NULL,           /* instance_init */
   97|      2|        NULL,           /* value_table */
   98|      2|      };
   99|       |      
  100|      2|      type_plugin_type = g_type_register_static (G_TYPE_INTERFACE, g_intern_static_string ("GTypePlugin"), &type_plugin_info, 0);
  ------------------
  |  |   68|      2|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  101|      2|    }
  102|       |  
  103|      2|  return type_plugin_type;
  104|      2|}

_g_value_c_init:
  140|      2|{
  141|      2|  transform_array = g_bsearch_array_create (&transform_bconfig);
  142|      2|}
g_value_init:
  164|   434k|{
  165|   434k|  GTypeValueTable *value_table;
  166|       |  /* g_return_val_if_fail (G_TYPE_IS_VALUE (g_type), NULL);	be more elaborate below */
  167|   434k|  g_return_val_if_fail (value != NULL, NULL);
  ------------------
  |  |  643|   434k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   434k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   434k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   434k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   434k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   434k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   434k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   434k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 434k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   434k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   434k|   else                                         \
  |  |  |  |  |  | 1021|   434k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   434k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   434k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 434k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   434k|      { } \
  |  |  646|   434k|    else \
  |  |  647|   434k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   434k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   434k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 434k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  168|       |  /* g_return_val_if_fail (G_VALUE_TYPE (value) == 0, NULL);	be more elaborate below */
  169|       |
  170|   434k|  value_table = g_type_value_table_peek (g_type);
  171|       |
  172|   434k|  if (value_table && G_VALUE_TYPE (value) == 0)
  ------------------
  |  |   59|   434k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  |  Branch (172:7): [True: 434k, False: 0]
  |  Branch (172:22): [True: 434k, False: 0]
  ------------------
  173|   434k|    {
  174|       |      /* setup and init */
  175|   434k|      value_meminit (value, g_type);
  176|   434k|      value_table->value_init (value);
  177|   434k|    }
  178|      0|  else if (G_VALUE_TYPE (value))
  ------------------
  |  |   59|      0|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  |  |  ------------------
  |  |  |  Branch (59:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  179|      0|    g_warning ("%s: cannot initialize GValue with type '%s', the value has already been initialized as '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  180|      0|	       G_STRLOC,
  181|      0|	       g_type_name (g_type),
  182|      0|	       g_type_name (G_VALUE_TYPE (value)));
  183|      0|  else /* !G_TYPE_IS_VALUE (g_type) */
  184|      0|    g_warning ("%s: cannot initialize GValue with type '%s', %s",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (347:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  185|   434k|               G_STRLOC,
  186|   434k|               g_type_name (g_type),
  187|   434k|               value_table ? "this type is abstract with regards to GValue use, use a more specific (derived) type" : "this type has no GTypeValueTable implementation");
  188|   434k|  return value;
  189|   434k|}
g_value_copy:
  201|   434k|{
  202|   434k|  g_return_if_fail (src_value);
  ------------------
  |  |  630|   434k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   434k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   434k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   434k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   434k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   434k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   434k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   434k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 434k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   434k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   434k|   else                                         \
  |  |  |  |  |  | 1021|   434k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   434k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   434k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 434k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   434k|      { } \
  |  |  633|   434k|    else \
  |  |  634|   434k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   434k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   434k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 434k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  203|   434k|  g_return_if_fail (dest_value);
  ------------------
  |  |  630|   434k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   434k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   434k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   434k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   434k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   434k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   434k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   434k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 434k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   434k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   434k|   else                                         \
  |  |  |  |  |  | 1021|   434k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   434k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   434k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 434k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   434k|      { } \
  |  |  633|   434k|    else \
  |  |  634|   434k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   434k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   434k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 434k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  204|   434k|  g_return_if_fail (g_value_type_compatible (G_VALUE_TYPE (src_value), G_VALUE_TYPE (dest_value)));
  ------------------
  |  |  630|   434k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   434k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   434k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   434k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   434k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   434k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   434k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   434k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 434k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   434k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   434k|   else                                         \
  |  |  |  |  |  | 1021|   434k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   434k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   434k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 434k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   434k|      { } \
  |  |  633|   434k|    else \
  |  |  634|   434k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   434k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   434k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 434k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  205|       |  
  206|   434k|  if (src_value != dest_value)
  ------------------
  |  Branch (206:7): [True: 434k, False: 0]
  ------------------
  207|   434k|    {
  208|   434k|      GType dest_type = G_VALUE_TYPE (dest_value);
  ------------------
  |  |   59|   434k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  209|   434k|      GTypeValueTable *value_table = g_type_value_table_peek (dest_type);
  210|       |
  211|   434k|      g_return_if_fail (value_table);
  ------------------
  |  |  630|   434k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   434k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   434k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   434k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   434k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   434k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   434k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   434k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 434k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   434k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   434k|   else                                         \
  |  |  |  |  |  | 1021|   434k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   434k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   434k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 434k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   434k|      { } \
  |  |  633|   434k|    else \
  |  |  634|   434k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   434k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   434k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 434k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  212|       |
  213|       |      /* make sure dest_value's value is free()d */
  214|   434k|      if (value_table->value_free)
  ------------------
  |  Branch (214:11): [True: 434k, False: 832]
  ------------------
  215|   434k|	value_table->value_free (dest_value);
  216|       |
  217|       |      /* setup and copy */
  218|   434k|      value_meminit (dest_value, dest_type);
  219|   434k|      value_table->value_copy (src_value, dest_value);
  220|   434k|    }
  221|   434k|}
g_value_reset:
  234|      6|{
  235|      6|  GTypeValueTable *value_table;
  236|      6|  GType g_type;
  237|       |
  238|      6|  g_return_val_if_fail (value, NULL);
  ------------------
  |  |  643|      6|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      6|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      6|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      6|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      6| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      6|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      6|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      6|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 6, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      6|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      6|   else                                         \
  |  |  |  |  |  | 1021|      6|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      6|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      6|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      6|      { } \
  |  |  646|      6|    else \
  |  |  647|      6|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      6|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      6|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  239|      6|  g_type = G_VALUE_TYPE (value);
  ------------------
  |  |   59|      6|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  240|       |
  241|      6|  value_table = g_type_value_table_peek (g_type);
  242|      6|  g_return_val_if_fail (value_table, NULL);
  ------------------
  |  |  643|      6|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      6|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      6|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      6|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      6| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      6|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      6|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      6|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 6, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      6|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      6|   else                                         \
  |  |  |  |  |  | 1021|      6|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      6|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      6|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      6|      { } \
  |  |  646|      6|    else \
  |  |  647|      6|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      6|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      6|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  243|       |
  244|       |  /* make sure value's value is free()d */
  245|      6|  if (value_table->value_free)
  ------------------
  |  Branch (245:7): [True: 5, False: 1]
  ------------------
  246|      5|    value_table->value_free (value);
  247|       |
  248|       |  /* setup and init */
  249|      6|  value_meminit (value, g_type);
  250|      6|  value_table->value_init (value);
  251|       |
  252|      6|  return value;
  253|      6|}
g_value_unset:
  266|   437k|{
  267|   437k|  GTypeValueTable *value_table;
  268|       |  
  269|   437k|  if (value->g_type == 0)
  ------------------
  |  Branch (269:7): [True: 0, False: 437k]
  ------------------
  270|      0|    return;
  271|       |
  272|   437k|  g_return_if_fail (value);
  ------------------
  |  |  630|   437k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   437k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   437k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   437k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   437k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   437k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   437k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   437k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 437k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   437k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   437k|   else                                         \
  |  |  |  |  |  | 1021|   437k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   437k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   437k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 437k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   437k|      { } \
  |  |  633|   437k|    else \
  |  |  634|   437k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   437k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   437k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 437k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  273|       |
  274|   437k|  value_table = g_type_value_table_peek (G_VALUE_TYPE (value));
  ------------------
  |  |   59|   437k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  275|   437k|  g_return_if_fail (value_table);
  ------------------
  |  |  630|   437k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   437k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   437k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   437k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   437k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   437k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   437k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   437k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 437k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   437k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   437k|   else                                         \
  |  |  |  |  |  | 1021|   437k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   437k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   437k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 437k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   437k|      { } \
  |  |  633|   437k|    else \
  |  |  634|   437k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   437k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   437k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 437k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  276|       |
  277|   437k|  if (value_table->value_free)
  ------------------
  |  Branch (277:7): [True: 436k, False: 832]
  ------------------
  278|   436k|    value_table->value_free (value);
  279|   437k|  memset (value, 0, sizeof (*value));
  280|   437k|}
g_value_peek_pointer:
  316|  4.11k|{
  317|  4.11k|  GTypeValueTable *value_table;
  318|       |
  319|  4.11k|  g_return_val_if_fail (value, NULL);
  ------------------
  |  |  643|  4.11k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  4.11k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  4.11k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  4.11k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  4.11k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  4.11k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  4.11k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  4.11k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4.11k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  4.11k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  4.11k|   else                                         \
  |  |  |  |  |  | 1021|  4.11k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  4.11k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  4.11k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4.11k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  4.11k|      { } \
  |  |  646|  4.11k|    else \
  |  |  647|  4.11k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  4.11k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  4.11k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4.11k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  320|       |
  321|  4.11k|  value_table = g_type_value_table_peek (G_VALUE_TYPE (value));
  ------------------
  |  |   59|  4.11k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  322|  4.11k|  g_return_val_if_fail (value_table, NULL);
  ------------------
  |  |  643|  4.11k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  4.11k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  4.11k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  4.11k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  4.11k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  4.11k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  4.11k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  4.11k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4.11k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  4.11k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  4.11k|   else                                         \
  |  |  |  |  |  | 1021|  4.11k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  4.11k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  4.11k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4.11k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  4.11k|      { } \
  |  |  646|  4.11k|    else \
  |  |  647|  4.11k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  4.11k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  4.11k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4.11k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  323|       |
  324|  4.11k|  if (!value_table->value_peek_pointer)
  ------------------
  |  Branch (324:7): [True: 0, False: 4.11k]
  ------------------
  325|      0|    {
  326|      0|      g_return_val_if_fail (g_value_fits_pointer (value) == TRUE, NULL);
  ------------------
  |  |  643|      0|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      0|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      0|      { } \
  |  |  646|      0|    else \
  |  |  647|      0|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      0|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  327|      0|      return NULL;
  328|      0|    }
  329|       |
  330|  4.11k|  return value_table->value_peek_pointer (value);
  331|  4.11k|}
g_value_init_from_instance:
  404|  1.37k|{
  405|  1.37k|  g_return_if_fail (value != NULL && G_VALUE_TYPE(value) == 0);
  ------------------
  |  |  630|  1.37k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.37k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.37k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.37k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.37k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.37k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.37k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  4.11k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.37k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.37k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.37k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.37k|   else                                         \
  |  |  |  |  |  | 1021|  1.37k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.37k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.37k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.37k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.37k|      { } \
  |  |  633|  1.37k|    else \
  |  |  634|  1.37k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  1.37k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.37k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.37k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  406|       |
  407|  1.37k|  if (G_IS_OBJECT (instance))
  ------------------
  |  |   71|  1.37k|#define G_IS_OBJECT(object)         (G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE ((object), G_TYPE_OBJECT))
  |  |  ------------------
  |  |  |  |  510|  1.37k|#define G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE(instance, g_type)            (_G_TYPE_CIFT ((instance), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2311|  1.37k|#define _G_TYPE_CIFT(ip, ft)            (g_type_check_instance_is_fundamentally_a ((GTypeInstance*) ip, ft))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (71:37): [True: 1.37k, False: 0]
  |  |  ------------------
  ------------------
  408|  1.37k|    {
  409|       |      /* Fast-path.
  410|       |       * If G_IS_OBJECT() succeeds we know:
  411|       |       * * that instance is present and valid
  412|       |       * * that it is a GObject, and therefore we can directly
  413|       |       *   use the collect implementation (g_object_ref) */
  414|  1.37k|      value_meminit (value, G_TYPE_FROM_INSTANCE (instance));
  ------------------
  |  |  602|  1.37k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|  1.37k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
  415|  1.37k|      value->data[0].v_pointer = g_object_ref (instance);
  ------------------
  |  |  523|  1.37k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
  416|  1.37k|    }
  417|      0|  else
  418|      0|    {  
  419|      0|      GType g_type;
  420|      0|      GTypeValueTable *value_table;
  421|      0|      GTypeCValue cvalue;
  422|      0|      gchar *error_msg;
  423|       |
  424|      0|      g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance));
  ------------------
  |  |  630|      0|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      0|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      0|      { } \
  |  |  633|      0|    else \
  |  |  634|      0|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      0|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  425|       |
  426|      0|      g_type = G_TYPE_FROM_INSTANCE (instance);
  ------------------
  |  |  602|      0|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|      0|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
  427|      0|      value_table = g_type_value_table_peek (g_type);
  428|      0|      g_return_if_fail (strcmp (value_table->collect_format, "p") == 0);
  ------------------
  |  |  630|      0|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      0|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      0|      { } \
  |  |  633|      0|    else \
  |  |  634|      0|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      0|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  429|       |
  430|      0|      memset (&cvalue, 0, sizeof (cvalue));
  431|      0|      cvalue.v_pointer = instance;
  432|       |
  433|       |      /* setup and collect */
  434|      0|      value_meminit (value, g_type);
  435|      0|      value_table->value_init (value);
  436|      0|      error_msg = value_table->collect_value (value, 1, &cvalue, 0);
  437|      0|      if (error_msg)
  ------------------
  |  Branch (437:11): [True: 0, False: 0]
  ------------------
  438|      0|        {
  439|      0|          g_warning ("%s: %s", G_STRLOC, error_msg);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  440|      0|          g_free (error_msg);
  441|       |
  442|       |          /* we purposely leak the value here, it might not be
  443|       |           * in a correct state if an error condition occurred
  444|       |           */
  445|      0|          value_meminit (value, g_type);
  446|      0|          value_table->value_init (value);
  447|      0|        }
  448|      0|    }
  449|  1.37k|}
g_value_register_transform_func:
  522|    340|{
  523|    340|  TransformEntry entry;
  524|       |
  525|       |  /* these checks won't pass for dynamic types.
  526|       |   * g_return_if_fail (G_TYPE_HAS_VALUE_TABLE (src_type));
  527|       |   * g_return_if_fail (G_TYPE_HAS_VALUE_TABLE (dest_type));
  528|       |   */
  529|    340|  g_return_if_fail (transform_func != NULL);
  ------------------
  |  |  630|    340|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    340|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    340|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    340|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    340| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    340|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    340|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    340|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 340, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    340|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    340|   else                                         \
  |  |  |  |  |  | 1021|    340|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    340|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    340|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 340, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    340|      { } \
  |  |  633|    340|    else \
  |  |  634|    340|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    340|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    340|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 340]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  530|       |
  531|    340|  entry.src_type = src_type;
  532|    340|  entry.dest_type = dest_type;
  533|       |
  534|       |#if 0 /* let transform function replacement be a valid operation */
  535|       |  if (g_bsearch_array_lookup (transform_array, &transform_bconfig, &entry))
  536|       |    g_warning ("reregistering value transformation function (%p) for '%s' to '%s'",
  537|       |	       transform_func,
  538|       |	       g_type_name (src_type),
  539|       |	       g_type_name (dest_type));
  540|       |#endif
  541|       |
  542|    340|  entry.func = transform_func;
  543|    340|  transform_array = g_bsearch_array_replace (transform_array, &transform_bconfig, &entry);
  544|    340|}
g_value_type_compatible:
  582|   871k|{
  583|   871k|  g_return_val_if_fail (src_type, FALSE);
  ------------------
  |  |  643|   871k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   871k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   871k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   871k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   871k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   871k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   871k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   871k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 871k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   871k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   871k|   else                                         \
  |  |  |  |  |  | 1021|   871k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   871k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   871k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 871k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   871k|      { } \
  |  |  646|   871k|    else \
  |  |  647|   871k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   871k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   871k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 871k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  584|   871k|  g_return_val_if_fail (dest_type, FALSE);
  ------------------
  |  |  643|   871k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   871k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   871k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   871k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   871k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   871k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   871k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   871k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 871k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   871k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   871k|   else                                         \
  |  |  |  |  |  | 1021|   871k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   871k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   871k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 871k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   871k|      { } \
  |  |  646|   871k|    else \
  |  |  647|   871k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   871k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   871k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 871k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  585|       |
  586|       |  /* Fast path */
  587|   871k|  if (src_type == dest_type)
  ------------------
  |  Branch (587:7): [True: 869k, False: 1.37k]
  ------------------
  588|   869k|    return TRUE;
  ------------------
  |  |  818|   869k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   869k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  589|       |
  590|  1.37k|  return (g_type_is_a (src_type, dest_type) &&
  ------------------
  |  Branch (590:11): [True: 1.37k, False: 0]
  ------------------
  591|  1.37k|	  g_type_value_table_peek (dest_type) == g_type_value_table_peek (src_type));
  ------------------
  |  Branch (591:4): [True: 1.37k, False: 0]
  ------------------
  592|   871k|}
g_value_transform:
  613|   434k|{
  614|   434k|  GType dest_type;
  615|       |
  616|   434k|  g_return_val_if_fail (src_value, FALSE);
  ------------------
  |  |  643|   434k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   434k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   434k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   434k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   434k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   434k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   434k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   434k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 434k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   434k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   434k|   else                                         \
  |  |  |  |  |  | 1021|   434k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   434k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   434k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 434k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   434k|      { } \
  |  |  646|   434k|    else \
  |  |  647|   434k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   434k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   434k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 434k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  617|   434k|  g_return_val_if_fail (dest_value, FALSE);
  ------------------
  |  |  643|   434k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   434k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   434k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   434k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   434k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   434k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   434k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   434k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 434k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   434k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   434k|   else                                         \
  |  |  |  |  |  | 1021|   434k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   434k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   434k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 434k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   434k|      { } \
  |  |  646|   434k|    else \
  |  |  647|   434k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   434k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   434k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 434k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  618|       |
  619|   434k|  dest_type = G_VALUE_TYPE (dest_value);
  ------------------
  |  |   59|   434k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  620|   434k|  if (g_value_type_compatible (G_VALUE_TYPE (src_value), dest_type))
  ------------------
  |  |   59|   434k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  |  Branch (620:7): [True: 434k, False: 0]
  ------------------
  621|   434k|    {
  622|   434k|      g_value_copy (src_value, dest_value);
  623|       |      
  624|   434k|      return TRUE;
  ------------------
  |  |  818|   434k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   434k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  625|   434k|    }
  626|      0|  else
  627|      0|    {
  628|      0|      GValueTransform transform = transform_func_lookup (G_VALUE_TYPE (src_value), dest_type);
  ------------------
  |  |   59|      0|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  629|       |
  630|      0|      if (transform)
  ------------------
  |  Branch (630:11): [True: 0, False: 0]
  ------------------
  631|      0|	{
  632|      0|	  g_value_unset (dest_value);
  633|       |	  
  634|       |	  /* setup and transform */
  635|      0|	  value_meminit (dest_value, dest_type);
  636|      0|	  transform (src_value, dest_value);
  637|       |	  
  638|      0|	  return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  639|      0|	}
  640|      0|    }
  641|      0|  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  642|   434k|}
gvalue.c:transform_entries_cmp:
  496|  4.02k|{
  497|  4.02k|  const TransformEntry *e1 = bsearch_node1;
  498|  4.02k|  const TransformEntry *e2 = bsearch_node2;
  499|  4.02k|  gint cmp = G_BSEARCH_ARRAY_CMP (e1->src_type, e2->src_type);
  ------------------
  |  |   34|  4.02k|#define G_BSEARCH_ARRAY_CMP(v1,v2) ((v1) > (v2) ? +1 : (v1) == (v2) ? 0 : -1)
  |  |  ------------------
  |  |  |  Branch (34:37): [True: 1.78k, False: 2.24k]
  |  |  |  Branch (34:56): [True: 1.32k, False: 924]
  |  |  ------------------
  ------------------
  500|       |
  501|  4.02k|  if (cmp)
  ------------------
  |  Branch (501:7): [True: 2.70k, False: 1.32k]
  ------------------
  502|  2.70k|    return cmp;
  503|  1.32k|  else
  504|  1.32k|    return G_BSEARCH_ARRAY_CMP (e1->dest_type, e2->dest_type);
  ------------------
  |  |   34|  1.32k|#define G_BSEARCH_ARRAY_CMP(v1,v2) ((v1) > (v2) ? +1 : (v1) == (v2) ? 0 : -1)
  |  |  ------------------
  |  |  |  Branch (34:37): [True: 1.32k, False: 0]
  |  |  |  Branch (34:56): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  505|  4.02k|}
gvalue.c:value_meminit:
  147|   871k|{
  148|   871k|  value->g_type = value_type;
  149|   871k|  memset (value->data, 0, sizeof (value->data));
  150|   871k|}

_g_value_transforms_init:
  236|      2|{
  237|       |  /* some transformations are a bit questionable,
  238|       |   * we currently skip those
  239|       |   */
  240|      2|#define SKIP____register_transform_func(type1,type2,transform_func)     /* skip questionable transforms */ \
  241|      2|  (void)0
  242|       |  
  243|       |  /* numeric types (plus to string) */
  244|      2|  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_CHAR,            value_transform_int_int);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_CHAR,            value_transform_int_int);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_CHAR,            value_transform_int_int);
  ------------------
  |  |   35|      2|#define value_transform_int_int         value_transform_memcpy_data0
  ------------------
  245|      2|  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_UCHAR,           value_transform_int_u8);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_UCHAR,           value_transform_int_u8);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  246|      2|  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_BOOLEAN,         value_transform_int_bool);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_BOOLEAN,         value_transform_int_bool);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  247|      2|  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_INT,             value_transform_int_int);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_INT,             value_transform_int_int);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_INT,             value_transform_int_int);
  ------------------
  |  |   35|      2|#define value_transform_int_int         value_transform_memcpy_data0
  ------------------
  248|      2|  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_UINT,            value_transform_int_uint);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_UINT,            value_transform_int_uint);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  249|      2|  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_LONG,            value_transform_int_long);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_LONG,            value_transform_int_long);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|      2|  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_ULONG,           value_transform_int_ulong);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_ULONG,           value_transform_int_ulong);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  251|      2|  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_INT64,           value_transform_int_int64);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_INT64,           value_transform_int_int64);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  252|      2|  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_UINT64,          value_transform_int_uint64);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_UINT64,          value_transform_int_uint64);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  253|      2|  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_ENUM,            value_transform_int_long);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_ENUM,            value_transform_int_long);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  254|      2|  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_FLAGS,           value_transform_int_ulong);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_FLAGS,           value_transform_int_ulong);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  255|      2|  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_FLOAT,           value_transform_int_float);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_FLOAT,           value_transform_int_float);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  256|      2|  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_DOUBLE,          value_transform_int_double);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_DOUBLE,          value_transform_int_double);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  257|      2|  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_STRING,          value_transform_int_string);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_STRING,          value_transform_int_string);
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  258|      2|  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_CHAR,            value_transform_uint_s8);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_CHAR,            value_transform_uint_s8);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  259|      2|  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_UCHAR,           value_transform_uint_uint);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_UCHAR,           value_transform_uint_uint);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_UCHAR,           value_transform_uint_uint);
  ------------------
  |  |   36|      2|#define value_transform_uint_uint       value_transform_memcpy_data0
  ------------------
  260|      2|  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_BOOLEAN,         value_transform_uint_bool);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_BOOLEAN,         value_transform_uint_bool);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  261|      2|  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_INT,             value_transform_uint_int);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_INT,             value_transform_uint_int);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  262|      2|  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_UINT,            value_transform_uint_uint);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_UINT,            value_transform_uint_uint);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_UINT,            value_transform_uint_uint);
  ------------------
  |  |   36|      2|#define value_transform_uint_uint       value_transform_memcpy_data0
  ------------------
  263|      2|  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_LONG,            value_transform_uint_long);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_LONG,            value_transform_uint_long);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  264|      2|  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_ULONG,           value_transform_uint_ulong);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_ULONG,           value_transform_uint_ulong);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  265|      2|  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_INT64,           value_transform_uint_int64);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_INT64,           value_transform_uint_int64);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  266|      2|  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_UINT64,          value_transform_uint_uint64);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_UINT64,          value_transform_uint_uint64);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  267|      2|  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_ENUM,            value_transform_uint_long);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_ENUM,            value_transform_uint_long);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  268|      2|  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_FLAGS,           value_transform_uint_ulong);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_FLAGS,           value_transform_uint_ulong);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  269|      2|  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_FLOAT,           value_transform_uint_float);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_FLOAT,           value_transform_uint_float);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  270|      2|  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_DOUBLE,          value_transform_uint_double);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_DOUBLE,          value_transform_uint_double);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  271|      2|  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_STRING,          value_transform_uint_string);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_STRING,          value_transform_uint_string);
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  272|      2|  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_CHAR,            value_transform_int_s8);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_CHAR,            value_transform_int_s8);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  273|      2|  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_UCHAR,           value_transform_int_u8);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_UCHAR,           value_transform_int_u8);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  274|      2|  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_BOOLEAN,         value_transform_int_int);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_BOOLEAN,         value_transform_int_int);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_BOOLEAN,         value_transform_int_int);
  ------------------
  |  |   35|      2|#define value_transform_int_int         value_transform_memcpy_data0
  ------------------
  275|      2|  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_INT,             value_transform_int_int);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_INT,             value_transform_int_int);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_INT,             value_transform_int_int);
  ------------------
  |  |   35|      2|#define value_transform_int_int         value_transform_memcpy_data0
  ------------------
  276|      2|  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_UINT,            value_transform_int_uint);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_UINT,            value_transform_int_uint);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  277|      2|  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_LONG,            value_transform_int_long);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_LONG,            value_transform_int_long);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  278|      2|  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_ULONG,           value_transform_int_ulong);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_ULONG,           value_transform_int_ulong);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  279|      2|  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_INT64,           value_transform_int_int64);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_INT64,           value_transform_int_int64);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  280|      2|  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_UINT64,          value_transform_int_uint64);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_UINT64,          value_transform_int_uint64);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  281|      2|  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_ENUM,            value_transform_int_long);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_ENUM,            value_transform_int_long);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  282|      2|  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_FLAGS,           value_transform_int_ulong);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_FLAGS,           value_transform_int_ulong);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  283|      2|  SKIP____register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_FLOAT,           value_transform_int_float);
  ------------------
  |  |  241|      2|  (void)0
  ------------------
  284|      2|  SKIP____register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_DOUBLE,          value_transform_int_double);
  ------------------
  |  |  241|      2|  (void)0
  ------------------
  285|      2|  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_STRING,          value_transform_bool_string);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_STRING,          value_transform_bool_string);
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  286|      2|  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_CHAR,            value_transform_int_s8);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT,          G_TYPE_CHAR,            value_transform_int_s8);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  287|      2|  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_UCHAR,           value_transform_int_u8);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT,          G_TYPE_UCHAR,           value_transform_int_u8);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  288|      2|  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_BOOLEAN,         value_transform_int_bool);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT,          G_TYPE_BOOLEAN,         value_transform_int_bool);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  289|      2|  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_INT,             value_transform_int_int);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT,          G_TYPE_INT,             value_transform_int_int);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT,          G_TYPE_INT,             value_transform_int_int);
  ------------------
  |  |   35|      2|#define value_transform_int_int         value_transform_memcpy_data0
  ------------------
  290|      2|  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_UINT,            value_transform_int_uint);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT,          G_TYPE_UINT,            value_transform_int_uint);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  291|      2|  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_LONG,            value_transform_int_long);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT,          G_TYPE_LONG,            value_transform_int_long);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  292|      2|  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_ULONG,           value_transform_int_ulong);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT,          G_TYPE_ULONG,           value_transform_int_ulong);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  293|      2|  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_INT64,           value_transform_int_int64);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT,          G_TYPE_INT64,           value_transform_int_int64);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  294|      2|  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_UINT64,          value_transform_int_uint64);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT,          G_TYPE_UINT64,          value_transform_int_uint64);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  295|      2|  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_ENUM,            value_transform_int_long);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT,          G_TYPE_ENUM,            value_transform_int_long);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  296|      2|  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_FLAGS,           value_transform_int_ulong);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT,          G_TYPE_FLAGS,           value_transform_int_ulong);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  297|      2|  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_FLOAT,           value_transform_int_float);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT,          G_TYPE_FLOAT,           value_transform_int_float);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  298|      2|  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_DOUBLE,          value_transform_int_double);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT,          G_TYPE_DOUBLE,          value_transform_int_double);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  299|      2|  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_STRING,          value_transform_int_string);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT,          G_TYPE_STRING,          value_transform_int_string);
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  300|      2|  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_CHAR,            value_transform_uint_s8);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_CHAR,            value_transform_uint_s8);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  301|      2|  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_UCHAR,           value_transform_uint_u8);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_UCHAR,           value_transform_uint_u8);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  302|      2|  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_BOOLEAN,         value_transform_uint_bool);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_BOOLEAN,         value_transform_uint_bool);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  303|      2|  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_INT,             value_transform_uint_int);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_INT,             value_transform_uint_int);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  304|      2|  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_UINT,            value_transform_uint_uint);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_UINT,            value_transform_uint_uint);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_UINT,            value_transform_uint_uint);
  ------------------
  |  |   36|      2|#define value_transform_uint_uint       value_transform_memcpy_data0
  ------------------
  305|      2|  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_LONG,            value_transform_uint_long);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_LONG,            value_transform_uint_long);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  306|      2|  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_ULONG,           value_transform_uint_ulong);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_ULONG,           value_transform_uint_ulong);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  307|      2|  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_INT64,           value_transform_uint_int64);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_INT64,           value_transform_uint_int64);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  308|      2|  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_UINT64,          value_transform_uint_uint64);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_UINT64,          value_transform_uint_uint64);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  309|      2|  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_ENUM,            value_transform_uint_long);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_ENUM,            value_transform_uint_long);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  310|      2|  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_FLAGS,           value_transform_uint_ulong);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_FLAGS,           value_transform_uint_ulong);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  311|      2|  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_FLOAT,           value_transform_uint_float);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_FLOAT,           value_transform_uint_float);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  312|      2|  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_DOUBLE,          value_transform_uint_double);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_DOUBLE,          value_transform_uint_double);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  313|      2|  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_STRING,          value_transform_uint_string);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_STRING,          value_transform_uint_string);
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  314|      2|  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_CHAR,            value_transform_long_s8);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_CHAR,            value_transform_long_s8);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  315|      2|  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_UCHAR,           value_transform_long_u8);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_UCHAR,           value_transform_long_u8);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  316|      2|  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_BOOLEAN,         value_transform_long_bool);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_BOOLEAN,         value_transform_long_bool);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  317|      2|  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_INT,             value_transform_long_int);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_INT,             value_transform_long_int);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  318|      2|  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_UINT,            value_transform_long_uint);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_UINT,            value_transform_long_uint);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  319|      2|  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_LONG,            value_transform_long_long);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_LONG,            value_transform_long_long);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_LONG,            value_transform_long_long);
  ------------------
  |  |   37|      2|#define value_transform_long_long       value_transform_memcpy_data0
  ------------------
  320|      2|  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_ULONG,           value_transform_long_ulong);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_ULONG,           value_transform_long_ulong);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  321|      2|  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_INT64,           value_transform_long_int64);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_INT64,           value_transform_long_int64);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  322|      2|  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_UINT64,          value_transform_long_uint64);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_UINT64,          value_transform_long_uint64);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  323|      2|  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_ENUM,            value_transform_long_long);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_ENUM,            value_transform_long_long);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_ENUM,            value_transform_long_long);
  ------------------
  |  |   37|      2|#define value_transform_long_long       value_transform_memcpy_data0
  ------------------
  324|      2|  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_FLAGS,           value_transform_long_ulong);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_FLAGS,           value_transform_long_ulong);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  325|      2|  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_FLOAT,           value_transform_long_float);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_FLOAT,           value_transform_long_float);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  326|      2|  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_DOUBLE,          value_transform_long_double);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_DOUBLE,          value_transform_long_double);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  327|      2|  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_STRING,          value_transform_long_string);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_STRING,          value_transform_long_string);
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  328|      2|  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_CHAR,            value_transform_ulong_s8);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_CHAR,            value_transform_ulong_s8);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  329|      2|  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_UCHAR,           value_transform_ulong_u8);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_UCHAR,           value_transform_ulong_u8);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  330|      2|  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_BOOLEAN,         value_transform_ulong_bool);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_BOOLEAN,         value_transform_ulong_bool);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  331|      2|  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_INT,             value_transform_ulong_int);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_INT,             value_transform_ulong_int);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  332|      2|  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_UINT,            value_transform_ulong_uint);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_UINT,            value_transform_ulong_uint);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  333|      2|  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_LONG,            value_transform_ulong_long);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_LONG,            value_transform_ulong_long);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  334|      2|  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_ULONG,           value_transform_ulong_ulong);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_ULONG,           value_transform_ulong_ulong);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_ULONG,           value_transform_ulong_ulong);
  ------------------
  |  |   38|      2|#define value_transform_ulong_ulong     value_transform_memcpy_data0
  ------------------
  335|      2|  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_INT64,           value_transform_ulong_int64);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_INT64,           value_transform_ulong_int64);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  336|      2|  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_UINT64,          value_transform_ulong_uint64);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_UINT64,          value_transform_ulong_uint64);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  337|      2|  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_ENUM,            value_transform_ulong_long);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_ENUM,            value_transform_ulong_long);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  338|      2|  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_FLAGS,           value_transform_ulong_ulong);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_FLAGS,           value_transform_ulong_ulong);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_FLAGS,           value_transform_ulong_ulong);
  ------------------
  |  |   38|      2|#define value_transform_ulong_ulong     value_transform_memcpy_data0
  ------------------
  339|      2|  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_FLOAT,           value_transform_ulong_float);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_FLOAT,           value_transform_ulong_float);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  340|      2|  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_DOUBLE,          value_transform_ulong_double);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_DOUBLE,          value_transform_ulong_double);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  341|      2|  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_STRING,          value_transform_ulong_string);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_STRING,          value_transform_ulong_string);
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  342|      2|  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_CHAR,            value_transform_int64_s8);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_CHAR,            value_transform_int64_s8);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  343|      2|  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_UCHAR,           value_transform_int64_u8);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_UCHAR,           value_transform_int64_u8);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  344|      2|  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_BOOLEAN,         value_transform_int64_bool);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_BOOLEAN,         value_transform_int64_bool);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  345|      2|  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_INT,             value_transform_int64_int);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_INT,             value_transform_int64_int);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  346|      2|  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_UINT,            value_transform_int64_uint);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_UINT,            value_transform_int64_uint);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  347|      2|  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_LONG,            value_transform_int64_long);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_LONG,            value_transform_int64_long);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  348|      2|  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_ULONG,           value_transform_int64_ulong);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_ULONG,           value_transform_int64_ulong);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  349|      2|  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_INT64,           value_transform_int64_int64);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_INT64,           value_transform_int64_int64);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_INT64,           value_transform_int64_int64);
  ------------------
  |  |   39|      2|#define value_transform_int64_int64     value_transform_memcpy_data0
  ------------------
  350|      2|  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_UINT64,          value_transform_int64_uint64);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_UINT64,          value_transform_int64_uint64);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  351|      2|  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_ENUM,            value_transform_int64_long);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_ENUM,            value_transform_int64_long);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  352|      2|  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_FLAGS,           value_transform_int64_ulong);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_FLAGS,           value_transform_int64_ulong);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  353|      2|  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_FLOAT,           value_transform_int64_float);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_FLOAT,           value_transform_int64_float);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  354|      2|  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_DOUBLE,          value_transform_int64_double);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_DOUBLE,          value_transform_int64_double);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  355|      2|  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_STRING,          value_transform_int64_string);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_STRING,          value_transform_int64_string);
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  356|      2|  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_CHAR,            value_transform_uint64_s8);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_CHAR,            value_transform_uint64_s8);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  357|      2|  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_UCHAR,           value_transform_uint64_u8);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_UCHAR,           value_transform_uint64_u8);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  358|      2|  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_BOOLEAN,         value_transform_uint64_bool);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_BOOLEAN,         value_transform_uint64_bool);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  359|      2|  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_INT,             value_transform_uint64_int);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_INT,             value_transform_uint64_int);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  360|      2|  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_UINT,            value_transform_uint64_uint);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_UINT,            value_transform_uint64_uint);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  361|      2|  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_LONG,            value_transform_uint64_long);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_LONG,            value_transform_uint64_long);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  362|      2|  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_ULONG,           value_transform_uint64_ulong);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_ULONG,           value_transform_uint64_ulong);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  363|      2|  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_INT64,           value_transform_uint64_int64);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_INT64,           value_transform_uint64_int64);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  364|      2|  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_UINT64,          value_transform_uint64_uint64);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_UINT64,          value_transform_uint64_uint64);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_UINT64,          value_transform_uint64_uint64);
  ------------------
  |  |   40|      2|#define value_transform_uint64_uint64   value_transform_memcpy_data0
  ------------------
  365|      2|  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_ENUM,            value_transform_uint64_long);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_ENUM,            value_transform_uint64_long);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  366|      2|  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_FLAGS,           value_transform_uint64_ulong);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_FLAGS,           value_transform_uint64_ulong);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  367|      2|  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_FLOAT,           value_transform_uint64_float);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_FLOAT,           value_transform_uint64_float);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  368|      2|  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_DOUBLE,          value_transform_uint64_double);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_DOUBLE,          value_transform_uint64_double);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      2|  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_STRING,          value_transform_uint64_string);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_STRING,          value_transform_uint64_string);
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  370|      2|  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_CHAR,            value_transform_long_s8);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_CHAR,            value_transform_long_s8);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  371|      2|  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_UCHAR,           value_transform_long_u8);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_UCHAR,           value_transform_long_u8);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  372|      2|  SKIP____register_transform_func (G_TYPE_ENUM,         G_TYPE_BOOLEAN,         value_transform_long_bool);
  ------------------
  |  |  241|      2|  (void)0
  ------------------
  373|      2|  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_INT,             value_transform_long_int);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_INT,             value_transform_long_int);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  374|      2|  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_UINT,            value_transform_long_uint);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_UINT,            value_transform_long_uint);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  375|      2|  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_LONG,            value_transform_long_long);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_LONG,            value_transform_long_long);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_LONG,            value_transform_long_long);
  ------------------
  |  |   37|      2|#define value_transform_long_long       value_transform_memcpy_data0
  ------------------
  376|      2|  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_ULONG,           value_transform_long_ulong);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_ULONG,           value_transform_long_ulong);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  377|      2|  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_INT64,           value_transform_long_int64);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_INT64,           value_transform_long_int64);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  378|      2|  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_UINT64,          value_transform_long_uint64);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_UINT64,          value_transform_long_uint64);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  379|      2|  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_ENUM,            value_transform_long_long);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_ENUM,            value_transform_long_long);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_ENUM,            value_transform_long_long);
  ------------------
  |  |   37|      2|#define value_transform_long_long       value_transform_memcpy_data0
  ------------------
  380|      2|  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_FLAGS,           value_transform_long_ulong);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_FLAGS,           value_transform_long_ulong);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  381|      2|  SKIP____register_transform_func (G_TYPE_ENUM,         G_TYPE_FLOAT,           value_transform_long_float);
  ------------------
  |  |  241|      2|  (void)0
  ------------------
  382|      2|  SKIP____register_transform_func (G_TYPE_ENUM,         G_TYPE_DOUBLE,          value_transform_long_double);
  ------------------
  |  |  241|      2|  (void)0
  ------------------
  383|      2|  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_STRING,          value_transform_enum_string);
  ------------------
  |  |  130|      2|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_STRING,          value_transform_enum_string);
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  384|      2|  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_CHAR,            value_transform_ulong_s8);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_CHAR,            value_transform_ulong_s8);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  385|      2|  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_UCHAR,           value_transform_ulong_u8);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_UCHAR,           value_transform_ulong_u8);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  386|      2|  SKIP____register_transform_func (G_TYPE_FLAGS,        G_TYPE_BOOLEAN,         value_transform_ulong_bool);
  ------------------
  |  |  241|      2|  (void)0
  ------------------
  387|      2|  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_INT,             value_transform_ulong_int);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_INT,             value_transform_ulong_int);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  388|      2|  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_UINT,            value_transform_ulong_uint);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_UINT,            value_transform_ulong_uint);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  389|      2|  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_LONG,            value_transform_ulong_long);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_LONG,            value_transform_ulong_long);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  390|      2|  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_ULONG,           value_transform_ulong_ulong);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_ULONG,           value_transform_ulong_ulong);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_ULONG,           value_transform_ulong_ulong);
  ------------------
  |  |   38|      2|#define value_transform_ulong_ulong     value_transform_memcpy_data0
  ------------------
  391|      2|  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_INT64,           value_transform_ulong_int64);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_INT64,           value_transform_ulong_int64);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  392|      2|  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_UINT64,          value_transform_ulong_uint64);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_UINT64,          value_transform_ulong_uint64);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  393|      2|  SKIP____register_transform_func (G_TYPE_FLAGS,        G_TYPE_ENUM,            value_transform_ulong_long);
  ------------------
  |  |  241|      2|  (void)0
  ------------------
  394|      2|  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_FLAGS,           value_transform_ulong_ulong);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_FLAGS,           value_transform_ulong_ulong);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_FLAGS,           value_transform_ulong_ulong);
  ------------------
  |  |   38|      2|#define value_transform_ulong_ulong     value_transform_memcpy_data0
  ------------------
  395|      2|  SKIP____register_transform_func (G_TYPE_FLAGS,        G_TYPE_FLOAT,           value_transform_ulong_float);
  ------------------
  |  |  241|      2|  (void)0
  ------------------
  396|      2|  SKIP____register_transform_func (G_TYPE_FLAGS,        G_TYPE_DOUBLE,          value_transform_ulong_double);
  ------------------
  |  |  241|      2|  (void)0
  ------------------
  397|      2|  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_STRING,          value_transform_flags_string);
  ------------------
  |  |  136|      2|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_STRING,          value_transform_flags_string);
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  398|      2|  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_CHAR,            value_transform_float_s8);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_CHAR,            value_transform_float_s8);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  399|      2|  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_UCHAR,           value_transform_float_u8);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_UCHAR,           value_transform_float_u8);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  400|      2|  SKIP____register_transform_func (G_TYPE_FLOAT,        G_TYPE_BOOLEAN,         value_transform_float_bool);
  ------------------
  |  |  241|      2|  (void)0
  ------------------
  401|      2|  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_INT,             value_transform_float_int);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_INT,             value_transform_float_int);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  402|      2|  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_UINT,            value_transform_float_uint);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_UINT,            value_transform_float_uint);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  403|      2|  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_LONG,            value_transform_float_long);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_LONG,            value_transform_float_long);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  404|      2|  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_ULONG,           value_transform_float_ulong);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_ULONG,           value_transform_float_ulong);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  405|      2|  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_INT64,           value_transform_float_int64);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_INT64,           value_transform_float_int64);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  406|      2|  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_UINT64,          value_transform_float_uint64);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_UINT64,          value_transform_float_uint64);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  407|      2|  SKIP____register_transform_func (G_TYPE_FLOAT,        G_TYPE_ENUM,            value_transform_float_long);
  ------------------
  |  |  241|      2|  (void)0
  ------------------
  408|      2|  SKIP____register_transform_func (G_TYPE_FLOAT,        G_TYPE_FLAGS,           value_transform_float_ulong);
  ------------------
  |  |  241|      2|  (void)0
  ------------------
  409|      2|  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_FLOAT,           value_transform_float_float);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_FLOAT,           value_transform_float_float);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_FLOAT,           value_transform_float_float);
  ------------------
  |  |   41|      2|#define value_transform_float_float     value_transform_memcpy_data0
  ------------------
  410|      2|  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_DOUBLE,          value_transform_float_double);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_DOUBLE,          value_transform_float_double);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  411|      2|  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_STRING,          value_transform_float_string);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_STRING,          value_transform_float_string);
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  412|      2|  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_CHAR,            value_transform_double_s8);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_CHAR,            value_transform_double_s8);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  413|      2|  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_UCHAR,           value_transform_double_u8);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_UCHAR,           value_transform_double_u8);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  414|      2|  SKIP____register_transform_func (G_TYPE_DOUBLE,       G_TYPE_BOOLEAN,         value_transform_double_bool);
  ------------------
  |  |  241|      2|  (void)0
  ------------------
  415|      2|  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_INT,             value_transform_double_int);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_INT,             value_transform_double_int);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  416|      2|  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_UINT,            value_transform_double_uint);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_UINT,            value_transform_double_uint);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  417|      2|  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_LONG,            value_transform_double_long);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_LONG,            value_transform_double_long);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  418|      2|  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_ULONG,           value_transform_double_ulong);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_ULONG,           value_transform_double_ulong);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  419|      2|  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_INT64,           value_transform_double_int64);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_INT64,           value_transform_double_int64);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  420|      2|  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_UINT64,          value_transform_double_uint64);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_UINT64,          value_transform_double_uint64);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  421|      2|  SKIP____register_transform_func (G_TYPE_DOUBLE,       G_TYPE_ENUM,            value_transform_double_long);
  ------------------
  |  |  241|      2|  (void)0
  ------------------
  422|      2|  SKIP____register_transform_func (G_TYPE_DOUBLE,       G_TYPE_FLAGS,           value_transform_double_ulong);
  ------------------
  |  |  241|      2|  (void)0
  ------------------
  423|      2|  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_FLOAT,           value_transform_double_float);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_FLOAT,           value_transform_double_float);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  424|      2|  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_DOUBLE,          value_transform_double_double);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_DOUBLE,          value_transform_double_double);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_DOUBLE,          value_transform_double_double);
  ------------------
  |  |   42|      2|#define value_transform_double_double   value_transform_memcpy_data0
  ------------------
  425|      2|  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_STRING,          value_transform_double_string);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_STRING,          value_transform_double_string);
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  426|       |  /* string types */
  427|      2|  g_value_register_transform_func (G_TYPE_STRING,       G_TYPE_STRING,          value_transform_string_string);
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                g_value_register_transform_func (G_TYPE_STRING,       G_TYPE_STRING,          value_transform_string_string);
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  428|      2|}

_g_value_types_init:
  423|      2|{
  424|      2|  GTypeInfo info = {
  425|      2|    0,				/* class_size */
  426|      2|    NULL,			/* base_init */
  427|      2|    NULL,			/* base_destroy */
  428|      2|    NULL,			/* class_init */
  429|      2|    NULL,			/* class_destroy */
  430|      2|    NULL,			/* class_data */
  431|      2|    0,				/* instance_size */
  432|      2|    0,				/* n_preallocs */
  433|      2|    NULL,			/* instance_init */
  434|      2|    NULL,			/* value_table */
  435|      2|  };
  436|      2|  const GTypeFundamentalInfo finfo = { G_TYPE_FLAG_DERIVABLE, };
  437|      2|  GType type G_GNUC_UNUSED  /* when compiling with G_DISABLE_ASSERT */;
  438|       |  
  439|       |  /* G_TYPE_CHAR / G_TYPE_UCHAR
  440|       |   */
  441|      2|  {
  442|      2|    static const GTypeValueTable value_table = {
  443|      2|      value_init_long0,		/* value_init */
  444|      2|      NULL,			/* value_free */
  445|      2|      value_copy_long0,		/* value_copy */
  446|      2|      NULL,			/* value_peek_pointer */
  447|      2|      "i",			/* collect_format */
  448|      2|      value_collect_int,	/* collect_value */
  449|      2|      "p",			/* lcopy_format */
  450|      2|      value_lcopy_char,		/* lcopy_value */
  451|      2|    };
  452|      2|    info.value_table = &value_table;
  453|      2|    type = g_type_register_fundamental (G_TYPE_CHAR, g_intern_static_string ("gchar"), &info, &finfo, 0);
  ------------------
  |  |   76|      2|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  454|      2|    g_assert (type == G_TYPE_CHAR);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  455|      2|    type = g_type_register_fundamental (G_TYPE_UCHAR, g_intern_static_string ("guchar"), &info, &finfo, 0);
  ------------------
  |  |   82|      2|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  456|      2|    g_assert (type == G_TYPE_UCHAR);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  457|      2|  }
  458|       |
  459|       |  /* G_TYPE_BOOLEAN
  460|       |   */
  461|      2|  {
  462|      2|    static const GTypeValueTable value_table = {
  463|      2|      value_init_long0,		 /* value_init */
  464|      2|      NULL,			 /* value_free */
  465|      2|      value_copy_long0,		 /* value_copy */
  466|      2|      NULL,                      /* value_peek_pointer */
  467|      2|      "i",			 /* collect_format */
  468|      2|      value_collect_int,	 /* collect_value */
  469|      2|      "p",			 /* lcopy_format */
  470|      2|      value_lcopy_boolean,	 /* lcopy_value */
  471|      2|    };
  472|      2|    info.value_table = &value_table;
  473|      2|    type = g_type_register_fundamental (G_TYPE_BOOLEAN, g_intern_static_string ("gboolean"), &info, &finfo, 0);
  ------------------
  |  |   88|      2|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  474|      2|    g_assert (type == G_TYPE_BOOLEAN);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  475|      2|  }
  476|       |  
  477|       |  /* G_TYPE_INT / G_TYPE_UINT
  478|       |   */
  479|      2|  {
  480|      2|    static const GTypeValueTable value_table = {
  481|      2|      value_init_long0,		/* value_init */
  482|      2|      NULL,			/* value_free */
  483|      2|      value_copy_long0,		/* value_copy */
  484|      2|      NULL,                     /* value_peek_pointer */
  485|      2|      "i",			/* collect_format */
  486|      2|      value_collect_int,	/* collect_value */
  487|      2|      "p",			/* lcopy_format */
  488|      2|      value_lcopy_int,		/* lcopy_value */
  489|      2|    };
  490|      2|    info.value_table = &value_table;
  491|      2|    type = g_type_register_fundamental (G_TYPE_INT, g_intern_static_string ("gint"), &info, &finfo, 0);
  ------------------
  |  |   94|      2|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  492|      2|    g_assert (type == G_TYPE_INT);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  493|      2|    type = g_type_register_fundamental (G_TYPE_UINT, g_intern_static_string ("guint"), &info, &finfo, 0);
  ------------------
  |  |  100|      2|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  494|      2|    g_assert (type == G_TYPE_UINT);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  495|      2|  }
  496|       |
  497|       |  /* G_TYPE_LONG / G_TYPE_ULONG
  498|       |   */
  499|      2|  {
  500|      2|    static const GTypeValueTable value_table = {
  501|      2|      value_init_long0,		/* value_init */
  502|      2|      NULL,			/* value_free */
  503|      2|      value_copy_long0,		/* value_copy */
  504|      2|      NULL,                     /* value_peek_pointer */
  505|      2|      "l",			/* collect_format */
  506|      2|      value_collect_long,	/* collect_value */
  507|      2|      "p",			/* lcopy_format */
  508|      2|      value_lcopy_long,		/* lcopy_value */
  509|      2|    };
  510|      2|    info.value_table = &value_table;
  511|      2|    type = g_type_register_fundamental (G_TYPE_LONG, g_intern_static_string ("glong"), &info, &finfo, 0);
  ------------------
  |  |  106|      2|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  512|      2|    g_assert (type == G_TYPE_LONG);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  513|      2|    type = g_type_register_fundamental (G_TYPE_ULONG, g_intern_static_string ("gulong"), &info, &finfo, 0);
  ------------------
  |  |  112|      2|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  514|      2|    g_assert (type == G_TYPE_ULONG);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  515|      2|  }
  516|       |  
  517|       |  /* G_TYPE_INT64 / G_TYPE_UINT64
  518|       |   */
  519|      2|  {
  520|      2|    static const GTypeValueTable value_table = {
  521|      2|      value_init_int64,		/* value_init */
  522|      2|      NULL,			/* value_free */
  523|      2|      value_copy_int64,		/* value_copy */
  524|      2|      NULL,                     /* value_peek_pointer */
  525|      2|      "q",			/* collect_format */
  526|      2|      value_collect_int64,	/* collect_value */
  527|      2|      "p",			/* lcopy_format */
  528|      2|      value_lcopy_int64,	/* lcopy_value */
  529|      2|    };
  530|      2|    info.value_table = &value_table;
  531|      2|    type = g_type_register_fundamental (G_TYPE_INT64, g_intern_static_string ("gint64"), &info, &finfo, 0);
  ------------------
  |  |  118|      2|#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  532|      2|    g_assert (type == G_TYPE_INT64);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  533|      2|    type = g_type_register_fundamental (G_TYPE_UINT64, g_intern_static_string ("guint64"), &info, &finfo, 0);
  ------------------
  |  |  124|      2|#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  534|      2|    g_assert (type == G_TYPE_UINT64);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  535|      2|  }
  536|       |  
  537|       |  /* G_TYPE_FLOAT
  538|       |   */
  539|      2|  {
  540|      2|    static const GTypeValueTable value_table = {
  541|      2|      value_init_float,		 /* value_init */
  542|      2|      NULL,			 /* value_free */
  543|      2|      value_copy_float,		 /* value_copy */
  544|      2|      NULL,                      /* value_peek_pointer */
  545|      2|      "d",			 /* collect_format */
  546|      2|      value_collect_float,	 /* collect_value */
  547|      2|      "p",			 /* lcopy_format */
  548|      2|      value_lcopy_float,	 /* lcopy_value */
  549|      2|    };
  550|      2|    info.value_table = &value_table;
  551|      2|    type = g_type_register_fundamental (G_TYPE_FLOAT, g_intern_static_string ("gfloat"), &info, &finfo, 0);
  ------------------
  |  |  142|      2|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  552|      2|    g_assert (type == G_TYPE_FLOAT);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  553|      2|  }
  554|       |  
  555|       |  /* G_TYPE_DOUBLE
  556|       |   */
  557|      2|  {
  558|      2|    static const GTypeValueTable value_table = {
  559|      2|      value_init_double,	/* value_init */
  560|      2|      NULL,			/* value_free */
  561|      2|      value_copy_double,	/* value_copy */
  562|      2|      NULL,                     /* value_peek_pointer */
  563|      2|      "d",			/* collect_format */
  564|      2|      value_collect_double,	/* collect_value */
  565|      2|      "p",			/* lcopy_format */
  566|      2|      value_lcopy_double,	/* lcopy_value */
  567|      2|    };
  568|      2|    info.value_table = &value_table;
  569|      2|    type = g_type_register_fundamental (G_TYPE_DOUBLE, g_intern_static_string ("gdouble"), &info, &finfo, 0);
  ------------------
  |  |  148|      2|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  570|      2|    g_assert (type == G_TYPE_DOUBLE);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  571|      2|  }
  572|       |
  573|       |  /* G_TYPE_STRING
  574|       |   */
  575|      2|  {
  576|      2|    static const GTypeValueTable value_table = {
  577|      2|      value_init_string,	/* value_init */
  578|      2|      value_free_string,	/* value_free */
  579|      2|      value_copy_string,	/* value_copy */
  580|      2|      value_peek_pointer0,	/* value_peek_pointer */
  581|      2|      "p",			/* collect_format */
  582|      2|      value_collect_string,	/* collect_value */
  583|      2|      "p",			/* lcopy_format */
  584|      2|      value_lcopy_string,	/* lcopy_value */
  585|      2|    };
  586|      2|    info.value_table = &value_table;
  587|      2|    type = g_type_register_fundamental (G_TYPE_STRING, g_intern_static_string ("gchararray"), &info, &finfo, 0);
  ------------------
  |  |  154|      2|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  588|      2|    g_assert (type == G_TYPE_STRING);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  589|      2|  }
  590|       |
  591|       |  /* G_TYPE_POINTER
  592|       |   */
  593|      2|  {
  594|      2|    static const GTypeValueTable value_table = {
  595|      2|      value_init_pointer,	/* value_init */
  596|      2|      NULL,			/* value_free */
  597|      2|      value_copy_pointer,	/* value_copy */
  598|      2|      value_peek_pointer0,	/* value_peek_pointer */
  599|      2|      "p",			/* collect_format */
  600|      2|      value_collect_pointer,	/* collect_value */
  601|      2|      "p",			/* lcopy_format */
  602|      2|      value_lcopy_pointer,	/* lcopy_value */
  603|      2|    };
  604|      2|    info.value_table = &value_table;
  605|      2|    type = g_type_register_fundamental (G_TYPE_POINTER, g_intern_static_string ("gpointer"), &info, &finfo, 0);
  ------------------
  |  |  160|      2|#define G_TYPE_POINTER			G_TYPE_MAKE_FUNDAMENTAL (17)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  606|      2|    g_assert (type == G_TYPE_POINTER);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  607|      2|  }
  608|       |
  609|       |  /* G_TYPE_VARIANT
  610|       |   */
  611|      2|  {
  612|      2|    static const GTypeValueTable value_table = {
  613|      2|      value_init_pointer,	/* value_init */
  614|      2|      value_free_variant,	/* value_free */
  615|      2|      value_copy_variant,	/* value_copy */
  616|      2|      value_peek_pointer0,	/* value_peek_pointer */
  617|      2|      "p",			/* collect_format */
  618|      2|      value_collect_variant,	/* collect_value */
  619|      2|      "p",			/* lcopy_format */
  620|      2|      value_lcopy_variant,	/* lcopy_value */
  621|      2|    };
  622|      2|    info.value_table = &value_table;
  623|      2|    type = g_type_register_fundamental (G_TYPE_VARIANT, g_intern_static_string ("GVariant"), &info, &finfo, 0);
  ------------------
  |  |  196|      2|#define	G_TYPE_VARIANT                  G_TYPE_MAKE_FUNDAMENTAL (21)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  624|      2|    g_assert (type == G_TYPE_VARIANT);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  625|      2|  }
  626|      2|}
g_value_get_pointer:
 1190|    832|{
 1191|    832|  g_return_val_if_fail (G_VALUE_HOLDS_POINTER (value), NULL);
  ------------------
  |  |  643|    832|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    832|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    832|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    832|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    832| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    832|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  4.16k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 832]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 832, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    832|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    832|   else                                         \
  |  |  |  |  |  | 1021|    832|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    832|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    832|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    832|      { } \
  |  |  646|    832|    else \
  |  |  647|    832|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    832|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    832|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 832]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1192|       |
 1193|    832|  return value->data[0].v_pointer;
 1194|    832|}
g_pointer_type_register_static:
 1450|      2|{
 1451|      2|  const GTypeInfo type_info = {
 1452|      2|    0,			/* class_size */
 1453|      2|    NULL,		/* base_init */
 1454|      2|    NULL,		/* base_finalize */
 1455|      2|    NULL,		/* class_init */
 1456|      2|    NULL,		/* class_finalize */
 1457|      2|    NULL,		/* class_data */
 1458|      2|    0,			/* instance_size */
 1459|      2|    0,			/* n_preallocs */
 1460|      2|    NULL,		/* instance_init */
 1461|       |    NULL		/* value_table */
 1462|      2|  };
 1463|      2|  GType type;
 1464|       |
 1465|      2|  g_return_val_if_fail (name != NULL, 0);
  ------------------
  |  |  643|      2|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      2|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      2|      { } \
  |  |  646|      2|    else \
  |  |  647|      2|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      2|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1466|      2|  g_return_val_if_fail (g_type_from_name (name) == 0, 0);
  ------------------
  |  |  643|      2|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      2|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      2|      { } \
  |  |  646|      2|    else \
  |  |  647|      2|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      2|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1467|       |
 1468|      2|  type = g_type_register_static (G_TYPE_POINTER, name, &type_info, 0);
  ------------------
  |  |  160|      2|#define G_TYPE_POINTER			G_TYPE_MAKE_FUNDAMENTAL (17)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1469|       |
 1470|      2|  return type;
 1471|      2|}
gvaluetypes.c:value_init_pointer:
  320|    834|{
  321|       |  value->data[0].v_pointer = NULL;
  322|    834|}
gvaluetypes.c:value_copy_pointer:
  327|    832|{
  328|    832|  dest_value->data[0].v_pointer = src_value->data[0].v_pointer;
  329|    832|}

LLVMFuzzerTestOneInput:
   15|    832|{
   16|    832|	g_autoptr(GObject) object = g_object_new(FU_TYPE_WACOM_USB_FIRMWARE, NULL);
  ------------------
  |  | 1162|    832|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|    832|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
              	g_autoptr(GObject) object = g_object_new(FU_TYPE_WACOM_USB_FIRMWARE, NULL);
  ------------------
  |  |   13|    832|#define FU_TYPE_USB_DEVICE (fu_usb_device_get_type())
  ------------------
   17|    832|	g_autoptr(GBytes) blob = g_bytes_new_static(data, size);
  ------------------
  |  | 1162|    832|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|    832|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
   18|       |
   19|    832|	(void)g_setenv("G_DEBUG", "fatal-criticals", TRUE);
  ------------------
  |  |  818|    832|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    832|#define	FALSE	(0)
  |  |  ------------------
  ------------------
   20|    832|	(void)g_setenv("FWUPD_FUZZER_RUNNING", "1", TRUE);
  ------------------
  |  |  818|    832|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    832|#define	FALSE	(0)
  |  |  ------------------
  ------------------
   21|       |
   22|       |	fu_fuzzer_test_input(FU_FUZZER(object), blob, NULL);
   23|    832|	return 0;
   24|    832|}

fu_usb_descriptor_kind_to_string:
   92|   187k|{
   93|   187k|    if (val == FU_USB_DESCRIPTOR_KIND_INVALID)
  ------------------
  |  Branch (93:9): [True: 1.01k, False: 186k]
  ------------------
   94|  1.01k|        return "invalid";
   95|   186k|    if (val == FU_USB_DESCRIPTOR_KIND_DEVICE)
  ------------------
  |  Branch (95:9): [True: 151k, False: 35.1k]
  ------------------
   96|   151k|        return "device";
   97|  35.1k|    if (val == FU_USB_DESCRIPTOR_KIND_CONFIG)
  ------------------
  |  Branch (97:9): [True: 1, False: 35.1k]
  ------------------
   98|      1|        return "config";
   99|  35.1k|    if (val == FU_USB_DESCRIPTOR_KIND_STRING)
  ------------------
  |  Branch (99:9): [True: 9.87k, False: 25.2k]
  ------------------
  100|  9.87k|        return "string";
  101|  25.2k|    if (val == FU_USB_DESCRIPTOR_KIND_INTERFACE)
  ------------------
  |  Branch (101:9): [True: 1, False: 25.2k]
  ------------------
  102|      1|        return "interface";
  103|  25.2k|    if (val == FU_USB_DESCRIPTOR_KIND_ENDPOINT)
  ------------------
  |  Branch (103:9): [True: 1, False: 25.2k]
  ------------------
  104|      1|        return "endpoint";
  105|  25.2k|    if (val == FU_USB_DESCRIPTOR_KIND_INTERFACE_ASSOCIATION)
  ------------------
  |  Branch (105:9): [True: 731, False: 24.5k]
  ------------------
  106|    731|        return "interface-association";
  107|  24.5k|    if (val == FU_USB_DESCRIPTOR_KIND_BOS)
  ------------------
  |  Branch (107:9): [True: 254, False: 24.2k]
  ------------------
  108|    254|        return "bos";
  109|  24.2k|    if (val == FU_USB_DESCRIPTOR_KIND_DEVICE_CAPABILITY)
  ------------------
  |  Branch (109:9): [True: 889, False: 23.3k]
  ------------------
  110|    889|        return "device-capability";
  111|  23.3k|    if (val == FU_USB_DESCRIPTOR_KIND_HID)
  ------------------
  |  Branch (111:9): [True: 1, False: 23.3k]
  ------------------
  112|      1|        return "hid";
  113|  23.3k|    if (val == FU_USB_DESCRIPTOR_KIND_REPORT)
  ------------------
  |  Branch (113:9): [True: 567, False: 22.8k]
  ------------------
  114|    567|        return "report";
  115|  22.8k|    if (val == FU_USB_DESCRIPTOR_KIND_PHYSICAL)
  ------------------
  |  Branch (115:9): [True: 319, False: 22.4k]
  ------------------
  116|    319|        return "physical";
  117|  22.4k|    if (val == FU_USB_DESCRIPTOR_KIND_HUB)
  ------------------
  |  Branch (117:9): [True: 243, False: 22.2k]
  ------------------
  118|    243|        return "hub";
  119|  22.2k|    if (val == FU_USB_DESCRIPTOR_KIND_SUPERSPEED_HUB)
  ------------------
  |  Branch (119:9): [True: 603, False: 21.6k]
  ------------------
  120|    603|        return "superspeed-hub";
  121|  21.6k|    if (val == FU_USB_DESCRIPTOR_KIND_SS_ENDPOINT_COMPANION)
  ------------------
  |  Branch (121:9): [True: 267, False: 21.3k]
  ------------------
  122|    267|        return "ss-endpoint-companion";
  123|  21.3k|    return NULL;
  124|  21.6k|}
fu_usb_base_hdr_unref:
  183|   721k|{
  184|   721k|    g_return_if_fail(st != NULL);
  ------------------
  |  |  630|   721k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   721k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   721k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   721k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   721k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   721k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   721k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   721k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 721k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   721k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   721k|   else                                         \
  |  |  |  |  |  | 1021|   721k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   721k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   721k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 721k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   721k|      { } \
  |  |  633|   721k|    else \
  |  |  634|   721k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   721k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   721k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 721k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  185|   721k|    if (st->refcount == 0) {
  ------------------
  |  Branch (185:9): [True: 0, False: 721k]
  ------------------
  186|      0|        g_critical("FuUsbBaseHdr refcount already zero");
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
  187|      0|        return;
  188|      0|    }
  189|   721k|    if (--st->refcount > 0)
  ------------------
  |  Branch (189:9): [True: 0, False: 721k]
  ------------------
  190|      0|        return;
  191|   721k|    if (st->buf != NULL)
  ------------------
  |  Branch (191:9): [True: 721k, False: 88]
  ------------------
  192|   721k|        g_byte_array_unref(st->buf);
  193|   721k|    g_free(st);
  194|   721k|}
fu_usb_base_hdr_get_length:
  212|  1.20M|{
  213|  1.20M|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  1.20M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.20M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.20M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.20M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.20M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.20M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.20M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.20M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.20M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.20M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.20M|   else                                         \
  |  |  |  |  |  | 1021|  1.20M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.20M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.20M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.20M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.20M|      { } \
  |  |  646|  1.20M|    else \
  |  |  647|  1.20M|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.20M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.20M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.20M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  214|  1.20M|    return st->buf->data[0];
  215|  1.20M|}
fu_usb_base_hdr_get_descriptor_type:
  221|   721k|{
  222|   721k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|   721k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   721k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   721k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   721k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   721k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   721k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   721k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   721k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 721k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   721k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   721k|   else                                         \
  |  |  |  |  |  | 1021|   721k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   721k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   721k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 721k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   721k|      { } \
  |  |  646|   721k|    else \
  |  |  647|   721k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   721k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   721k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 721k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  223|   721k|    return st->buf->data[1];
  224|   721k|}
fu_usb_base_hdr_parse:
  272|   472k|{
  273|   472k|    g_autoptr(FuUsbBaseHdr) st = fu_usb_base_hdr_new_internal();
  ------------------
  |  | 1162|   472k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   472k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  274|   472k|    g_return_val_if_fail(buf != NULL, NULL);
  ------------------
  |  |  643|   472k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   472k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   472k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   472k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   472k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   472k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   472k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   472k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 472k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   472k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   472k|   else                                         \
  |  |  |  |  |  | 1021|   472k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   472k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   472k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 472k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   472k|      { } \
  |  |  646|   472k|    else \
  |  |  647|   472k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   472k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   472k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 472k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  275|   472k|    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
  ------------------
  |  |  643|   472k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   472k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   472k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   472k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   472k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   472k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   472k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.41M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 472k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 472k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   472k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   472k|   else                                         \
  |  |  |  |  |  | 1021|   472k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   472k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   472k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 472k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   472k|      { } \
  |  |  646|   472k|    else \
  |  |  647|   472k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   472k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   472k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 472k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  276|   472k|    if (!fu_memchk_read(bufsz, offset, 2, error)) {
  ------------------
  |  Branch (276:9): [True: 88, False: 472k]
  ------------------
  277|     88|        g_prefix_error_literal(error, "invalid struct FuUsbBaseHdr: ");
  ------------------
  |  |   11|     88|#define g_prefix_error_literal	  g_prefix_error
  ------------------
  278|     88|        return NULL;
  279|     88|    }
  280|   472k|    st->buf = g_byte_array_new();
  281|   472k|    g_byte_array_append(st->buf, buf + offset, 2);
  282|   472k|    if (!fu_usb_base_hdr_parse_internal(st, error))
  ------------------
  |  Branch (282:9): [True: 0, False: 472k]
  ------------------
  283|      0|        return NULL;
  284|   472k|    return g_steal_pointer(&st);
  ------------------
  |  |  222|   472k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  285|   472k|}
fu_usb_base_hdr_parse_bytes:
  291|   472k|{
  292|   472k|    gsize bufsz = 0;
  293|   472k|    const guint8 *buf = fu_bytes_get_data_safe(blob, &bufsz, error);
  294|   472k|    if (buf == NULL)
  ------------------
  |  Branch (294:9): [True: 0, False: 472k]
  ------------------
  295|      0|        return NULL;
  296|   472k|    return fu_usb_base_hdr_parse(buf, bufsz, offset, error);
  297|   472k|}
fu_usb_base_hdr_parse_stream:
  303|   249k|{
  304|   249k|    g_autoptr(FuUsbBaseHdr) st = fu_usb_base_hdr_new_internal();
  ------------------
  |  | 1162|   249k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   249k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  305|   249k|    st->buf = fu_input_stream_read_byte_array(stream, offset, 2, NULL, error);
  306|   249k|    if (st->buf == NULL) {
  ------------------
  |  Branch (306:9): [True: 0, False: 249k]
  ------------------
  307|      0|        g_prefix_error(error, "FuUsbBaseHdr failed read of 0x%x: ", (guint) 2);
  308|      0|        return NULL;
  309|      0|    }
  310|   249k|    if (st->buf->len != 2) {
  ------------------
  |  Branch (310:9): [True: 188, False: 249k]
  ------------------
  311|    188|        g_set_error(error,
  312|    188|                    FWUPD_ERROR,
  ------------------
  |  |   15|    188|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  313|    188|                    FWUPD_ERROR_INVALID_DATA,
  314|    188|                    "FuUsbBaseHdr requested 0x%x and got 0x%x",
  315|    188|                    (guint) 2,
  316|    188|                    (guint) st->buf->len);
  317|    188|        return NULL;
  318|    188|    }
  319|   249k|    if (!fu_usb_base_hdr_parse_internal(st, error))
  ------------------
  |  Branch (319:9): [True: 0, False: 249k]
  ------------------
  320|      0|        return NULL;
  321|   249k|    return g_steal_pointer(&st);
  ------------------
  |  |  222|   249k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  322|   249k|}
fu_usb_device_hdr_unref:
  338|    826|{
  339|    826|    g_return_if_fail(st != NULL);
  ------------------
  |  |  630|    826|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    826|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    826|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    826|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    826| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    826|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    826|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    826|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 826, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    826|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    826|   else                                         \
  |  |  |  |  |  | 1021|    826|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    826|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    826|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 826, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    826|      { } \
  |  |  633|    826|    else \
  |  |  634|    826|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    826|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    826|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 826]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  340|    826|    if (st->refcount == 0) {
  ------------------
  |  Branch (340:9): [True: 0, False: 826]
  ------------------
  341|      0|        g_critical("FuUsbDeviceHdr refcount already zero");
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
  342|      0|        return;
  343|      0|    }
  344|    826|    if (--st->refcount > 0)
  ------------------
  |  Branch (344:9): [True: 0, False: 826]
  ------------------
  345|      0|        return;
  346|    826|    if (st->buf != NULL)
  ------------------
  |  Branch (346:9): [True: 794, False: 32]
  ------------------
  347|    794|        g_byte_array_unref(st->buf);
  348|    826|    g_free(st);
  349|    826|}
fu_usb_device_hdr_get_length:
  367|  1.50k|{
  368|  1.50k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  1.50k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.50k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.50k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.50k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.50k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.50k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.50k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.50k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.50k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.50k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.50k|   else                                         \
  |  |  |  |  |  | 1021|  1.50k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.50k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.50k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.50k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.50k|      { } \
  |  |  646|  1.50k|    else \
  |  |  647|  1.50k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.50k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.50k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.50k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|  1.50k|    return st->buf->data[0];
  370|  1.50k|}
fu_usb_device_hdr_get_usb:
  385|    751|{
  386|    751|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    751|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    751|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    751|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    751|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    751| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    751|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    751|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    751|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 751, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    751|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    751|   else                                         \
  |  |  |  |  |  | 1021|    751|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    751|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    751|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 751, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    751|      { } \
  |  |  646|    751|    else \
  |  |  647|    751|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    751|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    751|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 751]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  387|    751|    return fu_memread_uint16(st->buf->data + 2, G_LITTLE_ENDIAN);
  ------------------
  |  |  184|    751|#define G_LITTLE_ENDIAN 1234
  ------------------
  388|    751|}
fu_usb_device_hdr_get_device_class:
  394|    751|{
  395|    751|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    751|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    751|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    751|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    751|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    751| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    751|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    751|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    751|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 751, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    751|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    751|   else                                         \
  |  |  |  |  |  | 1021|    751|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    751|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    751|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 751, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    751|      { } \
  |  |  646|    751|    else \
  |  |  647|    751|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    751|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    751|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 751]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  396|    751|    return st->buf->data[4];
  397|    751|}
fu_usb_device_hdr_get_device_sub_class:
  403|    751|{
  404|    751|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    751|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    751|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    751|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    751|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    751| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    751|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    751|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    751|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 751, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    751|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    751|   else                                         \
  |  |  |  |  |  | 1021|    751|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    751|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    751|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 751, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    751|      { } \
  |  |  646|    751|    else \
  |  |  647|    751|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    751|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    751|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 751]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  405|    751|    return st->buf->data[5];
  406|    751|}
fu_usb_device_hdr_get_device_protocol:
  412|    751|{
  413|    751|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    751|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    751|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    751|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    751|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    751| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    751|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    751|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    751|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 751, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    751|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    751|   else                                         \
  |  |  |  |  |  | 1021|    751|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    751|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    751|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 751, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    751|      { } \
  |  |  646|    751|    else \
  |  |  647|    751|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    751|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    751|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 751]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  414|    751|    return st->buf->data[6];
  415|    751|}
fu_usb_device_hdr_get_max_packet_size0:
  421|    751|{
  422|    751|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    751|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    751|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    751|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    751|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    751| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    751|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    751|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    751|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 751, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    751|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    751|   else                                         \
  |  |  |  |  |  | 1021|    751|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    751|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    751|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 751, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    751|      { } \
  |  |  646|    751|    else \
  |  |  647|    751|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    751|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    751|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 751]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  423|    751|    return st->buf->data[7];
  424|    751|}
fu_usb_device_hdr_get_vendor:
  430|    751|{
  431|    751|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    751|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    751|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    751|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    751|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    751| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    751|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    751|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    751|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 751, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    751|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    751|   else                                         \
  |  |  |  |  |  | 1021|    751|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    751|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    751|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 751, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    751|      { } \
  |  |  646|    751|    else \
  |  |  647|    751|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    751|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    751|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 751]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  432|    751|    return fu_memread_uint16(st->buf->data + 8, G_LITTLE_ENDIAN);
  ------------------
  |  |  184|    751|#define G_LITTLE_ENDIAN 1234
  ------------------
  433|    751|}
fu_usb_device_hdr_get_product:
  439|    751|{
  440|    751|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    751|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    751|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    751|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    751|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    751| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    751|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    751|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    751|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 751, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    751|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    751|   else                                         \
  |  |  |  |  |  | 1021|    751|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    751|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    751|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 751, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    751|      { } \
  |  |  646|    751|    else \
  |  |  647|    751|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    751|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    751|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 751]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  441|    751|    return fu_memread_uint16(st->buf->data + 10, G_LITTLE_ENDIAN);
  ------------------
  |  |  184|    751|#define G_LITTLE_ENDIAN 1234
  ------------------
  442|    751|}
fu_usb_device_hdr_get_device:
  448|    751|{
  449|    751|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    751|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    751|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    751|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    751|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    751| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    751|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    751|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    751|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 751, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    751|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    751|   else                                         \
  |  |  |  |  |  | 1021|    751|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    751|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    751|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 751, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    751|      { } \
  |  |  646|    751|    else \
  |  |  647|    751|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    751|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    751|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 751]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  450|    751|    return fu_memread_uint16(st->buf->data + 12, G_LITTLE_ENDIAN);
  ------------------
  |  |  184|    751|#define G_LITTLE_ENDIAN 1234
  ------------------
  451|    751|}
fu_usb_device_hdr_get_manufacturer_idx:
  457|    751|{
  458|    751|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    751|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    751|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    751|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    751|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    751| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    751|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    751|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    751|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 751, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    751|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    751|   else                                         \
  |  |  |  |  |  | 1021|    751|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    751|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    751|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 751, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    751|      { } \
  |  |  646|    751|    else \
  |  |  647|    751|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    751|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    751|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 751]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  459|    751|    return st->buf->data[14];
  460|    751|}
fu_usb_device_hdr_get_product_idx:
  466|    751|{
  467|    751|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    751|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    751|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    751|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    751|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    751| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    751|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    751|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    751|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 751, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    751|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    751|   else                                         \
  |  |  |  |  |  | 1021|    751|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    751|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    751|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 751, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    751|      { } \
  |  |  646|    751|    else \
  |  |  647|    751|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    751|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    751|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 751]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  468|    751|    return st->buf->data[15];
  469|    751|}
fu_usb_device_hdr_get_serial_number_idx:
  475|    751|{
  476|    751|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    751|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    751|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    751|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    751|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    751| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    751|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    751|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    751|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 751, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    751|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    751|   else                                         \
  |  |  |  |  |  | 1021|    751|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    751|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    751|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 751, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    751|      { } \
  |  |  646|    751|    else \
  |  |  647|    751|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    751|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    751|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 751]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  477|    751|    return st->buf->data[16];
  478|    751|}
fu_usb_device_hdr_get_num_configurations:
  484|    751|{
  485|    751|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    751|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    751|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    751|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    751|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    751| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    751|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    751|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    751|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 751, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    751|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    751|   else                                         \
  |  |  |  |  |  | 1021|    751|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    751|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    751|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 751, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    751|      { } \
  |  |  646|    751|    else \
  |  |  647|    751|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    751|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    751|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 751]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  486|    751|    return st->buf->data[17];
  487|    751|}
fu_usb_device_hdr_parse_bytes:
  594|    826|{
  595|    826|    gsize bufsz = 0;
  596|    826|    const guint8 *buf = fu_bytes_get_data_safe(blob, &bufsz, error);
  597|    826|    if (buf == NULL)
  ------------------
  |  Branch (597:9): [True: 0, False: 826]
  ------------------
  598|      0|        return NULL;
  599|    826|    return fu_usb_device_hdr_parse(buf, bufsz, offset, error);
  600|    826|}
fu_usb_descriptor_hdr_unref:
  616|   169k|{
  617|   169k|    g_return_if_fail(st != NULL);
  ------------------
  |  |  630|   169k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   169k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   169k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   169k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   169k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   169k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   169k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   169k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 169k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   169k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   169k|   else                                         \
  |  |  |  |  |  | 1021|   169k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   169k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   169k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 169k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   169k|      { } \
  |  |  633|   169k|    else \
  |  |  634|   169k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|   169k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   169k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 169k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  618|   169k|    if (st->refcount == 0) {
  ------------------
  |  Branch (618:9): [True: 0, False: 169k]
  ------------------
  619|      0|        g_critical("FuUsbDescriptorHdr refcount already zero");
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
  620|      0|        return;
  621|      0|    }
  622|   169k|    if (--st->refcount > 0)
  ------------------
  |  Branch (622:9): [True: 0, False: 169k]
  ------------------
  623|      0|        return;
  624|   169k|    if (st->buf != NULL)
  ------------------
  |  Branch (624:9): [True: 169k, False: 0]
  ------------------
  625|   169k|        g_byte_array_unref(st->buf);
  626|   169k|    g_free(st);
  627|   169k|}
fu_usb_descriptor_hdr_get_configuration_value:
  681|   169k|{
  682|   169k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|   169k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   169k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   169k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   169k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   169k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   169k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   169k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   169k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 169k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   169k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   169k|   else                                         \
  |  |  |  |  |  | 1021|   169k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   169k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   169k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 169k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   169k|      { } \
  |  |  646|   169k|    else \
  |  |  647|   169k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   169k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   169k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 169k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  683|   169k|    return st->buf->data[5];
  684|   169k|}
fu_usb_descriptor_hdr_get_configuration:
  690|   169k|{
  691|   169k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|   169k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   169k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   169k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   169k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   169k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   169k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   169k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   169k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 169k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   169k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   169k|   else                                         \
  |  |  |  |  |  | 1021|   169k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   169k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   169k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 169k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   169k|      { } \
  |  |  646|   169k|    else \
  |  |  647|   169k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   169k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   169k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 169k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  692|   169k|    return st->buf->data[6];
  693|   169k|}
fu_usb_descriptor_hdr_parse_stream:
  780|   169k|{
  781|   169k|    g_autoptr(FuUsbDescriptorHdr) st = fu_usb_descriptor_hdr_new_internal();
  ------------------
  |  | 1162|   169k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   169k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  782|   169k|    st->buf = fu_input_stream_read_byte_array(stream, offset, 9, NULL, error);
  783|   169k|    if (st->buf == NULL) {
  ------------------
  |  Branch (783:9): [True: 0, False: 169k]
  ------------------
  784|      0|        g_prefix_error(error, "FuUsbDescriptorHdr failed read of 0x%x: ", (guint) 9);
  785|      0|        return NULL;
  786|      0|    }
  787|   169k|    if (st->buf->len != 9) {
  ------------------
  |  Branch (787:9): [True: 35, False: 169k]
  ------------------
  788|     35|        g_set_error(error,
  789|     35|                    FWUPD_ERROR,
  ------------------
  |  |   15|     35|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  790|     35|                    FWUPD_ERROR_INVALID_DATA,
  791|     35|                    "FuUsbDescriptorHdr requested 0x%x and got 0x%x",
  792|     35|                    (guint) 9,
  793|     35|                    (guint) st->buf->len);
  794|     35|        return NULL;
  795|     35|    }
  796|   169k|    if (!fu_usb_descriptor_hdr_parse_internal(st, error))
  ------------------
  |  Branch (796:9): [True: 0, False: 169k]
  ------------------
  797|      0|        return NULL;
  798|   169k|    return g_steal_pointer(&st);
  ------------------
  |  |  222|   169k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  799|   169k|}
fu_usb_hid_descriptor_hdr_unref:
  815|  12.2k|{
  816|  12.2k|    g_return_if_fail(st != NULL);
  ------------------
  |  |  630|  12.2k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  12.2k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  12.2k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  12.2k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  12.2k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  12.2k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  12.2k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  12.2k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 12.2k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  12.2k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  12.2k|   else                                         \
  |  |  |  |  |  | 1021|  12.2k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  12.2k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  12.2k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 12.2k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  12.2k|      { } \
  |  |  633|  12.2k|    else \
  |  |  634|  12.2k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  12.2k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  12.2k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 12.2k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  817|  12.2k|    if (st->refcount == 0) {
  ------------------
  |  Branch (817:9): [True: 0, False: 12.2k]
  ------------------
  818|      0|        g_critical("FuUsbHidDescriptorHdr refcount already zero");
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
  819|      0|        return;
  820|      0|    }
  821|  12.2k|    if (--st->refcount > 0)
  ------------------
  |  Branch (821:9): [True: 0, False: 12.2k]
  ------------------
  822|      0|        return;
  823|  12.2k|    if (st->buf != NULL)
  ------------------
  |  Branch (823:9): [True: 12.2k, False: 0]
  ------------------
  824|  12.2k|        g_byte_array_unref(st->buf);
  825|  12.2k|    g_free(st);
  826|  12.2k|}
fu_usb_hid_descriptor_hdr_get_class_descriptor_length:
  898|  12.2k|{
  899|  12.2k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  12.2k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  12.2k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  12.2k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  12.2k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  12.2k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  12.2k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  12.2k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  12.2k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 12.2k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  12.2k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  12.2k|   else                                         \
  |  |  |  |  |  | 1021|  12.2k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  12.2k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  12.2k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 12.2k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  12.2k|      { } \
  |  |  646|  12.2k|    else \
  |  |  647|  12.2k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  12.2k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  12.2k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 12.2k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  900|  12.2k|    return fu_memread_uint16(st->buf->data + 7, G_LITTLE_ENDIAN);
  ------------------
  |  |  184|  12.2k|#define G_LITTLE_ENDIAN 1234
  ------------------
  901|  12.2k|}
fu_usb_hid_descriptor_hdr_parse_stream:
  968|  12.2k|{
  969|  12.2k|    g_autoptr(FuUsbHidDescriptorHdr) st = fu_usb_hid_descriptor_hdr_new_internal();
  ------------------
  |  | 1162|  12.2k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  12.2k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  970|  12.2k|    st->buf = fu_input_stream_read_byte_array(stream, offset, 9, NULL, error);
  971|  12.2k|    if (st->buf == NULL) {
  ------------------
  |  Branch (971:9): [True: 0, False: 12.2k]
  ------------------
  972|      0|        g_prefix_error(error, "FuUsbHidDescriptorHdr failed read of 0x%x: ", (guint) 9);
  973|      0|        return NULL;
  974|      0|    }
  975|  12.2k|    if (st->buf->len != 9) {
  ------------------
  |  Branch (975:9): [True: 10, False: 12.2k]
  ------------------
  976|     10|        g_set_error(error,
  977|     10|                    FWUPD_ERROR,
  ------------------
  |  |   15|     10|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  978|     10|                    FWUPD_ERROR_INVALID_DATA,
  979|     10|                    "FuUsbHidDescriptorHdr requested 0x%x and got 0x%x",
  980|     10|                    (guint) 9,
  981|     10|                    (guint) st->buf->len);
  982|     10|        return NULL;
  983|     10|    }
  984|  12.2k|    if (!fu_usb_hid_descriptor_hdr_parse_internal(st, error))
  ------------------
  |  Branch (984:9): [True: 0, False: 12.2k]
  ------------------
  985|      0|        return NULL;
  986|  12.2k|    return g_steal_pointer(&st);
  ------------------
  |  |  222|  12.2k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  987|  12.2k|}
fu_usb_interface_hdr_unref:
 1187|  77.3k|{
 1188|  77.3k|    g_return_if_fail(st != NULL);
  ------------------
  |  |  630|  77.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  77.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  77.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  77.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  77.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  77.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  77.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  77.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  77.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  77.3k|   else                                         \
  |  |  |  |  |  | 1021|  77.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  77.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  77.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  77.3k|      { } \
  |  |  633|  77.3k|    else \
  |  |  634|  77.3k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  77.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  77.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1189|  77.3k|    if (st->refcount == 0) {
  ------------------
  |  Branch (1189:9): [True: 0, False: 77.3k]
  ------------------
 1190|      0|        g_critical("FuUsbInterfaceHdr refcount already zero");
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1191|      0|        return;
 1192|      0|    }
 1193|  77.3k|    if (--st->refcount > 0)
  ------------------
  |  Branch (1193:9): [True: 0, False: 77.3k]
  ------------------
 1194|      0|        return;
 1195|  77.3k|    if (st->buf != NULL)
  ------------------
  |  Branch (1195:9): [True: 77.3k, False: 0]
  ------------------
 1196|  77.3k|        g_byte_array_unref(st->buf);
 1197|  77.3k|    g_free(st);
 1198|  77.3k|}
fu_usb_interface_hdr_get_length:
 1216|  77.3k|{
 1217|  77.3k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  77.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  77.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  77.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  77.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  77.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  77.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  77.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  77.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  77.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  77.3k|   else                                         \
  |  |  |  |  |  | 1021|  77.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  77.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  77.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  77.3k|      { } \
  |  |  646|  77.3k|    else \
  |  |  647|  77.3k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  77.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  77.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1218|  77.3k|    return st->buf->data[0];
 1219|  77.3k|}
fu_usb_interface_hdr_get_interface_number:
 1234|  77.3k|{
 1235|  77.3k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  77.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  77.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  77.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  77.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  77.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  77.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  77.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  77.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  77.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  77.3k|   else                                         \
  |  |  |  |  |  | 1021|  77.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  77.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  77.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  77.3k|      { } \
  |  |  646|  77.3k|    else \
  |  |  647|  77.3k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  77.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  77.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1236|  77.3k|    return st->buf->data[2];
 1237|  77.3k|}
fu_usb_interface_hdr_get_alternate_setting:
 1243|  77.3k|{
 1244|  77.3k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  77.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  77.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  77.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  77.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  77.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  77.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  77.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  77.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  77.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  77.3k|   else                                         \
  |  |  |  |  |  | 1021|  77.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  77.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  77.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  77.3k|      { } \
  |  |  646|  77.3k|    else \
  |  |  647|  77.3k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  77.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  77.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1245|  77.3k|    return st->buf->data[3];
 1246|  77.3k|}
fu_usb_interface_hdr_get_num_endpoints:
 1252|  77.3k|{
 1253|  77.3k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  77.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  77.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  77.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  77.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  77.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  77.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  77.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  77.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  77.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  77.3k|   else                                         \
  |  |  |  |  |  | 1021|  77.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  77.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  77.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  77.3k|      { } \
  |  |  646|  77.3k|    else \
  |  |  647|  77.3k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  77.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  77.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1254|  77.3k|    return st->buf->data[4];
 1255|  77.3k|}
fu_usb_interface_hdr_get_interface_class:
 1261|  77.3k|{
 1262|  77.3k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  77.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  77.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  77.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  77.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  77.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  77.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  77.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  77.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  77.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  77.3k|   else                                         \
  |  |  |  |  |  | 1021|  77.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  77.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  77.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  77.3k|      { } \
  |  |  646|  77.3k|    else \
  |  |  647|  77.3k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  77.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  77.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1263|  77.3k|    return st->buf->data[5];
 1264|  77.3k|}
fu_usb_interface_hdr_get_interface_sub_class:
 1270|  77.3k|{
 1271|  77.3k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  77.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  77.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  77.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  77.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  77.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  77.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  77.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  77.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  77.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  77.3k|   else                                         \
  |  |  |  |  |  | 1021|  77.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  77.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  77.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  77.3k|      { } \
  |  |  646|  77.3k|    else \
  |  |  647|  77.3k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  77.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  77.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1272|  77.3k|    return st->buf->data[6];
 1273|  77.3k|}
fu_usb_interface_hdr_get_interface_protocol:
 1279|  77.3k|{
 1280|  77.3k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  77.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  77.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  77.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  77.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  77.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  77.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  77.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  77.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  77.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  77.3k|   else                                         \
  |  |  |  |  |  | 1021|  77.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  77.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  77.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  77.3k|      { } \
  |  |  646|  77.3k|    else \
  |  |  647|  77.3k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  77.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  77.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1281|  77.3k|    return st->buf->data[7];
 1282|  77.3k|}
fu_usb_interface_hdr_get_interface:
 1288|  77.3k|{
 1289|  77.3k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  77.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  77.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  77.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  77.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  77.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  77.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  77.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  77.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  77.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  77.3k|   else                                         \
  |  |  |  |  |  | 1021|  77.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  77.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  77.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  77.3k|      { } \
  |  |  646|  77.3k|    else \
  |  |  647|  77.3k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  77.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  77.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1290|  77.3k|    return st->buf->data[8];
 1291|  77.3k|}
fu_usb_interface_hdr_parse_stream:
 1368|  77.3k|{
 1369|  77.3k|    g_autoptr(FuUsbInterfaceHdr) st = fu_usb_interface_hdr_new_internal();
  ------------------
  |  | 1162|  77.3k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  77.3k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1370|  77.3k|    st->buf = fu_input_stream_read_byte_array(stream, offset, 9, NULL, error);
 1371|  77.3k|    if (st->buf == NULL) {
  ------------------
  |  Branch (1371:9): [True: 0, False: 77.3k]
  ------------------
 1372|      0|        g_prefix_error(error, "FuUsbInterfaceHdr failed read of 0x%x: ", (guint) 9);
 1373|      0|        return NULL;
 1374|      0|    }
 1375|  77.3k|    if (st->buf->len != 9) {
  ------------------
  |  Branch (1375:9): [True: 44, False: 77.3k]
  ------------------
 1376|     44|        g_set_error(error,
 1377|     44|                    FWUPD_ERROR,
  ------------------
  |  |   15|     44|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1378|     44|                    FWUPD_ERROR_INVALID_DATA,
 1379|     44|                    "FuUsbInterfaceHdr requested 0x%x and got 0x%x",
 1380|     44|                    (guint) 9,
 1381|     44|                    (guint) st->buf->len);
 1382|     44|        return NULL;
 1383|     44|    }
 1384|  77.3k|    if (!fu_usb_interface_hdr_parse_internal(st, error))
  ------------------
  |  Branch (1384:9): [True: 0, False: 77.3k]
  ------------------
 1385|      0|        return NULL;
 1386|  77.3k|    return g_steal_pointer(&st);
  ------------------
  |  |  222|  77.3k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
 1387|  77.3k|}
fu_usb_endpoint_hdr_unref:
 1403|  25.9k|{
 1404|  25.9k|    g_return_if_fail(st != NULL);
  ------------------
  |  |  630|  25.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  25.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  25.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  25.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  25.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  25.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  25.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  25.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 25.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  25.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  25.9k|   else                                         \
  |  |  |  |  |  | 1021|  25.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  25.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  25.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 25.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  25.9k|      { } \
  |  |  633|  25.9k|    else \
  |  |  634|  25.9k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  25.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  25.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 25.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1405|  25.9k|    if (st->refcount == 0) {
  ------------------
  |  Branch (1405:9): [True: 0, False: 25.9k]
  ------------------
 1406|      0|        g_critical("FuUsbEndpointHdr refcount already zero");
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1407|      0|        return;
 1408|      0|    }
 1409|  25.9k|    if (--st->refcount > 0)
  ------------------
  |  Branch (1409:9): [True: 0, False: 25.9k]
  ------------------
 1410|      0|        return;
 1411|  25.9k|    if (st->buf != NULL)
  ------------------
  |  Branch (1411:9): [True: 25.9k, False: 0]
  ------------------
 1412|  25.9k|        g_byte_array_unref(st->buf);
 1413|  25.9k|    g_free(st);
 1414|  25.9k|}
fu_usb_endpoint_hdr_get_length:
 1432|  25.9k|{
 1433|  25.9k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  25.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  25.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  25.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  25.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  25.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  25.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  25.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  25.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 25.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  25.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  25.9k|   else                                         \
  |  |  |  |  |  | 1021|  25.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  25.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  25.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 25.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  25.9k|      { } \
  |  |  646|  25.9k|    else \
  |  |  647|  25.9k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  25.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  25.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 25.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1434|  25.9k|    return st->buf->data[0];
 1435|  25.9k|}
fu_usb_endpoint_hdr_get_descriptor_type:
 1441|  25.9k|{
 1442|  25.9k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  25.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  25.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  25.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  25.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  25.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  25.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  25.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  25.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 25.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  25.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  25.9k|   else                                         \
  |  |  |  |  |  | 1021|  25.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  25.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  25.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 25.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  25.9k|      { } \
  |  |  646|  25.9k|    else \
  |  |  647|  25.9k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  25.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  25.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 25.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1443|  25.9k|    return st->buf->data[1];
 1444|  25.9k|}
fu_usb_endpoint_hdr_get_endpoint_address:
 1450|  25.9k|{
 1451|  25.9k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  25.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  25.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  25.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  25.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  25.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  25.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  25.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  25.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 25.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  25.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  25.9k|   else                                         \
  |  |  |  |  |  | 1021|  25.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  25.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  25.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 25.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  25.9k|      { } \
  |  |  646|  25.9k|    else \
  |  |  647|  25.9k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  25.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  25.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 25.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1452|  25.9k|    return st->buf->data[2];
 1453|  25.9k|}
fu_usb_endpoint_hdr_get_attributes:
 1459|  25.9k|{
 1460|  25.9k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  25.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  25.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  25.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  25.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  25.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  25.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  25.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  25.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 25.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  25.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  25.9k|   else                                         \
  |  |  |  |  |  | 1021|  25.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  25.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  25.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 25.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  25.9k|      { } \
  |  |  646|  25.9k|    else \
  |  |  647|  25.9k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  25.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  25.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 25.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1461|  25.9k|    return st->buf->data[3];
 1462|  25.9k|}
fu_usb_endpoint_hdr_get_max_packet_size:
 1468|  25.9k|{
 1469|  25.9k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  25.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  25.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  25.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  25.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  25.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  25.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  25.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  25.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 25.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  25.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  25.9k|   else                                         \
  |  |  |  |  |  | 1021|  25.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  25.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  25.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 25.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  25.9k|      { } \
  |  |  646|  25.9k|    else \
  |  |  647|  25.9k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  25.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  25.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 25.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1470|  25.9k|    return fu_memread_uint16(st->buf->data + 4, G_LITTLE_ENDIAN);
  ------------------
  |  |  184|  25.9k|#define G_LITTLE_ENDIAN 1234
  ------------------
 1471|  25.9k|}
fu_usb_endpoint_hdr_get_interval:
 1477|  25.9k|{
 1478|  25.9k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  25.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  25.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  25.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  25.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  25.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  25.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  25.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  25.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 25.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  25.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  25.9k|   else                                         \
  |  |  |  |  |  | 1021|  25.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  25.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  25.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 25.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  25.9k|      { } \
  |  |  646|  25.9k|    else \
  |  |  647|  25.9k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  25.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  25.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 25.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1479|  25.9k|    return st->buf->data[6];
 1480|  25.9k|}
fu_usb_endpoint_hdr_parse_stream:
 1535|  25.9k|{
 1536|  25.9k|    g_autoptr(FuUsbEndpointHdr) st = fu_usb_endpoint_hdr_new_internal();
  ------------------
  |  | 1162|  25.9k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  25.9k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1537|  25.9k|    st->buf = fu_input_stream_read_byte_array(stream, offset, 7, NULL, error);
 1538|  25.9k|    if (st->buf == NULL) {
  ------------------
  |  Branch (1538:9): [True: 0, False: 25.9k]
  ------------------
 1539|      0|        g_prefix_error(error, "FuUsbEndpointHdr failed read of 0x%x: ", (guint) 7);
 1540|      0|        return NULL;
 1541|      0|    }
 1542|  25.9k|    if (st->buf->len != 7) {
  ------------------
  |  Branch (1542:9): [True: 40, False: 25.9k]
  ------------------
 1543|     40|        g_set_error(error,
 1544|     40|                    FWUPD_ERROR,
  ------------------
  |  |   15|     40|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1545|     40|                    FWUPD_ERROR_INVALID_DATA,
 1546|     40|                    "FuUsbEndpointHdr requested 0x%x and got 0x%x",
 1547|     40|                    (guint) 7,
 1548|     40|                    (guint) st->buf->len);
 1549|     40|        return NULL;
 1550|     40|    }
 1551|  25.9k|    if (!fu_usb_endpoint_hdr_parse_internal(st, error))
  ------------------
  |  Branch (1551:9): [True: 0, False: 25.9k]
  ------------------
 1552|      0|        return NULL;
 1553|  25.9k|    return g_steal_pointer(&st);
  ------------------
  |  |  222|  25.9k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
 1554|  25.9k|}
fu-usb-struct.c:fu_usb_base_hdr_new_internal:
  200|   721k|{
  201|       |    FuUsbBaseHdr *st = g_new0(FuUsbBaseHdr, 1);
  ------------------
  |  |  307|   721k|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|   721k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   721k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|   721k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|   721k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|   721k|	  gpointer __p;						\
  |  |  |  |  239|   721k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 721k]
  |  |  |  |  ------------------
  |  |  |  |  240|   721k|	    __p = g_##func (__n);				\
  |  |  |  |  241|   721k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 721k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|   721k|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   721k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   721k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 721k]
  |  |  |  |  |  Branch (242:26): [True: 721k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|   721k|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|   721k|	  else							\
  |  |  |  |  245|   721k|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|   721k|	  __p;							\
  |  |  |  |  247|   721k|	}))
  |  |  ------------------
  ------------------
  202|   721k|    st->refcount = 1;
  203|   721k|    return st;
  204|   721k|}
fu-usb-struct.c:fu_usb_base_hdr_parse_internal:
  257|   721k|{
  258|   721k|    if (g_log_get_debug_enabled()) {
  ------------------
  |  |   11|   721k|#define g_log_get_debug_enabled() (g_getenv("FWUPD_VERBOSE") != NULL)
  |  |  ------------------
  |  |  |  Branch (11:35): [True: 0, False: 721k]
  |  |  ------------------
  ------------------
  259|      0|        g_autofree gchar *str = fu_usb_base_hdr_to_string(st);
  ------------------
  |  | 1167|      0|#define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree)
  |  |  ------------------
  |  |  |  | 1129|      0|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  260|      0|        g_debug("%s", str);
  ------------------
  |  |  351|      0|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  352|      0|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|      0|                               __VA_ARGS__)
  ------------------
  261|      0|    }
  262|   721k|    if (!fu_usb_base_hdr_validate_internal(st, error))
  ------------------
  |  Branch (262:9): [True: 0, False: 721k]
  ------------------
  263|      0|        return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  264|   721k|    return TRUE;
  ------------------
  |  |  818|   721k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   721k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  265|   721k|}
fu-usb-struct.c:fu_usb_base_hdr_validate_internal:
  251|   721k|{
  252|   721k|    g_return_val_if_fail(st != NULL, FALSE);
  ------------------
  |  |  643|   721k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   721k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   721k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   721k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   721k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   721k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   721k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   721k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 721k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   721k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   721k|   else                                         \
  |  |  |  |  |  | 1021|   721k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   721k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   721k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 721k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   721k|      { } \
  |  |  646|   721k|    else \
  |  |  647|   721k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   721k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   721k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 721k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  253|   721k|    return TRUE;
  ------------------
  |  |  818|   721k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   721k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  254|   721k|}
fu-usb-struct.c:fu_usb_device_hdr_parse:
  575|    826|{
  576|    826|    g_autoptr(FuUsbDeviceHdr) st = fu_usb_device_hdr_new_internal();
  ------------------
  |  | 1162|    826|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|    826|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  577|    826|    g_return_val_if_fail(buf != NULL, NULL);
  ------------------
  |  |  643|    826|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    826|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    826|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    826|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    826| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    826|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    826|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    826|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 826, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    826|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    826|   else                                         \
  |  |  |  |  |  | 1021|    826|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    826|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    826|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 826, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    826|      { } \
  |  |  646|    826|    else \
  |  |  647|    826|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    826|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    826|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 826]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  578|    826|    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
  ------------------
  |  |  643|    826|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    826|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    826|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    826|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    826| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    826|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    826|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.65k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 826, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    826|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    826|   else                                         \
  |  |  |  |  |  | 1021|    826|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    826|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    826|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 826, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    826|      { } \
  |  |  646|    826|    else \
  |  |  647|    826|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    826|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    826|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 826]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  579|    826|    if (!fu_memchk_read(bufsz, offset, 18, error)) {
  ------------------
  |  Branch (579:9): [True: 32, False: 794]
  ------------------
  580|     32|        g_prefix_error_literal(error, "invalid struct FuUsbDeviceHdr: ");
  ------------------
  |  |   11|     32|#define g_prefix_error_literal	  g_prefix_error
  ------------------
  581|     32|        return NULL;
  582|     32|    }
  583|    794|    st->buf = g_byte_array_new();
  584|    794|    g_byte_array_append(st->buf, buf + offset, 18);
  585|    794|    if (!fu_usb_device_hdr_parse_internal(st, error))
  ------------------
  |  Branch (585:9): [True: 43, False: 751]
  ------------------
  586|     43|        return NULL;
  587|    751|    return g_steal_pointer(&st);
  ------------------
  |  |  222|    751|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  588|    794|}
fu-usb-struct.c:fu_usb_device_hdr_new_internal:
  355|    826|{
  356|       |    FuUsbDeviceHdr *st = g_new0(FuUsbDeviceHdr, 1);
  ------------------
  |  |  307|    826|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|    826|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    826|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|    826|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|    826|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|    826|	  gpointer __p;						\
  |  |  |  |  239|    826|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 826]
  |  |  |  |  ------------------
  |  |  |  |  240|    826|	    __p = g_##func (__n);				\
  |  |  |  |  241|    826|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 826, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|    826|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|    826|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|    826|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 826]
  |  |  |  |  |  Branch (242:26): [True: 826, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|    826|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|    826|	  else							\
  |  |  |  |  245|    826|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|    826|	  __p;							\
  |  |  |  |  247|    826|	}))
  |  |  ------------------
  ------------------
  357|    826|    st->refcount = 1;
  358|    826|    return st;
  359|    826|}
fu-usb-struct.c:fu_usb_device_hdr_parse_internal:
  560|    794|{
  561|    794|    if (g_log_get_debug_enabled()) {
  ------------------
  |  |   11|    794|#define g_log_get_debug_enabled() (g_getenv("FWUPD_VERBOSE") != NULL)
  |  |  ------------------
  |  |  |  Branch (11:35): [True: 0, False: 794]
  |  |  ------------------
  ------------------
  562|      0|        g_autofree gchar *str = fu_usb_device_hdr_to_string(st);
  ------------------
  |  | 1167|      0|#define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree)
  |  |  ------------------
  |  |  |  | 1129|      0|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  563|      0|        g_debug("%s", str);
  ------------------
  |  |  351|      0|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  352|      0|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|      0|                               __VA_ARGS__)
  ------------------
  564|      0|    }
  565|    794|    if (!fu_usb_device_hdr_validate_internal(st, error))
  ------------------
  |  Branch (565:9): [True: 43, False: 751]
  ------------------
  566|     43|        return FALSE;
  ------------------
  |  |  814|     43|#define	FALSE	(0)
  ------------------
  567|    751|    return TRUE;
  ------------------
  |  |  818|    751|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    751|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  568|    794|}
fu-usb-struct.c:fu_usb_device_hdr_get_descriptor_type:
  376|    880|{
  377|    880|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    880|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    880|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    880|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    880|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    880| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    880|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    880|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    880|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 880, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    880|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    880|   else                                         \
  |  |  |  |  |  | 1021|    880|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    880|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    880|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 880, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    880|      { } \
  |  |  646|    880|    else \
  |  |  647|    880|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    880|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    880|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 880]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  378|    880|    return st->buf->data[1];
  379|    880|}
fu-usb-struct.c:fu_usb_device_hdr_validate_internal:
  544|    794|{
  545|    794|    g_return_val_if_fail(st != NULL, FALSE);
  ------------------
  |  |  643|    794|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    794|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    794|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    794|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    794| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    794|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    794|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    794|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 794, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    794|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    794|   else                                         \
  |  |  |  |  |  | 1021|    794|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    794|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    794|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 794, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    794|      { } \
  |  |  646|    794|    else \
  |  |  647|    794|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    794|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    794|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 794]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  546|    794|    if (fu_usb_device_hdr_get_descriptor_type(st) != FU_USB_DESCRIPTOR_KIND_DEVICE) {
  ------------------
  |  Branch (546:9): [True: 43, False: 751]
  ------------------
  547|     43|        g_set_error(error,
  548|     43|                    FWUPD_ERROR,
  ------------------
  |  |   15|     43|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  549|     43|                    FWUPD_ERROR_INVALID_DATA,
  550|     43|                    "constant FuUsbDeviceHdr.descriptor_type was not valid, "
  551|     43|                    "expected 'FU_USB_DESCRIPTOR_KIND_DEVICE' and got 0x%x '%s'",
  552|     43|                    fu_usb_device_hdr_get_descriptor_type(st),
  553|     43|                    fu_usb_descriptor_kind_to_string(fu_usb_device_hdr_get_descriptor_type(st)));
  554|     43|        return FALSE;
  ------------------
  |  |  814|     43|#define	FALSE	(0)
  ------------------
  555|     43|    }
  556|    751|    return TRUE;
  ------------------
  |  |  818|    751|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    751|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  557|    794|}
fu-usb-struct.c:fu_usb_descriptor_hdr_new_internal:
  633|   169k|{
  634|       |    FuUsbDescriptorHdr *st = g_new0(FuUsbDescriptorHdr, 1);
  ------------------
  |  |  307|   169k|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|   169k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   169k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|   169k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|   169k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|   169k|	  gpointer __p;						\
  |  |  |  |  239|   169k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 169k]
  |  |  |  |  ------------------
  |  |  |  |  240|   169k|	    __p = g_##func (__n);				\
  |  |  |  |  241|   169k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 169k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|   169k|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   169k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   169k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 169k]
  |  |  |  |  |  Branch (242:26): [True: 169k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|   169k|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|   169k|	  else							\
  |  |  |  |  245|   169k|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|   169k|	  __p;							\
  |  |  |  |  247|   169k|	}))
  |  |  ------------------
  ------------------
  635|   169k|    st->refcount = 1;
  636|   169k|    return st;
  637|   169k|}
fu-usb-struct.c:fu_usb_descriptor_hdr_parse_internal:
  766|   169k|{
  767|   169k|    if (g_log_get_debug_enabled()) {
  ------------------
  |  |   11|   169k|#define g_log_get_debug_enabled() (g_getenv("FWUPD_VERBOSE") != NULL)
  |  |  ------------------
  |  |  |  Branch (11:35): [True: 0, False: 169k]
  |  |  ------------------
  ------------------
  768|      0|        g_autofree gchar *str = fu_usb_descriptor_hdr_to_string(st);
  ------------------
  |  | 1167|      0|#define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree)
  |  |  ------------------
  |  |  |  | 1129|      0|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  769|      0|        g_debug("%s", str);
  ------------------
  |  |  351|      0|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  352|      0|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|      0|                               __VA_ARGS__)
  ------------------
  770|      0|    }
  771|   169k|    if (!fu_usb_descriptor_hdr_validate_internal(st, error))
  ------------------
  |  Branch (771:9): [True: 0, False: 169k]
  ------------------
  772|      0|        return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  773|   169k|    return TRUE;
  ------------------
  |  |  818|   169k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   169k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  774|   169k|}
fu-usb-struct.c:fu_usb_descriptor_hdr_get_descriptor_type:
  654|   169k|{
  655|   169k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|   169k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   169k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   169k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   169k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   169k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   169k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   169k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   169k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 169k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   169k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   169k|   else                                         \
  |  |  |  |  |  | 1021|   169k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   169k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   169k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 169k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   169k|      { } \
  |  |  646|   169k|    else \
  |  |  647|   169k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   169k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   169k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 169k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  656|   169k|    return st->buf->data[1];
  657|   169k|}
fu-usb-struct.c:fu_usb_descriptor_hdr_validate_internal:
  750|   169k|{
  751|   169k|    g_return_val_if_fail(st != NULL, FALSE);
  ------------------
  |  |  643|   169k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   169k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   169k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   169k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   169k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   169k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   169k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   169k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 169k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   169k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   169k|   else                                         \
  |  |  |  |  |  | 1021|   169k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   169k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   169k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 169k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   169k|      { } \
  |  |  646|   169k|    else \
  |  |  647|   169k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   169k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   169k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 169k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  752|   169k|    if (fu_usb_descriptor_hdr_get_descriptor_type(st) != FU_USB_DESCRIPTOR_KIND_CONFIG) {
  ------------------
  |  Branch (752:9): [True: 0, False: 169k]
  ------------------
  753|      0|        g_set_error(error,
  754|      0|                    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  755|      0|                    FWUPD_ERROR_INVALID_DATA,
  756|      0|                    "constant FuUsbDescriptorHdr.descriptor_type was not valid, "
  757|      0|                    "expected 'FU_USB_DESCRIPTOR_KIND_CONFIG' and got 0x%x '%s'",
  758|      0|                    fu_usb_descriptor_hdr_get_descriptor_type(st),
  759|      0|                    fu_usb_descriptor_kind_to_string(fu_usb_descriptor_hdr_get_descriptor_type(st)));
  760|      0|        return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  761|      0|    }
  762|   169k|    return TRUE;
  ------------------
  |  |  818|   169k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   169k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  763|   169k|}
fu-usb-struct.c:fu_usb_hid_descriptor_hdr_new_internal:
  832|  12.2k|{
  833|       |    FuUsbHidDescriptorHdr *st = g_new0(FuUsbHidDescriptorHdr, 1);
  ------------------
  |  |  307|  12.2k|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|  12.2k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  12.2k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|  12.2k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|  12.2k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|  12.2k|	  gpointer __p;						\
  |  |  |  |  239|  12.2k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 12.2k]
  |  |  |  |  ------------------
  |  |  |  |  240|  12.2k|	    __p = g_##func (__n);				\
  |  |  |  |  241|  12.2k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 12.2k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|  12.2k|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  12.2k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  12.2k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 12.2k]
  |  |  |  |  |  Branch (242:26): [True: 12.2k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|  12.2k|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|  12.2k|	  else							\
  |  |  |  |  245|  12.2k|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|  12.2k|	  __p;							\
  |  |  |  |  247|  12.2k|	}))
  |  |  ------------------
  ------------------
  834|  12.2k|    st->refcount = 1;
  835|  12.2k|    return st;
  836|  12.2k|}
fu-usb-struct.c:fu_usb_hid_descriptor_hdr_parse_internal:
  954|  12.2k|{
  955|  12.2k|    if (g_log_get_debug_enabled()) {
  ------------------
  |  |   11|  12.2k|#define g_log_get_debug_enabled() (g_getenv("FWUPD_VERBOSE") != NULL)
  |  |  ------------------
  |  |  |  Branch (11:35): [True: 0, False: 12.2k]
  |  |  ------------------
  ------------------
  956|      0|        g_autofree gchar *str = fu_usb_hid_descriptor_hdr_to_string(st);
  ------------------
  |  | 1167|      0|#define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree)
  |  |  ------------------
  |  |  |  | 1129|      0|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  957|      0|        g_debug("%s", str);
  ------------------
  |  |  351|      0|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  352|      0|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|      0|                               __VA_ARGS__)
  ------------------
  958|      0|    }
  959|  12.2k|    if (!fu_usb_hid_descriptor_hdr_validate_internal(st, error))
  ------------------
  |  Branch (959:9): [True: 0, False: 12.2k]
  ------------------
  960|      0|        return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  961|  12.2k|    return TRUE;
  ------------------
  |  |  818|  12.2k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  12.2k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  962|  12.2k|}
fu-usb-struct.c:fu_usb_hid_descriptor_hdr_get_descriptor_type:
  853|  12.2k|{
  854|  12.2k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  12.2k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  12.2k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  12.2k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  12.2k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  12.2k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  12.2k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  12.2k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  12.2k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 12.2k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  12.2k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  12.2k|   else                                         \
  |  |  |  |  |  | 1021|  12.2k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  12.2k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  12.2k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 12.2k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  12.2k|      { } \
  |  |  646|  12.2k|    else \
  |  |  647|  12.2k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  12.2k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  12.2k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 12.2k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  855|  12.2k|    return st->buf->data[1];
  856|  12.2k|}
fu-usb-struct.c:fu_usb_hid_descriptor_hdr_validate_internal:
  938|  12.2k|{
  939|  12.2k|    g_return_val_if_fail(st != NULL, FALSE);
  ------------------
  |  |  643|  12.2k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  12.2k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  12.2k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  12.2k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  12.2k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  12.2k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  12.2k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  12.2k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 12.2k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  12.2k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  12.2k|   else                                         \
  |  |  |  |  |  | 1021|  12.2k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  12.2k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  12.2k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 12.2k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  12.2k|      { } \
  |  |  646|  12.2k|    else \
  |  |  647|  12.2k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  12.2k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  12.2k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 12.2k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  940|  12.2k|    if (fu_usb_hid_descriptor_hdr_get_descriptor_type(st) != FU_USB_DESCRIPTOR_KIND_HID) {
  ------------------
  |  Branch (940:9): [True: 0, False: 12.2k]
  ------------------
  941|      0|        g_set_error(error,
  942|      0|                    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  943|      0|                    FWUPD_ERROR_INVALID_DATA,
  944|      0|                    "constant FuUsbHidDescriptorHdr.descriptor_type was not valid, "
  945|      0|                    "expected 'FU_USB_DESCRIPTOR_KIND_HID' and got 0x%x '%s'",
  946|      0|                    fu_usb_hid_descriptor_hdr_get_descriptor_type(st),
  947|      0|                    fu_usb_descriptor_kind_to_string(fu_usb_hid_descriptor_hdr_get_descriptor_type(st)));
  948|      0|        return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  949|      0|    }
  950|  12.2k|    return TRUE;
  ------------------
  |  |  818|  12.2k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  12.2k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  951|  12.2k|}
fu-usb-struct.c:fu_usb_interface_hdr_new_internal:
 1204|  77.3k|{
 1205|       |    FuUsbInterfaceHdr *st = g_new0(FuUsbInterfaceHdr, 1);
  ------------------
  |  |  307|  77.3k|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|  77.3k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  77.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|  77.3k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|  77.3k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|  77.3k|	  gpointer __p;						\
  |  |  |  |  239|  77.3k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 77.3k]
  |  |  |  |  ------------------
  |  |  |  |  240|  77.3k|	    __p = g_##func (__n);				\
  |  |  |  |  241|  77.3k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 77.3k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|  77.3k|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  77.3k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  77.3k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 77.3k]
  |  |  |  |  |  Branch (242:26): [True: 77.3k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|  77.3k|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|  77.3k|	  else							\
  |  |  |  |  245|  77.3k|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|  77.3k|	  __p;							\
  |  |  |  |  247|  77.3k|	}))
  |  |  ------------------
  ------------------
 1206|  77.3k|    st->refcount = 1;
 1207|  77.3k|    return st;
 1208|  77.3k|}
fu-usb-struct.c:fu_usb_interface_hdr_parse_internal:
 1354|  77.3k|{
 1355|  77.3k|    if (g_log_get_debug_enabled()) {
  ------------------
  |  |   11|  77.3k|#define g_log_get_debug_enabled() (g_getenv("FWUPD_VERBOSE") != NULL)
  |  |  ------------------
  |  |  |  Branch (11:35): [True: 0, False: 77.3k]
  |  |  ------------------
  ------------------
 1356|      0|        g_autofree gchar *str = fu_usb_interface_hdr_to_string(st);
  ------------------
  |  | 1167|      0|#define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree)
  |  |  ------------------
  |  |  |  | 1129|      0|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1357|      0|        g_debug("%s", str);
  ------------------
  |  |  351|      0|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  352|      0|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|      0|                               __VA_ARGS__)
  ------------------
 1358|      0|    }
 1359|  77.3k|    if (!fu_usb_interface_hdr_validate_internal(st, error))
  ------------------
  |  Branch (1359:9): [True: 0, False: 77.3k]
  ------------------
 1360|      0|        return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1361|  77.3k|    return TRUE;
  ------------------
  |  |  818|  77.3k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  77.3k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1362|  77.3k|}
fu-usb-struct.c:fu_usb_interface_hdr_get_descriptor_type:
 1225|  77.3k|{
 1226|  77.3k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  77.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  77.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  77.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  77.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  77.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  77.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  77.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  77.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  77.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  77.3k|   else                                         \
  |  |  |  |  |  | 1021|  77.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  77.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  77.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  77.3k|      { } \
  |  |  646|  77.3k|    else \
  |  |  647|  77.3k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  77.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  77.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1227|  77.3k|    return st->buf->data[1];
 1228|  77.3k|}
fu-usb-struct.c:fu_usb_interface_hdr_validate_internal:
 1338|  77.3k|{
 1339|  77.3k|    g_return_val_if_fail(st != NULL, FALSE);
  ------------------
  |  |  643|  77.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  77.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  77.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  77.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  77.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  77.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  77.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  77.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  77.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  77.3k|   else                                         \
  |  |  |  |  |  | 1021|  77.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  77.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  77.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  77.3k|      { } \
  |  |  646|  77.3k|    else \
  |  |  647|  77.3k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  77.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  77.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1340|  77.3k|    if (fu_usb_interface_hdr_get_descriptor_type(st) != FU_USB_DESCRIPTOR_KIND_INTERFACE) {
  ------------------
  |  Branch (1340:9): [True: 0, False: 77.3k]
  ------------------
 1341|      0|        g_set_error(error,
 1342|      0|                    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1343|      0|                    FWUPD_ERROR_INVALID_DATA,
 1344|      0|                    "constant FuUsbInterfaceHdr.descriptor_type was not valid, "
 1345|      0|                    "expected 'FU_USB_DESCRIPTOR_KIND_INTERFACE' and got 0x%x '%s'",
 1346|      0|                    fu_usb_interface_hdr_get_descriptor_type(st),
 1347|      0|                    fu_usb_descriptor_kind_to_string(fu_usb_interface_hdr_get_descriptor_type(st)));
 1348|      0|        return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1349|      0|    }
 1350|  77.3k|    return TRUE;
  ------------------
  |  |  818|  77.3k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  77.3k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1351|  77.3k|}
fu-usb-struct.c:fu_usb_endpoint_hdr_new_internal:
 1420|  25.9k|{
 1421|       |    FuUsbEndpointHdr *st = g_new0(FuUsbEndpointHdr, 1);
  ------------------
  |  |  307|  25.9k|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|  25.9k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  25.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|  25.9k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|  25.9k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|  25.9k|	  gpointer __p;						\
  |  |  |  |  239|  25.9k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 25.9k]
  |  |  |  |  ------------------
  |  |  |  |  240|  25.9k|	    __p = g_##func (__n);				\
  |  |  |  |  241|  25.9k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 25.9k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|  25.9k|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  25.9k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  25.9k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 25.9k]
  |  |  |  |  |  Branch (242:26): [True: 25.9k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|  25.9k|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|  25.9k|	  else							\
  |  |  |  |  245|  25.9k|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|  25.9k|	  __p;							\
  |  |  |  |  247|  25.9k|	}))
  |  |  ------------------
  ------------------
 1422|  25.9k|    st->refcount = 1;
 1423|  25.9k|    return st;
 1424|  25.9k|}
fu-usb-struct.c:fu_usb_endpoint_hdr_parse_internal:
 1521|  25.9k|{
 1522|  25.9k|    if (g_log_get_debug_enabled()) {
  ------------------
  |  |   11|  25.9k|#define g_log_get_debug_enabled() (g_getenv("FWUPD_VERBOSE") != NULL)
  |  |  ------------------
  |  |  |  Branch (11:35): [True: 0, False: 25.9k]
  |  |  ------------------
  ------------------
 1523|      0|        g_autofree gchar *str = fu_usb_endpoint_hdr_to_string(st);
  ------------------
  |  | 1167|      0|#define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree)
  |  |  ------------------
  |  |  |  | 1129|      0|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1524|      0|        g_debug("%s", str);
  ------------------
  |  |  351|      0|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  352|      0|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|      0|                               __VA_ARGS__)
  ------------------
 1525|      0|    }
 1526|  25.9k|    if (!fu_usb_endpoint_hdr_validate_internal(st, error))
  ------------------
  |  Branch (1526:9): [True: 0, False: 25.9k]
  ------------------
 1527|      0|        return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1528|  25.9k|    return TRUE;
  ------------------
  |  |  818|  25.9k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  25.9k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1529|  25.9k|}
fu-usb-struct.c:fu_usb_endpoint_hdr_validate_internal:
 1515|  25.9k|{
 1516|  25.9k|    g_return_val_if_fail(st != NULL, FALSE);
  ------------------
  |  |  643|  25.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  25.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  25.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  25.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  25.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  25.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  25.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  25.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 25.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  25.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  25.9k|   else                                         \
  |  |  |  |  |  | 1021|  25.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  25.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  25.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 25.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  25.9k|      { } \
  |  |  646|  25.9k|    else \
  |  |  647|  25.9k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |   20|      0|#define G_LOG_DOMAIN "FuStruct"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  25.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  25.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 25.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1517|  25.9k|    return TRUE;
  ------------------
  |  |  818|  25.9k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  25.9k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1518|  25.9k|}

fwupd_device_flag_from_string:
  123|  1.66k|{
  124|  1.66k|    if (g_strcmp0(val, "none") == 0)
  ------------------
  |  Branch (124:9): [True: 0, False: 1.66k]
  ------------------
  125|      0|        return FWUPD_DEVICE_FLAG_NONE;
  126|  1.66k|    if (g_strcmp0(val, "internal") == 0)
  ------------------
  |  Branch (126:9): [True: 0, False: 1.66k]
  ------------------
  127|      0|        return FWUPD_DEVICE_FLAG_INTERNAL;
  128|  1.66k|    if (g_strcmp0(val, "updatable") == 0)
  ------------------
  |  Branch (128:9): [True: 0, False: 1.66k]
  ------------------
  129|      0|        return FWUPD_DEVICE_FLAG_UPDATABLE;
  130|  1.66k|    if (g_strcmp0(val, "require-ac") == 0)
  ------------------
  |  Branch (130:9): [True: 0, False: 1.66k]
  ------------------
  131|      0|        return FWUPD_DEVICE_FLAG_REQUIRE_AC;
  132|  1.66k|    if (g_strcmp0(val, "locked") == 0)
  ------------------
  |  Branch (132:9): [True: 0, False: 1.66k]
  ------------------
  133|      0|        return FWUPD_DEVICE_FLAG_LOCKED;
  134|  1.66k|    if (g_strcmp0(val, "supported") == 0)
  ------------------
  |  Branch (134:9): [True: 0, False: 1.66k]
  ------------------
  135|      0|        return FWUPD_DEVICE_FLAG_SUPPORTED;
  136|  1.66k|    if (g_strcmp0(val, "needs-bootloader") == 0)
  ------------------
  |  Branch (136:9): [True: 0, False: 1.66k]
  ------------------
  137|      0|        return FWUPD_DEVICE_FLAG_NEEDS_BOOTLOADER;
  138|  1.66k|    if (g_strcmp0(val, "needs-reboot") == 0)
  ------------------
  |  Branch (138:9): [True: 0, False: 1.66k]
  ------------------
  139|      0|        return FWUPD_DEVICE_FLAG_NEEDS_REBOOT;
  140|  1.66k|    if (g_strcmp0(val, "reported") == 0)
  ------------------
  |  Branch (140:9): [True: 0, False: 1.66k]
  ------------------
  141|      0|        return FWUPD_DEVICE_FLAG_REPORTED;
  142|  1.66k|    if (g_strcmp0(val, "notified") == 0)
  ------------------
  |  Branch (142:9): [True: 0, False: 1.66k]
  ------------------
  143|      0|        return FWUPD_DEVICE_FLAG_NOTIFIED;
  144|  1.66k|    if (g_strcmp0(val, "is-bootloader") == 0)
  ------------------
  |  Branch (144:9): [True: 0, False: 1.66k]
  ------------------
  145|      0|        return FWUPD_DEVICE_FLAG_IS_BOOTLOADER;
  146|  1.66k|    if (g_strcmp0(val, "wait-for-replug") == 0)
  ------------------
  |  Branch (146:9): [True: 0, False: 1.66k]
  ------------------
  147|      0|        return FWUPD_DEVICE_FLAG_WAIT_FOR_REPLUG;
  148|  1.66k|    if (g_strcmp0(val, "needs-shutdown") == 0)
  ------------------
  |  Branch (148:9): [True: 0, False: 1.66k]
  ------------------
  149|      0|        return FWUPD_DEVICE_FLAG_NEEDS_SHUTDOWN;
  150|  1.66k|    if (g_strcmp0(val, "another-write-required") == 0)
  ------------------
  |  Branch (150:9): [True: 0, False: 1.66k]
  ------------------
  151|      0|        return FWUPD_DEVICE_FLAG_ANOTHER_WRITE_REQUIRED;
  152|  1.66k|    if (g_strcmp0(val, "needs-activation") == 0)
  ------------------
  |  Branch (152:9): [True: 0, False: 1.66k]
  ------------------
  153|      0|        return FWUPD_DEVICE_FLAG_NEEDS_ACTIVATION;
  154|  1.66k|    if (g_strcmp0(val, "historical") == 0)
  ------------------
  |  Branch (154:9): [True: 0, False: 1.66k]
  ------------------
  155|      0|        return FWUPD_DEVICE_FLAG_HISTORICAL;
  156|  1.66k|    if (g_strcmp0(val, "will-disappear") == 0)
  ------------------
  |  Branch (156:9): [True: 0, False: 1.66k]
  ------------------
  157|      0|        return FWUPD_DEVICE_FLAG_WILL_DISAPPEAR;
  158|  1.66k|    if (g_strcmp0(val, "can-verify") == 0)
  ------------------
  |  Branch (158:9): [True: 0, False: 1.66k]
  ------------------
  159|      0|        return FWUPD_DEVICE_FLAG_CAN_VERIFY;
  160|  1.66k|    if (g_strcmp0(val, "can-verify-image") == 0)
  ------------------
  |  Branch (160:9): [True: 0, False: 1.66k]
  ------------------
  161|      0|        return FWUPD_DEVICE_FLAG_CAN_VERIFY_IMAGE;
  162|  1.66k|    if (g_strcmp0(val, "dual-image") == 0)
  ------------------
  |  Branch (162:9): [True: 0, False: 1.66k]
  ------------------
  163|      0|        return FWUPD_DEVICE_FLAG_DUAL_IMAGE;
  164|  1.66k|    if (g_strcmp0(val, "self-recovery") == 0)
  ------------------
  |  Branch (164:9): [True: 0, False: 1.66k]
  ------------------
  165|      0|        return FWUPD_DEVICE_FLAG_SELF_RECOVERY;
  166|  1.66k|    if (g_strcmp0(val, "usable-during-update") == 0)
  ------------------
  |  Branch (166:9): [True: 0, False: 1.66k]
  ------------------
  167|      0|        return FWUPD_DEVICE_FLAG_USABLE_DURING_UPDATE;
  168|  1.66k|    if (g_strcmp0(val, "version-check-required") == 0)
  ------------------
  |  Branch (168:9): [True: 0, False: 1.66k]
  ------------------
  169|      0|        return FWUPD_DEVICE_FLAG_VERSION_CHECK_REQUIRED;
  170|  1.66k|    if (g_strcmp0(val, "install-all-releases") == 0)
  ------------------
  |  Branch (170:9): [True: 0, False: 1.66k]
  ------------------
  171|      0|        return FWUPD_DEVICE_FLAG_INSTALL_ALL_RELEASES;
  172|  1.66k|    if (g_strcmp0(val, "updatable-hidden") == 0)
  ------------------
  |  Branch (172:9): [True: 0, False: 1.66k]
  ------------------
  173|      0|        return FWUPD_DEVICE_FLAG_UPDATABLE_HIDDEN;
  174|  1.66k|    if (g_strcmp0(val, "has-multiple-branches") == 0)
  ------------------
  |  Branch (174:9): [True: 0, False: 1.66k]
  ------------------
  175|      0|        return FWUPD_DEVICE_FLAG_HAS_MULTIPLE_BRANCHES;
  176|  1.66k|    if (g_strcmp0(val, "backup-before-install") == 0)
  ------------------
  |  Branch (176:9): [True: 0, False: 1.66k]
  ------------------
  177|      0|        return FWUPD_DEVICE_FLAG_BACKUP_BEFORE_INSTALL;
  178|  1.66k|    if (g_strcmp0(val, "wildcard-install") == 0)
  ------------------
  |  Branch (178:9): [True: 0, False: 1.66k]
  ------------------
  179|      0|        return FWUPD_DEVICE_FLAG_WILDCARD_INSTALL;
  180|  1.66k|    if (g_strcmp0(val, "only-version-upgrade") == 0)
  ------------------
  |  Branch (180:9): [True: 0, False: 1.66k]
  ------------------
  181|      0|        return FWUPD_DEVICE_FLAG_ONLY_VERSION_UPGRADE;
  182|  1.66k|    if (g_strcmp0(val, "unreachable") == 0)
  ------------------
  |  Branch (182:9): [True: 0, False: 1.66k]
  ------------------
  183|      0|        return FWUPD_DEVICE_FLAG_UNREACHABLE;
  184|  1.66k|    if (g_strcmp0(val, "affects-fde") == 0)
  ------------------
  |  Branch (184:9): [True: 0, False: 1.66k]
  ------------------
  185|      0|        return FWUPD_DEVICE_FLAG_AFFECTS_FDE;
  186|  1.66k|    if (g_strcmp0(val, "end-of-life") == 0)
  ------------------
  |  Branch (186:9): [True: 0, False: 1.66k]
  ------------------
  187|      0|        return FWUPD_DEVICE_FLAG_END_OF_LIFE;
  188|  1.66k|    if (g_strcmp0(val, "signed-payload") == 0)
  ------------------
  |  Branch (188:9): [True: 0, False: 1.66k]
  ------------------
  189|      0|        return FWUPD_DEVICE_FLAG_SIGNED_PAYLOAD;
  190|  1.66k|    if (g_strcmp0(val, "unsigned-payload") == 0)
  ------------------
  |  Branch (190:9): [True: 0, False: 1.66k]
  ------------------
  191|      0|        return FWUPD_DEVICE_FLAG_UNSIGNED_PAYLOAD;
  192|  1.66k|    if (g_strcmp0(val, "emulated") == 0)
  ------------------
  |  Branch (192:9): [True: 0, False: 1.66k]
  ------------------
  193|      0|        return FWUPD_DEVICE_FLAG_EMULATED;
  194|  1.66k|    if (g_strcmp0(val, "emulation-tag") == 0)
  ------------------
  |  Branch (194:9): [True: 0, False: 1.66k]
  ------------------
  195|      0|        return FWUPD_DEVICE_FLAG_EMULATION_TAG;
  196|  1.66k|    if (g_strcmp0(val, "only-explicit-updates") == 0)
  ------------------
  |  Branch (196:9): [True: 0, False: 1.66k]
  ------------------
  197|      0|        return FWUPD_DEVICE_FLAG_ONLY_EXPLICIT_UPDATES;
  198|  1.66k|    if (g_strcmp0(val, "can-emulation-tag") == 0)
  ------------------
  |  Branch (198:9): [True: 0, False: 1.66k]
  ------------------
  199|      0|        return FWUPD_DEVICE_FLAG_CAN_EMULATION_TAG;
  200|  1.66k|    if (g_strcmp0(val, "install-skip-version-check") == 0)
  ------------------
  |  Branch (200:9): [True: 0, False: 1.66k]
  ------------------
  201|      0|        return FWUPD_DEVICE_FLAG_INSTALL_SKIP_VERSION_CHECK;
  202|  1.66k|    return FWUPD_DEVICE_FLAG_UNKNOWN;
  203|  1.66k|}

fu-fuzzer-firmware.c:glib_autoptr_cleanup_GObject:
 1139|    832|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|    832|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-fuzzer-firmware.c:glib_autoptr_clear_GObject:
 1137|    832|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 832, False: 0]
  ------------------
fu-fuzzer-firmware.c:glib_autoptr_cleanup_GBytes:
 1139|    832|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|    832|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-fuzzer-firmware.c:glib_autoptr_clear_GBytes:
 1137|    832|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 832, False: 0]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbBaseHdr:
 1139|   721k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   721k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbBaseHdr:
 1137|   721k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 276, False: 721k]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbDeviceHdr:
 1139|    826|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|    826|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbDeviceHdr:
 1137|    826|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 75, False: 751]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbDescriptorHdr:
 1139|   169k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   169k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbDescriptorHdr:
 1137|   169k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 35, False: 169k]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbHidDescriptorHdr:
 1139|  12.2k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  12.2k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbHidDescriptorHdr:
 1137|  12.2k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 10, False: 12.2k]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbInterfaceHdr:
 1139|  77.3k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  77.3k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbInterfaceHdr:
 1137|  77.3k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 44, False: 77.3k]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbEndpointHdr:
 1139|  25.9k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  25.9k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbEndpointHdr:
 1137|  25.9k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 40, False: 25.9k]
  ------------------
fu-firmware.c:glib_autoptr_cleanup_GBytes:
 1139|   430k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   430k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-firmware.c:glib_autoptr_clear_GBytes:
 1137|   430k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 146k, False: 284k]
  ------------------
fu-firmware.c:glib_autoptr_cleanup_GInputStream:
 1139|  1.29M|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  1.29M|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-firmware.c:glib_autoptr_clear_GInputStream:
 1137|  1.29M|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 1.29M, False: 54]
  ------------------
fu-input-stream.c:glib_autoptr_cleanup_GByteArray:
 1139|   828k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   828k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-input-stream.c:glib_autoptr_clear_GByteArray:
 1137|   828k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 3, False: 828k]
  ------------------
fu-input-stream.c:glib_autoptr_cleanup_GError:
 1139|   682k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   682k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-input-stream.c:glib_autoptr_clear_GError:
 1137|   682k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 0, False: 682k]
  ------------------
fu-partial-input-stream.c:glib_autoptr_cleanup_FuPartialInputStream:
 1139|   428k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   428k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-partial-input-stream.c:glib_autoptr_clear_FuPartialInputStream:
 1137|   428k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 0, False: 428k]
  ------------------
fu-usb-config-descriptor.c:glib_autoptr_cleanup_FuUsbDescriptorHdr:
 1139|   169k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   169k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-config-descriptor.c:glib_autoptr_clear_FuUsbDescriptorHdr:
 1137|   169k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 169k, False: 35]
  ------------------
fu-usb-descriptor.c:glib_autoptr_cleanup_FuUsbBaseHdr:
 1139|   249k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   249k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-descriptor.c:glib_autoptr_clear_FuUsbBaseHdr:
 1137|   249k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 249k, False: 188]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_GError:
 1139|   472k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   472k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_GError:
 1137|   472k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 0, False: 472k]
  ------------------
fu-usb-device.c:glib_autoptr_clear_GObject:
 1137|   120k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 120k, False: 0]
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuFirmware:
 1137|   120k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 120k, False: 0]
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbDescriptor:
 1137|   120k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 120k, False: 0]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbConfigDescriptor:
 1139|   169k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   169k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbConfigDescriptor:
 1137|   169k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 35, False: 169k]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbHidDescriptor:
 1139|  12.2k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  12.2k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbHidDescriptor:
 1137|  12.2k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 603, False: 11.6k]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbDeviceHdr:
 1139|    832|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|    832|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbDeviceHdr:
 1137|    832|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 751, False: 81]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbBaseHdr:
 1139|   472k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   472k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbBaseHdr:
 1137|   472k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 472k, False: 88]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbDescriptor:
 1139|  16.6k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  16.6k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbEndpoint:
 1139|  25.9k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  25.9k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbEndpoint:
 1137|  25.9k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 25.9k, False: 0]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbInterface:
 1139|  78.2k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  78.2k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbInterface:
 1137|  78.2k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 77.7k, False: 505]
  ------------------
fu-usb-endpoint.c:glib_autoptr_cleanup_FuUsbEndpointHdr:
 1139|  25.9k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  25.9k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-endpoint.c:glib_autoptr_clear_FuUsbEndpointHdr:
 1137|  25.9k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 25.9k, False: 40]
  ------------------
fu-usb-hid-descriptor.c:glib_autoptr_cleanup_FuUsbHidDescriptorHdr:
 1139|  12.2k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  12.2k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-hid-descriptor.c:glib_autoptr_clear_FuUsbHidDescriptorHdr:
 1137|  12.2k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 12.2k, False: 10]
  ------------------
fu-usb-interface.c:glib_autoptr_cleanup_FuUsbInterfaceHdr:
 1139|  77.3k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  77.3k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-interface.c:glib_autoptr_clear_FuUsbInterfaceHdr:
 1137|  77.3k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 77.3k, False: 44]
  ------------------
fu-usb-interface.c:glib_autoptr_cleanup_GByteArray:
 1139|  2.21k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  2.21k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-interface.c:glib_autoptr_clear_GByteArray:
 1137|  2.21k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 2.21k, False: 3]
  ------------------
fu-usb-interface.c:glib_autoptr_cleanup_GBytes:
 1139|  2.21k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  2.21k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-interface.c:glib_autoptr_clear_GBytes:
 1137|  2.21k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 2.21k, False: 0]
  ------------------
fu-usb-interface.c:glib_autoptr_clear_FuUsbDescriptor:
 1137|   129k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 129k, False: 0]
  ------------------
fu-usb-interface.c:glib_autoptr_clear_FuFirmware:
 1137|   129k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 129k, False: 0]
  ------------------
fu-usb-interface.c:glib_autoptr_clear_GObject:
 1137|   129k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 129k, False: 0]
  ------------------
fu-usb-interface.c:glib_autoptr_cleanup_FuUsbDescriptor:
 1139|   129k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   129k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------

fu-usb-struct.c:g_steal_pointer:
  210|  1.00M|{
  211|  1.00M|  gpointer *ptr = (gpointer *) pp;
  212|  1.00M|  gpointer ref;
  213|       |
  214|  1.00M|  ref = *ptr;
  215|  1.00M|  *ptr = NULL;
  216|       |
  217|  1.00M|  return ref;
  218|  1.00M|}
fu-input-stream.c:g_steal_pointer:
  210|   828k|{
  211|   828k|  gpointer *ptr = (gpointer *) pp;
  212|   828k|  gpointer ref;
  213|       |
  214|   828k|  ref = *ptr;
  215|   828k|  *ptr = NULL;
  216|       |
  217|   828k|  return ref;
  218|   828k|}
fu-partial-input-stream.c:g_steal_pointer:
  210|   428k|{
  211|   428k|  gpointer *ptr = (gpointer *) pp;
  212|   428k|  gpointer ref;
  213|       |
  214|   428k|  ref = *ptr;
  215|   428k|  *ptr = NULL;
  216|       |
  217|   428k|  return ref;
  218|   428k|}
fu-usb-device.c:g_steal_pointer:
  210|   180k|{
  211|   180k|  gpointer *ptr = (gpointer *) pp;
  212|   180k|  gpointer ref;
  213|       |
  214|   180k|  ref = *ptr;
  215|   180k|  *ptr = NULL;
  216|       |
  217|   180k|  return ref;
  218|   180k|}

fu-common.c:_GLIB_CHECKED_ADD_U64:
  462|  1.51M|static inline gboolean _GLIB_CHECKED_ADD_U64 (guint64 *dest, guint64 a, guint64 b) {
  463|  1.51M|  G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64));
  ------------------
  |  |  758|  1.51M|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  ------------------
  464|  1.51M|  return !__builtin_uaddll_overflow(a, b, (unsigned long long *) dest); }

fu-device.c:g_set_object:
  723|    832|{
  724|    832|  GObject *old_object = *object_ptr;
  725|       |
  726|       |  /* rely on g_object_[un]ref() to check the pointers are actually GObjects;
  727|       |   * elide a (object_ptr != NULL) check because most of the time we will be
  728|       |   * operating on struct members with a constant offset, so a NULL check would
  729|       |   * not catch bugs
  730|       |   */
  731|       |
  732|    832|  if (old_object == new_object)
  ------------------
  |  Branch (732:7): [True: 832, False: 0]
  ------------------
  733|    832|    return FALSE;
  ------------------
  |  |  814|    832|#define	FALSE	(0)
  ------------------
  734|       |
  735|      0|  if (new_object != NULL)
  ------------------
  |  Branch (735:7): [True: 0, False: 0]
  ------------------
  736|      0|    g_object_ref (new_object);
  ------------------
  |  |  523|      0|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
  737|       |
  738|      0|  *object_ptr = new_object;
  739|       |
  740|      0|  if (old_object != NULL)
  ------------------
  |  Branch (740:7): [True: 0, False: 0]
  ------------------
  741|      0|    g_object_unref (old_object);
  742|       |
  743|      0|  return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  744|    832|}
fu-usb-device.c:g_set_object:
  723|  77.0k|{
  724|  77.0k|  GObject *old_object = *object_ptr;
  725|       |
  726|       |  /* rely on g_object_[un]ref() to check the pointers are actually GObjects;
  727|       |   * elide a (object_ptr != NULL) check because most of the time we will be
  728|       |   * operating on struct members with a constant offset, so a NULL check would
  729|       |   * not catch bugs
  730|       |   */
  731|       |
  732|  77.0k|  if (old_object == new_object)
  ------------------
  |  Branch (732:7): [True: 0, False: 77.0k]
  ------------------
  733|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  734|       |
  735|  77.0k|  if (new_object != NULL)
  ------------------
  |  Branch (735:7): [True: 77.0k, False: 0]
  ------------------
  736|  77.0k|    g_object_ref (new_object);
  ------------------
  |  |  523|  77.0k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
  737|       |
  738|  77.0k|  *object_ptr = new_object;
  739|       |
  740|  77.0k|  if (old_object != NULL)
  ------------------
  |  Branch (740:7): [True: 76.7k, False: 327]
  ------------------
  741|  76.7k|    g_object_unref (old_object);
  742|       |
  743|  77.0k|  return TRUE;
  ------------------
  |  |  818|  77.0k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  77.0k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  744|  77.0k|}

fu-fuzzer-firmware.c:FU_FUZZER:
 1580|    832|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                         \
 1581|    832|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }               \
  ------------------
  |  |  484|    832|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|    832|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fwupd-device.c:fwupd_device_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fwupd-device.c:fwupd_device_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 1, False: 0]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
fwupd-device.c:fwupd_device_get_instance_private:
 1990|  6.65k|type_name##_get_instance_private (TypeName *self) \
 1991|  6.65k|{ \
 1992|  6.65k|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|  6.65k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|  6.65k|} \
fwupd-device.c:FWUPD_IS_DEVICE:
 1506|  4.99k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|  4.99k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  4.99k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  4.99k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.99k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  4.99k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  4.99k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 4.99k]
  |  |  |  |  ------------------
  |  |  |  | 2316|  4.99k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  4.99k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 4.99k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 0, False: 4.99k]
  |  |  |  |  ------------------
  |  |  |  | 2318|  4.99k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  4.99k|  else \
  |  |  |  | 2320|  4.99k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  4.99k|  __r; \
  |  |  |  | 2322|  4.99k|}))
  |  |  ------------------
  ------------------
fwupd-device.c:FWUPD_DEVICE:
 1502|    832|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|    832|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|    832|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|    832|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fwupd-request.c:fwupd_request_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-backend.c:fu_backend_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-context.c:fu_context_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-device.c:fu_device_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-device.c:fu_device_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 1, False: 0]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
fu-device.c:fu_device_get_instance_private:
 1990|  26.3k|type_name##_get_instance_private (TypeName *self) \
 1991|  26.3k|{ \
 1992|  26.3k|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|  26.3k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|  26.3k|} \
fu-device.c:FU_IS_DEVICE:
 1506|  16.1k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|  16.1k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  16.1k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  16.1k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  16.1k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  16.1k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  16.1k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 16.1k]
  |  |  |  |  ------------------
  |  |  |  | 2316|  16.1k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  16.1k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 16.1k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 0, False: 16.1k]
  |  |  |  |  ------------------
  |  |  |  | 2318|  16.1k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  16.1k|  else \
  |  |  |  | 2320|  16.1k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  16.1k|  __r; \
  |  |  |  | 2322|  16.1k|}))
  |  |  ------------------
  ------------------
fu-device.c:FU_DEVICE:
 1502|  5.82k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  5.82k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  5.82k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  5.82k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-device.c:FWUPD_DEVICE:
 1502|  4.99k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  4.99k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  4.99k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  4.99k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-device.c:FU_DEVICE_CLASS:
 1504|      1|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) {        \
 1505|      1|    return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }         \
  ------------------
  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  ------------------
  ------------------
fu-device.c:FU_IS_CONTEXT:
 1506|    832|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|    832|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|    832|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|    832|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    832|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|    832|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|    832|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 832, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2316|    832|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    832|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|    832|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 0, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2318|      0|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|      0|  else \
  |  |  |  | 2320|      0|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|    832|  __r; \
  |  |  |  | 2322|    832|}))
  |  |  ------------------
  ------------------
fu-firmware.c:fu_firmware_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-firmware.c:fu_firmware_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 1, False: 0]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
fu-firmware.c:fu_firmware_get_instance_private:
 1990|  5.66M|type_name##_get_instance_private (TypeName *self) \
 1991|  5.66M|{ \
 1992|  5.66M|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|  5.66M|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|  5.66M|} \
fu-firmware.c:FU_IS_FIRMWARE:
 1506|  4.80M|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|  4.80M|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  4.80M|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  4.80M|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.80M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  4.80M|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  4.80M|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 4.80M]
  |  |  |  |  ------------------
  |  |  |  | 2316|  4.80M|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  4.80M|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 4.80M, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 0, False: 4.80M]
  |  |  |  |  ------------------
  |  |  |  | 2318|  4.80M|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  4.80M|  else \
  |  |  |  | 2320|  4.80M|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  4.80M|  __r; \
  |  |  |  | 2322|  4.80M|}))
  |  |  ------------------
  ------------------
fu-firmware.c:FU_FIRMWARE_GET_CLASS:
 1510|  1.29M|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_GET_CLASS (gpointer ptr) {    \
 1511|  1.29M|    return G_TYPE_INSTANCE_GET_CLASS (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }       \
  ------------------
  |  |  527|  1.29M|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2309|  1.29M|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  ------------------
  ------------------
fu-firmware.c:FU_FIRMWARE:
 1502|  1.29M|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  1.29M|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  1.29M|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  1.29M|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-fuzzer.c:FU_FUZZER_GET_IFACE:
 1584|    832|  G_GNUC_UNUSED static inline ModuleObjName##Interface * MODULE##_##OBJ_NAME##_GET_IFACE (gpointer ptr) {  \
 1585|    832|    return G_TYPE_INSTANCE_GET_INTERFACE (ptr, module_obj_name##_get_type (), ModuleObjName##Interface); } \
  ------------------
  |  |  540|    832|#define G_TYPE_INSTANCE_GET_INTERFACE(instance, g_type, c_type) (_G_TYPE_IGI ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2310|    832|#define _G_TYPE_IGI(ip, gt, ct)         ((ct*) g_type_interface_peek (((GTypeInstance*) ip)->g_class, gt))
  |  |  ------------------
  ------------------
fu-partial-input-stream.c:fu_partial_input_stream_get_type_once:
 1618|      1|#define G_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-partial-input-stream.c:fu_partial_input_stream_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 0, False: 1]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
fu-partial-input-stream.c:FU_PARTIAL_INPUT_STREAM:
 1410|  3.98M|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|  3.98M|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  3.98M|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  3.98M|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-partial-input-stream.c:FU_IS_PARTIAL_INPUT_STREAM:
 1412|  1.36M|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1413|  1.36M|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  1.36M|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  1.36M|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.36M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  1.36M|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  1.36M|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 1.36M]
  |  |  |  |  ------------------
  |  |  |  | 2316|  1.36M|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  1.36M|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 1.36M, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 1.36M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2318|  1.36M|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|  1.36M|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  1.36M|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  1.36M|  else \
  |  |  |  | 2320|  1.36M|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  1.36M|  __r; \
  |  |  |  | 2322|  1.36M|}))
  |  |  ------------------
  ------------------
fu-udev-device.c:fu_udev_device_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-udev-device.c:fu_udev_device_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 1, False: 0]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
fu-udev-device.c:FU_DEVICE_CLASS:
 1504|      1|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) {        \
 1505|      1|    return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }         \
  ------------------
  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  ------------------
  ------------------
fu-udev-device.c:FU_DEVICE:
 1502|  4.16k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  4.16k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  4.16k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  4.16k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-udev-device.c:fu_udev_device_get_instance_private:
 1990|  1.66k|type_name##_get_instance_private (TypeName *self) \
 1991|  1.66k|{ \
 1992|  1.66k|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|  1.66k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|  1.66k|} \
fu-udev-device.c:FU_UDEV_DEVICE:
 1502|    832|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|    832|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|    832|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|    832|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-config-descriptor.c:fu_usb_config_descriptor_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-usb-config-descriptor.c:fu_usb_config_descriptor_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 0, False: 1]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
fu-usb-config-descriptor.c:FU_FIRMWARE_CLASS:
 1504|      1|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) {        \
 1505|      1|    return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }         \
  ------------------
  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  ------------------
  ------------------
fu-usb-config-descriptor.c:FU_FIRMWARE:
 1502|   169k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|   169k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|   169k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|   169k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-config-descriptor.c:FU_USB_CONFIG_DESCRIPTOR:
 1410|   338k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|   338k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|   338k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|   338k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-descriptor.c:fu_usb_descriptor_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-usb-descriptor.c:fu_usb_descriptor_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 0, False: 1]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
fu-usb-descriptor.c:FU_FIRMWARE_CLASS:
 1504|      1|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) {        \
 1505|      1|    return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }         \
  ------------------
  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  ------------------
  ------------------
fu-usb-descriptor.c:FU_FIRMWARE:
 1502|   430k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|   430k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|   430k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|   430k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-device.c:fu_usb_device_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-usb-device.c:fu_usb_device_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 1, False: 0]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
fu-usb-device.c:FU_DEVICE_CLASS:
 1504|      1|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) {        \
 1505|      1|    return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }         \
  ------------------
  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  ------------------
  ------------------
fu-usb-device.c:FU_USB_DEVICE:
 1502|  2.49k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  2.49k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  2.49k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  2.49k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-device.c:FU_FIRMWARE:
 1502|   351k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|   351k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|   351k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|   351k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-device.c:fu_usb_device_get_instance_private:
 1990|  80.4k|type_name##_get_instance_private (TypeName *self) \
 1991|  80.4k|{ \
 1992|  80.4k|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|  80.4k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|  80.4k|} \
fu-usb-device.c:FU_DEVICE:
 1502|  5.66k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  5.66k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  5.66k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  5.66k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-endpoint.c:fu_usb_endpoint_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-usb-endpoint.c:fu_usb_endpoint_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 0, False: 1]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
fu-usb-endpoint.c:FU_FIRMWARE_CLASS:
 1504|  25.9k|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) {        \
 1505|  25.9k|    return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }         \
  ------------------
  |  |  553|  25.9k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2302|  25.9k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  ------------------
  ------------------
fu-usb-endpoint.c:FU_IS_USB_ENDPOINT:
 1412|  14.3k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1413|  14.3k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  14.3k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  14.3k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  14.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  14.3k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  14.3k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 14.3k]
  |  |  |  |  ------------------
  |  |  |  | 2316|  14.3k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  14.3k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 14.3k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 14.3k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2318|  14.3k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|  14.3k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  14.3k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  14.3k|  else \
  |  |  |  | 2320|  14.3k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  14.3k|  __r; \
  |  |  |  | 2322|  14.3k|}))
  |  |  ------------------
  ------------------
fu-usb-endpoint.c:FU_USB_ENDPOINT:
 1410|  25.9k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|  25.9k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  25.9k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  25.9k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-hid-descriptor.c:fu_usb_hid_descriptor_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-usb-hid-descriptor.c:fu_usb_hid_descriptor_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 0, False: 1]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
fu-usb-hid-descriptor.c:FU_FIRMWARE_CLASS:
 1504|      1|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) {        \
 1505|      1|    return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }         \
  ------------------
  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  ------------------
  ------------------
fu-usb-hid-descriptor.c:FU_USB_HID_DESCRIPTOR:
 1410|  24.5k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|  24.5k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  24.5k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  24.5k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-hid-descriptor.c:FU_FIRMWARE:
 1502|  12.2k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  12.2k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  12.2k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  12.2k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-hid-descriptor.c:FU_IS_USB_HID_DESCRIPTOR:
 1412|  11.6k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1413|  11.6k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  11.6k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  11.6k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  11.6k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  11.6k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  11.6k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 11.6k]
  |  |  |  |  ------------------
  |  |  |  | 2316|  11.6k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  11.6k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 11.6k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 11.6k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2318|  11.6k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|  11.6k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  11.6k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  11.6k|  else \
  |  |  |  | 2320|  11.6k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  11.6k|  __r; \
  |  |  |  | 2322|  11.6k|}))
  |  |  ------------------
  ------------------
fu-usb-interface.c:fu_usb_interface_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-usb-interface.c:fu_usb_interface_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 0, False: 1]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
fu-usb-interface.c:FU_FIRMWARE_CLASS:
 1504|  77.3k|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) {        \
 1505|  77.3k|    return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }         \
  ------------------
  |  |  553|  77.3k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2302|  77.3k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  ------------------
  ------------------
fu-usb-interface.c:FU_FIRMWARE:
 1502|   749k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|   749k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|   749k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|   749k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-interface.c:FU_USB_INTERFACE:
 1410|   154k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|   154k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|   154k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|   154k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-interface.c:FU_IS_USB_INTERFACE:
 1412|   100k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1413|   100k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|   100k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|   100k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   100k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|   100k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|   100k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 100k]
  |  |  |  |  ------------------
  |  |  |  | 2316|   100k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|   100k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 100k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 100k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2318|   100k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|   100k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|   100k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|   100k|  else \
  |  |  |  | 2320|   100k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|   100k|  __r; \
  |  |  |  | 2322|   100k|}))
  |  |  ------------------
  ------------------
fu-usb-interface.c:FU_IS_USB_ENDPOINT:
 1412|  11.5k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1413|  11.5k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  11.5k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  11.5k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  11.5k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  11.5k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  11.5k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 11.5k]
  |  |  |  |  ------------------
  |  |  |  | 2316|  11.5k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  11.5k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 11.5k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 11.5k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2318|  11.5k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|  11.5k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  11.5k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  11.5k|  else \
  |  |  |  | 2320|  11.5k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  11.5k|  __r; \
  |  |  |  | 2322|  11.5k|}))
  |  |  ------------------
  ------------------

