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

fwupd_device_set_parent_id:
  543|    740|{
  544|    740|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    740|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
  545|    740|	g_return_if_fail(FWUPD_IS_DEVICE(self));
  ------------------
  |  |  630|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    740|      { } \
  |  |  633|    740|    else \
  |  |  634|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  546|       |
  547|       |	/* not changed */
  548|    740|	if (g_strcmp0(priv->parent_id, parent_id) == 0)
  ------------------
  |  Branch (548:6): [True: 740, False: 0]
  ------------------
  549|    740|		return;
  550|       |
  551|       |	/* sanity check */
  552|      0|	if (parent_id != NULL && !fwupd_device_id_is_valid(parent_id)) {
  ------------------
  |  Branch (552:6): [True: 0, False: 0]
  |  Branch (552:27): [True: 0, False: 0]
  ------------------
  553|      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__)
  ------------------
  554|      0|		return;
  555|      0|	}
  556|       |
  557|      0|	g_free(priv->parent_id);
  558|      0|	priv->parent_id = g_strdup(parent_id);
  559|      0|}
fwupd_device_get_parent:
  626|    740|{
  627|    740|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    740|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
  628|    740|	g_return_val_if_fail(FWUPD_IS_DEVICE(self), NULL);
  ------------------
  |  |  643|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    740|      { } \
  |  |  646|    740|    else \
  |  |  647|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  629|    740|	return priv->parent;
  630|    740|}
fwupd_device_set_parent:
  666|    740|{
  667|    740|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    740|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
  668|    740|	g_return_if_fail(FWUPD_IS_DEVICE(self));
  ------------------
  |  |  630|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    740|      { } \
  |  |  633|    740|    else \
  |  |  634|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  669|    740|	g_return_if_fail(self != parent);
  ------------------
  |  |  630|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    740|      { } \
  |  |  633|    740|    else \
  |  |  634|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  670|       |
  671|    740|	if (priv->parent != NULL)
  ------------------
  |  Branch (671:6): [True: 0, False: 740]
  ------------------
  672|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  673|    740|	if (parent != NULL)
  ------------------
  |  Branch (673:6): [True: 0, False: 740]
  ------------------
  674|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  675|    740|	priv->parent = parent;
  676|       |
  677|       |	/* this is what goes over D-Bus */
  678|    740|	fwupd_device_set_parent_id(self, parent != NULL ? fwupd_device_get_id(parent) : NULL);
  ------------------
  |  Branch (678:35): [True: 0, False: 740]
  ------------------
  679|    740|}
fwupd_device_set_name:
 1059|    740|{
 1060|    740|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    740|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
 1061|    740|	g_return_if_fail(FWUPD_IS_DEVICE(self));
  ------------------
  |  |  630|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    740|      { } \
  |  |  633|    740|    else \
  |  |  634|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1062|       |
 1063|       |	/* not changed */
 1064|    740|	if (g_strcmp0(priv->name, name) == 0)
  ------------------
  |  Branch (1064:6): [True: 740, False: 0]
  ------------------
 1065|    740|		return;
 1066|       |
 1067|      0|	g_free(priv->name);
 1068|      0|	priv->name = g_strdup(name);
 1069|      0|}
fwupd_device_add_flag:
 1799|    740|{
 1800|    740|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    740|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
 1801|    740|	g_return_if_fail(FWUPD_IS_DEVICE(self));
  ------------------
  |  |  630|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    740|      { } \
  |  |  633|    740|    else \
  |  |  634|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1802|    740|	if (flag == 0)
  ------------------
  |  Branch (1802:6): [True: 0, False: 740]
  ------------------
 1803|      0|		return;
 1804|    740|	if ((priv->flags | flag) == priv->flags)
  ------------------
  |  Branch (1804:6): [True: 0, False: 740]
  ------------------
 1805|      0|		return;
 1806|    740|	priv->flags |= flag;
 1807|    740|	g_object_notify(G_OBJECT(self), "flags");
  ------------------
  |  |   56|    740|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|    740|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|    740|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1808|    740|}
fwupd_device_has_flag:
 1845|    740|{
 1846|    740|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    740|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
 1847|    740|	g_return_val_if_fail(FWUPD_IS_DEVICE(self), FALSE);
  ------------------
  |  |  643|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    740|      { } \
  |  |  646|    740|    else \
  |  |  647|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1848|    740|	return (priv->flags & flag) > 0;
 1849|    740|}
fwupd-device.c:fwupd_device_class_init:
 3935|      1|{
 3936|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3937|      1|	GParamSpec *pspec;
 3938|       |
 3939|      1|	object_class->finalize = fwupd_device_finalize;
 3940|      1|	object_class->get_property = fwupd_device_get_property;
 3941|      1|	object_class->set_property = fwupd_device_set_property;
 3942|       |
 3943|       |	/**
 3944|       |	 * FwupdDevice:version:
 3945|       |	 *
 3946|       |	 * The device version.
 3947|       |	 *
 3948|       |	 * Since: 1.8.15
 3949|       |	 */
 3950|      1|	pspec = g_param_spec_string("version",
 3951|      1|				    NULL,
 3952|      1|				    NULL,
 3953|      1|				    NULL,
 3954|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 3955|      1|	g_object_class_install_property(object_class, PROP_VERSION, pspec);
 3956|       |
 3957|       |	/**
 3958|       |	 * FwupdDevice:vendor:
 3959|       |	 *
 3960|       |	 * The device vendor.
 3961|       |	 *
 3962|       |	 * Since: 2.0.17
 3963|       |	 */
 3964|      1|	pspec = g_param_spec_string("vendor",
 3965|      1|				    NULL,
 3966|      1|				    NULL,
 3967|      1|				    NULL,
 3968|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 3969|      1|	g_object_class_install_property(object_class, PROP_VENDOR, pspec);
 3970|       |
 3971|       |	/**
 3972|       |	 * FwupdDevice:id:
 3973|       |	 *
 3974|       |	 * The device ID.
 3975|       |	 *
 3976|       |	 * Since: 2.0.0
 3977|       |	 */
 3978|      1|	pspec =
 3979|      1|	    g_param_spec_string("id", NULL, NULL, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 3980|      1|	g_object_class_install_property(object_class, PROP_ID, pspec);
 3981|       |
 3982|       |	/**
 3983|       |	 * FwupdDevice:version-format:
 3984|       |	 *
 3985|       |	 * The version format of the device.
 3986|       |	 *
 3987|       |	 * Since: 1.2.9
 3988|       |	 */
 3989|      1|	pspec = g_param_spec_uint("version-format",
 3990|      1|				  NULL,
 3991|      1|				  NULL,
 3992|      1|				  FWUPD_VERSION_FORMAT_UNKNOWN,
 3993|      1|				  FWUPD_VERSION_FORMAT_LAST,
  ------------------
  |  |  475|      1|#define FWUPD_VERSION_FORMAT_LAST 16
  ------------------
 3994|      1|				  FWUPD_VERSION_FORMAT_UNKNOWN,
 3995|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 3996|      1|	g_object_class_install_property(object_class, PROP_VERSION_FORMAT, pspec);
 3997|       |
 3998|       |	/**
 3999|       |	 * FwupdDevice:flags:
 4000|       |	 *
 4001|       |	 * The device flags.
 4002|       |	 *
 4003|       |	 * Since: 0.9.3
 4004|       |	 */
 4005|      1|	pspec = g_param_spec_uint64("flags",
 4006|      1|				    NULL,
 4007|      1|				    NULL,
 4008|      1|				    FWUPD_DEVICE_FLAG_NONE,
 4009|      1|				    FWUPD_DEVICE_FLAG_UNKNOWN,
 4010|      1|				    FWUPD_DEVICE_FLAG_NONE,
 4011|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 4012|      1|	g_object_class_install_property(object_class, PROP_FLAGS, pspec);
 4013|       |
 4014|       |	/**
 4015|       |	 * FwupdDevice:problems:
 4016|       |	 *
 4017|       |	 * The problems with the device that the user could fix, e.g. "lid open".
 4018|       |	 *
 4019|       |	 * Since: 1.8.1
 4020|       |	 */
 4021|      1|	pspec = g_param_spec_uint64("problems",
 4022|      1|				    NULL,
 4023|      1|				    NULL,
 4024|      1|				    FWUPD_DEVICE_PROBLEM_NONE,
 4025|      1|				    FWUPD_DEVICE_PROBLEM_UNKNOWN,
 4026|      1|				    FWUPD_DEVICE_PROBLEM_NONE,
 4027|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 4028|      1|	g_object_class_install_property(object_class, PROP_PROBLEMS, pspec);
 4029|       |
 4030|       |	/**
 4031|       |	 * FwupdDevice:request-flags:
 4032|       |	 *
 4033|       |	 * The device request flags.
 4034|       |	 *
 4035|       |	 * Since: 1.9.10
 4036|       |	 */
 4037|      1|	pspec = g_param_spec_uint64("request-flags",
 4038|      1|				    NULL,
 4039|      1|				    NULL,
 4040|      1|				    FWUPD_REQUEST_FLAG_NONE,
 4041|      1|				    FWUPD_REQUEST_FLAG_UNKNOWN,
 4042|      1|				    FWUPD_REQUEST_FLAG_NONE,
 4043|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 4044|      1|	g_object_class_install_property(object_class, PROP_REQUEST_FLAGS, pspec);
 4045|       |
 4046|       |	/**
 4047|       |	 * FwupdDevice:status:
 4048|       |	 *
 4049|       |	 * The current device status.
 4050|       |	 *
 4051|       |	 * Since: 1.4.0
 4052|       |	 */
 4053|      1|	pspec = g_param_spec_uint("status",
 4054|      1|				  NULL,
 4055|      1|				  NULL,
 4056|      1|				  FWUPD_STATUS_UNKNOWN,
 4057|      1|				  FWUPD_STATUS_LAST,
  ------------------
  |  |  108|      1|#define FWUPD_STATUS_LAST 15
  ------------------
 4058|      1|				  FWUPD_STATUS_UNKNOWN,
 4059|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 4060|      1|	g_object_class_install_property(object_class, PROP_STATUS, pspec);
 4061|       |
 4062|       |	/**
 4063|       |	 * FwupdDevice:percentage:
 4064|       |	 *
 4065|       |	 * The current device percentage.
 4066|       |	 *
 4067|       |	 * Since: 1.8.11
 4068|       |	 */
 4069|      1|	pspec = g_param_spec_uint("percentage",
 4070|      1|				  NULL,
 4071|      1|				  NULL,
 4072|      1|				  0,
 4073|      1|				  100,
 4074|      1|				  0,
 4075|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 4076|      1|	g_object_class_install_property(object_class, PROP_PERCENTAGE, pspec);
 4077|       |
 4078|       |	/**
 4079|       |	 * FwupdDevice:parent:
 4080|       |	 *
 4081|       |	 * The device parent.
 4082|       |	 *
 4083|       |	 * Since: 1.0.8
 4084|       |	 */
 4085|      1|	pspec = g_param_spec_object("parent",
 4086|      1|				    NULL,
 4087|      1|				    NULL,
 4088|      1|				    FWUPD_TYPE_DEVICE,
  ------------------
  |  |   17|      1|#define FWUPD_TYPE_DEVICE (fwupd_device_get_type())
  ------------------
 4089|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 4090|      1|	g_object_class_install_property(object_class, PROP_PARENT, pspec);
 4091|       |
 4092|       |	/**
 4093|       |	 * FwupdDevice:update-state:
 4094|       |	 *
 4095|       |	 * The device update state.
 4096|       |	 *
 4097|       |	 * Since: 0.9.8
 4098|       |	 */
 4099|      1|	pspec = g_param_spec_uint("update-state",
 4100|      1|				  NULL,
 4101|      1|				  NULL,
 4102|      1|				  FWUPD_UPDATE_STATE_UNKNOWN,
 4103|      1|				  FWUPD_UPDATE_STATE_LAST,
  ------------------
  |  |  364|      1|#define FWUPD_UPDATE_STATE_LAST 6
  ------------------
 4104|      1|				  FWUPD_UPDATE_STATE_UNKNOWN,
 4105|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 4106|      1|	g_object_class_install_property(object_class, PROP_UPDATE_STATE, pspec);
 4107|       |
 4108|       |	/**
 4109|       |	 * FwupdDevice:update-error:
 4110|       |	 *
 4111|       |	 * The device update error.
 4112|       |	 *
 4113|       |	 * Since: 0.9.8
 4114|       |	 */
 4115|      1|	pspec = g_param_spec_string("update-error",
 4116|      1|				    NULL,
 4117|      1|				    NULL,
 4118|      1|				    NULL,
 4119|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 4120|      1|	g_object_class_install_property(object_class, PROP_UPDATE_ERROR, pspec);
 4121|       |
 4122|       |	/**
 4123|       |	 * FwupdDevice:battery-level:
 4124|       |	 *
 4125|       |	 * The device battery level in percent.
 4126|       |	 *
 4127|       |	 * Since: 1.5.8
 4128|       |	 */
 4129|      1|	pspec = g_param_spec_uint("battery-level",
 4130|      1|				  NULL,
 4131|      1|				  NULL,
 4132|      1|				  0,
 4133|      1|				  FWUPD_BATTERY_LEVEL_INVALID,
  ------------------
  |  |   19|      1|#define FWUPD_BATTERY_LEVEL_INVALID 101
  ------------------
 4134|      1|				  FWUPD_BATTERY_LEVEL_INVALID,
  ------------------
  |  |   19|      1|#define FWUPD_BATTERY_LEVEL_INVALID 101
  ------------------
 4135|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 4136|      1|	g_object_class_install_property(object_class, PROP_BATTERY_LEVEL, pspec);
 4137|       |
 4138|       |	/**
 4139|       |	 * FwupdDevice:battery-threshold:
 4140|       |	 *
 4141|       |	 * The device battery threshold in percent.
 4142|       |	 *
 4143|       |	 * Since: 1.5.8
 4144|       |	 */
 4145|      1|	pspec = g_param_spec_uint("battery-threshold",
 4146|      1|				  NULL,
 4147|      1|				  NULL,
 4148|      1|				  0,
 4149|      1|				  FWUPD_BATTERY_LEVEL_INVALID,
  ------------------
  |  |   19|      1|#define FWUPD_BATTERY_LEVEL_INVALID 101
  ------------------
 4150|      1|				  FWUPD_BATTERY_LEVEL_INVALID,
  ------------------
  |  |   19|      1|#define FWUPD_BATTERY_LEVEL_INVALID 101
  ------------------
 4151|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 4152|      1|	g_object_class_install_property(object_class, PROP_BATTERY_THRESHOLD, pspec);
 4153|      1|}
fwupd-device.c:fwupd_device_finalize:
 4165|    740|{
 4166|    740|	FwupdDevice *self = FWUPD_DEVICE(object);
 4167|    740|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    740|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
 4168|       |
 4169|    740|	if (priv->parent != NULL)
  ------------------
  |  Branch (4169:6): [True: 0, False: 740]
  ------------------
 4170|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4171|    740|	if (priv->children != NULL) {
  ------------------
  |  Branch (4171:6): [True: 0, False: 740]
  ------------------
 4172|      0|		for (guint i = 0; i < priv->children->len; i++) {
  ------------------
  |  Branch (4172:21): [True: 0, False: 0]
  ------------------
 4173|      0|			FwupdDevice *child = g_ptr_array_index(priv->children, i);
  ------------------
  |  |  138|      0|#define    g_ptr_array_index(array,index_) ((array)->pdata)[index_]
  ------------------
 4174|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4175|      0|		}
 4176|      0|	}
 4177|       |
 4178|    740|	g_free(priv->id);
 4179|    740|	g_free(priv->parent_id);
 4180|    740|	g_free(priv->composite_id);
 4181|    740|	g_free(priv->name);
 4182|    740|	g_free(priv->serial);
 4183|    740|	g_free(priv->summary);
 4184|    740|	g_free(priv->details_url);
 4185|    740|	g_free(priv->branch);
 4186|    740|	g_free(priv->vendor);
 4187|    740|	g_free(priv->plugin);
 4188|    740|	g_free(priv->update_error);
 4189|    740|	g_free(priv->version);
 4190|    740|	g_free(priv->version_lowest);
 4191|    740|	g_free(priv->version_highest);
 4192|    740|	g_free(priv->version_bootloader);
 4193|    740|	if (priv->guids != NULL)
  ------------------
  |  Branch (4193:6): [True: 0, False: 740]
  ------------------
 4194|      0|		g_ptr_array_unref(priv->guids);
 4195|    740|	if (priv->vendor_ids != NULL)
  ------------------
  |  Branch (4195:6): [True: 0, False: 740]
  ------------------
 4196|      0|		g_ptr_array_unref(priv->vendor_ids);
 4197|    740|	if (priv->protocols != NULL)
  ------------------
  |  Branch (4197:6): [True: 0, False: 740]
  ------------------
 4198|      0|		g_ptr_array_unref(priv->protocols);
 4199|    740|	if (priv->instance_ids != NULL)
  ------------------
  |  Branch (4199:6): [True: 0, False: 740]
  ------------------
 4200|      0|		g_ptr_array_unref(priv->instance_ids);
 4201|    740|	if (priv->icons != NULL)
  ------------------
  |  Branch (4201:6): [True: 0, False: 740]
  ------------------
 4202|      0|		g_ptr_array_unref(priv->icons);
 4203|    740|	if (priv->checksums != NULL)
  ------------------
  |  Branch (4203:6): [True: 0, False: 740]
  ------------------
 4204|      0|		g_ptr_array_unref(priv->checksums);
 4205|    740|	if (priv->children != NULL)
  ------------------
  |  Branch (4205:6): [True: 0, False: 740]
  ------------------
 4206|      0|		g_ptr_array_unref(priv->children);
 4207|    740|	if (priv->releases != NULL)
  ------------------
  |  Branch (4207:6): [True: 0, False: 740]
  ------------------
 4208|      0|		g_ptr_array_unref(priv->releases);
 4209|    740|	if (priv->issues != NULL)
  ------------------
  |  Branch (4209:6): [True: 0, False: 740]
  ------------------
 4210|      0|		g_ptr_array_unref(priv->issues);
 4211|       |
 4212|    740|	G_OBJECT_CLASS(fwupd_device_parent_class)->finalize(object);
  ------------------
  |  |   63|    740|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|    740|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|    740|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4213|    740|}
fwupd-device.c:fwupd_device_init:
 4157|    740|{
 4158|    740|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    740|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
 4159|    740|	priv->battery_level = FWUPD_BATTERY_LEVEL_INVALID;
  ------------------
  |  |   19|    740|#define FWUPD_BATTERY_LEVEL_INVALID 101
  ------------------
 4160|    740|	priv->battery_threshold = FWUPD_BATTERY_LEVEL_INVALID;
  ------------------
  |  |   19|    740|#define FWUPD_BATTERY_LEVEL_INVALID 101
  ------------------
 4161|    740|}
fwupd-device.c:fwupd_device_codec_iface_init:
 4229|      1|{
 4230|      1|	iface->add_string = fwupd_device_add_string;
 4231|      1|	iface->add_json = fwupd_device_add_json;
 4232|      1|	iface->from_json = fwupd_device_from_json;
 4233|      1|	iface->add_variant = fwupd_device_add_variant;
 4234|      1|	iface->from_variant_iter = fwupd_device_from_variant_iter;
 4235|      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.43k|{
  146|  1.43k|	static GQuark quark = 0;
  147|  1.43k|	if (!quark) {
  ------------------
  |  Branch (147:6): [True: 1, False: 1.43k]
  ------------------
  148|      1|		quark = g_quark_from_static_string("FwupdError");
  149|     23|		for (gint i = 0; i < FWUPD_ERROR_LAST; i++) {
  ------------------
  |  |  150|     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.43k|	return quark;
  154|  1.43k|}

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

fu_size_checked_add:
  112|  1.89M|{
  113|  1.89M|	gsize tmp = 0;
  114|  1.89M|	if (!g_size_checked_add(&tmp, a, b))
  ------------------
  |  |  444|  1.89M|    _GLIB_CHECKED_ADD_U64(dest, a, b)
  ------------------
  |  Branch (114:6): [True: 0, False: 1.89M]
  ------------------
  115|      0|		return G_MAXSIZE;
  ------------------
  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  116|  1.89M|	return tmp;
  117|  1.89M|}
fu_size_checked_inc:
  135|   561k|{
  136|   561k|	gsize value_new;
  137|       |
  138|   561k|	g_return_val_if_fail(value != NULL, FALSE);
  ------------------
  |  |  643|   561k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   561k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   561k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   561k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   561k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   561k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   561k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   561k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 561k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   561k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   561k|   else                                         \
  |  |  |  |  |  | 1021|   561k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   561k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   561k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 561k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   561k|      { } \
  |  |  646|   561k|    else \
  |  |  647|   561k|      { \
  |  |  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|   561k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   561k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 561k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  139|   561k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   561k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   561k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   561k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   561k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   561k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   561k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   561k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.12M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 561k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   561k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   561k|   else                                         \
  |  |  |  |  |  | 1021|   561k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   561k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   561k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 561k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   561k|      { } \
  |  |  646|   561k|    else \
  |  |  647|   561k|      { \
  |  |  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|   561k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   561k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 561k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  140|       |
  141|   561k|	value_new = *value;
  142|   561k|	if (!g_size_checked_add(&value_new, *value, len)) {
  ------------------
  |  |  444|   561k|    _GLIB_CHECKED_ADD_U64(dest, a, b)
  ------------------
  |  Branch (142:6): [True: 0, False: 561k]
  ------------------
  143|      0|		g_set_error(error,
  144|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  145|      0|			    FWUPD_ERROR_INVALID_DATA,
  146|      0|			    "0x%zx + 0x%zx would overflow",
  147|      0|			    *value,
  148|      0|			    len);
  149|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  150|      0|	}
  151|       |
  152|       |	/* success */
  153|   561k|	*value = value_new;
  154|   561k|	return TRUE;
  ------------------
  |  |  818|   561k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   561k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  155|   561k|}

fu_device_has_private_flag_quark:
  289|    740|{
  290|    740|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|    740|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
  291|    740|	for (guint i = 0; i < priv->private_flags->len; i++) {
  ------------------
  |  Branch (291:20): [True: 0, False: 740]
  ------------------
  292|      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)])
  ------------------
  293|      0|		if (flag_quark == flag_tmp)
  ------------------
  |  Branch (293:7): [True: 0, False: 0]
  ------------------
  294|      0|			return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  295|      0|	}
  296|    740|	return FALSE;
  ------------------
  |  |  814|    740|#define	FALSE	(0)
  ------------------
  297|    740|}
fu_device_find_private_flag:
  337|      1|{
  338|      1|	return fu_device_find_private_flag_quark(klass, g_quark_from_string(flag));
  339|      1|}
fu_device_retry_add_recovery:
  577|    740|{
  578|    740|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|    740|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
  579|    740|	FuDeviceRetryRecovery *rec;
  580|       |
  581|    740|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    740|      { } \
  |  |  633|    740|    else \
  |  |  634|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  582|    740|	g_return_if_fail(domain != 0);
  ------------------
  |  |  630|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    740|      { } \
  |  |  633|    740|    else \
  |  |  634|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  583|       |
  584|       |	/* ensure */
  585|    740|	if (priv->retry_recs == NULL)
  ------------------
  |  Branch (585:6): [True: 740, False: 0]
  ------------------
  586|    740|		priv->retry_recs = g_ptr_array_new_with_free_func(g_free);
  587|       |
  588|       |	rec = g_new(FuDeviceRetryRecovery, 1);
  ------------------
  |  |  290|    740|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|    740|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|    740|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|    740|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|    740|	  gpointer __p;						\
  |  |  |  |  239|    740|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 740]
  |  |  |  |  ------------------
  |  |  |  |  240|    740|	    __p = g_##func (__n);				\
  |  |  |  |  241|    740|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|    740|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|    740|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|    740|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 740]
  |  |  |  |  |  Branch (242:26): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|    740|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|    740|	  else							\
  |  |  |  |  245|    740|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|    740|	  __p;							\
  |  |  |  |  247|    740|	}))
  |  |  ------------------
  ------------------
  589|    740|	rec->domain = domain;
  590|    740|	rec->code = code;
  591|    740|	rec->recovery_func = func;
  592|    740|	g_ptr_array_add(priv->retry_recs, rec);
  593|    740|}
fu_device_get_parent_internal:
 1490|    740|{
 1491|    740|	g_return_val_if_fail(FU_IS_DEVICE(self), NULL);
  ------------------
  |  |  643|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    740|      { } \
  |  |  646|    740|    else \
  |  |  647|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1492|    740|	return FU_DEVICE(fwupd_device_get_parent(FWUPD_DEVICE(self)));
 1493|    740|}
fu_device_set_parent:
 1585|    740|{
 1586|    740|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    740|      { } \
  |  |  633|    740|    else \
  |  |  634|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1587|       |
 1588|       |	/* debug */
 1589|    740|	if (parent != NULL) {
  ------------------
  |  Branch (1589:6): [True: 0, False: 740]
  ------------------
 1590|      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)))
  |  |  ------------------
  ------------------
 1591|      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)))
  |  |  ------------------
  ------------------
 1592|      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__)
  ------------------
 1593|      0|	}
 1594|       |
 1595|       |	/* set the composite ID on the children and grandchildren */
 1596|    740|	if (parent != NULL)
  ------------------
  |  Branch (1596:6): [True: 0, False: 740]
  ------------------
 1597|      0|		fu_device_set_composite_id(self, fu_device_get_composite_id(parent));
  ------------------
  |  |  185|      0|#define fu_device_get_composite_id(d)	     fwupd_device_get_composite_id(FWUPD_DEVICE(d))
  ------------------
 1598|       |
 1599|       |	/* if the parent has a context, make the child inherit it */
 1600|    740|	if (parent != NULL) {
  ------------------
  |  Branch (1600:6): [True: 0, False: 740]
  ------------------
 1601|      0|		if (fu_device_get_context(self) == NULL && fu_device_get_context(parent) != NULL)
  ------------------
  |  Branch (1601:7): [True: 0, False: 0]
  |  Branch (1601:46): [True: 0, False: 0]
  ------------------
 1602|      0|			fu_device_set_context(self, fu_device_get_context(parent));
 1603|      0|	}
 1604|       |
 1605|    740|	fwupd_device_set_parent(FWUPD_DEVICE(self), FWUPD_DEVICE(parent));
 1606|    740|	g_object_notify(G_OBJECT(self), "parent");
  ------------------
  |  |   56|    740|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|    740|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|    740|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1607|       |
 1608|       |	/* fix the exported name */
 1609|    740|	fu_device_ensure_exported_name(self);
 1610|    740|}
fu_device_set_proxy:
 1658|    740|{
 1659|    740|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|    740|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 1660|       |
 1661|    740|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    740|      { } \
  |  |  633|    740|    else \
  |  |  634|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1662|    740|	g_return_if_fail(proxy == NULL || FU_IS_DEVICE(proxy));
  ------------------
  |  |  630|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.48k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    740|      { } \
  |  |  633|    740|    else \
  |  |  634|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1663|    740|	g_return_if_fail(self != proxy);
  ------------------
  |  |  630|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    740|      { } \
  |  |  633|    740|    else \
  |  |  634|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1664|       |
 1665|       |	/* unchanged */
 1666|    740|	if (proxy == priv->proxy)
  ------------------
  |  Branch (1666:6): [True: 740, False: 0]
  ------------------
 1667|    740|		return;
 1668|       |
 1669|       |	/* check is the correct type */
 1670|      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 (1670:6): [True: 0, False: 0]
  |  Branch (1670:23): [True: 0, False: 0]
  ------------------
 1671|      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 (1671:6): [True: 0, False: 0]
  ------------------
 1672|      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__)
  ------------------
 1673|      0|			   G_OBJECT_TYPE_NAME(proxy),
 1674|      0|			   g_type_name(priv->proxy_gtype));
 1675|      0|	}
 1676|       |
 1677|       |	/* disconnect from old proxy */
 1678|      0|	if (priv->proxy != NULL && priv->notify_flags_proxy_id != 0)
  ------------------
  |  Branch (1678:6): [True: 0, False: 0]
  |  Branch (1678:29): [True: 0, False: 0]
  ------------------
 1679|      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
  ------------------
 1680|       |
 1681|       |	/* copy from proxy */
 1682|      0|	if (proxy != NULL) {
  ------------------
  |  Branch (1682:6): [True: 0, False: 0]
  ------------------
 1683|      0|		fu_device_incorporate(self, proxy, FU_DEVICE_INCORPORATE_FLAG_PHYSICAL_ID);
 1684|      0|		priv->notify_flags_proxy_id =
 1685|      0|		    g_signal_connect(FWUPD_DEVICE(proxy),
  ------------------
  |  |  501|      0|    g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
  ------------------
 1686|      0|				     "notify::flags",
 1687|      0|				     G_CALLBACK(fu_device_proxy_flags_notify_cb),
 1688|      0|				     self);
 1689|      0|		fu_device_incorporate_from_proxy_flags(self, proxy);
 1690|      0|	}
 1691|       |
 1692|       |	/* sometimes strong, sometimes weak */
 1693|      0|	if (fu_device_has_private_flag_quark(self, quarks[QUARK_REFCOUNTED_PROXY])) {
  ------------------
  |  Branch (1693:6): [True: 0, False: 0]
  ------------------
 1694|      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
  ------------------
 1695|      0|		fu_device_set_target(self, proxy);
 1696|      0|	} else {
 1697|      0|		if (priv->proxy != NULL)
  ------------------
  |  Branch (1697:7): [True: 0, False: 0]
  ------------------
 1698|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1699|      0|						     (gpointer *)&priv->proxy);
 1700|      0|		if (proxy != NULL)
  ------------------
  |  Branch (1700:7): [True: 0, False: 0]
  ------------------
 1701|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1702|      0|		priv->proxy = proxy;
 1703|      0|	}
 1704|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1705|      0|}
fu_device_set_backend:
 4278|    740|{
 4279|    740|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|    740|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 4280|       |
 4281|    740|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    740|      { } \
  |  |  633|    740|    else \
  |  |  634|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4282|    740|	g_return_if_fail(backend == NULL || FU_IS_BACKEND(backend));
  ------------------
  |  |  630|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.48k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    740|      { } \
  |  |  633|    740|    else \
  |  |  634|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4283|       |
 4284|       |	/* same */
 4285|    740|	if (priv->backend == backend)
  ------------------
  |  Branch (4285:6): [True: 740, False: 0]
  ------------------
 4286|    740|		return;
 4287|       |
 4288|       |	/* not already set */
 4289|      0|	if (priv->ctx == NULL)
  ------------------
  |  Branch (4289:6): [True: 0, False: 0]
  ------------------
 4290|      0|		fu_device_set_context(self, fu_backend_get_context(backend));
 4291|       |
 4292|       |	/* there is no ref on backend to prevent a loop */
 4293|      0|	if (priv->backend != NULL)
  ------------------
  |  Branch (4293:6): [True: 0, False: 0]
  ------------------
 4294|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4295|      0|	if (backend != NULL)
  ------------------
  |  Branch (4295:6): [True: 0, False: 0]
  ------------------
 4296|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4297|      0|	priv->backend = backend; /* no ref */
 4298|       |
 4299|       |	/* in case anything cares */
 4300|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4301|      0|}
fu_device_add_flag:
 4790|    740|{
 4791|    740|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|    740|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 4792|       |
 4793|       |	/* none is not used as an "exported" flag */
 4794|    740|	if (flag == FWUPD_DEVICE_FLAG_NONE)
  ------------------
  |  Branch (4794:6): [True: 0, False: 740]
  ------------------
 4795|      0|		return;
 4796|       |
 4797|       |	/* emulated device reinstalling do not need a replug or shutdown */
 4798|    740|	if (flag == FWUPD_DEVICE_FLAG_EMULATED) {
  ------------------
  |  Branch (4798:6): [True: 0, False: 740]
  ------------------
 4799|      0|		if (fu_device_has_flag(self, FWUPD_DEVICE_FLAG_NEEDS_REBOOT)) {
  ------------------
  |  |  144|      0|#define fu_device_has_flag(d, v)	 fwupd_device_has_flag(FWUPD_DEVICE(d), v)
  |  |  ------------------
  |  |  |  Branch (144:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4800|      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__)
  ------------------
 4801|      0|			fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_NEEDS_REBOOT);
 4802|      0|		}
 4803|      0|		if (fu_device_has_flag(self, FWUPD_DEVICE_FLAG_NEEDS_SHUTDOWN)) {
  ------------------
  |  |  144|      0|#define fu_device_has_flag(d, v)	 fwupd_device_has_flag(FWUPD_DEVICE(d), v)
  |  |  ------------------
  |  |  |  Branch (144:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4804|      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__)
  ------------------
 4805|      0|			fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_NEEDS_SHUTDOWN);
 4806|      0|		}
 4807|      0|	}
 4808|       |
 4809|       |	/* we only inhibit when the flags contains UPDATABLE, and that might be discovered by
 4810|       |	 * probing the hardware *after* the battery level has been set */
 4811|    740|	if (flag == FWUPD_DEVICE_FLAG_UPDATABLE && priv->inhibits != NULL)
  ------------------
  |  Branch (4811:6): [True: 0, False: 740]
  |  Branch (4811:45): [True: 0, False: 0]
  ------------------
 4812|      0|		fu_device_ensure_inhibits(self);
 4813|       |
 4814|       |	/* an emulated device cannot be used to record emulation events,
 4815|       |	 * and an emulated device cannot be tagged for emulation */
 4816|    740|	if (flag == FWUPD_DEVICE_FLAG_EMULATED)
  ------------------
  |  Branch (4816:6): [True: 0, False: 740]
  ------------------
 4817|      0|		fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_CAN_EMULATION_TAG);
 4818|    740|	if (flag == FWUPD_DEVICE_FLAG_CAN_EMULATION_TAG &&
  ------------------
  |  Branch (4818:6): [True: 740, False: 0]
  ------------------
 4819|    740|	    fu_device_has_flag(self, FWUPD_DEVICE_FLAG_EMULATED))
  ------------------
  |  |  144|    740|#define fu_device_has_flag(d, v)	 fwupd_device_has_flag(FWUPD_DEVICE(d), v)
  |  |  ------------------
  |  |  |  Branch (144:35): [True: 0, False: 740]
  |  |  ------------------
  ------------------
 4820|      0|		return;
 4821|       |
 4822|       |	/* being both a bootloader and requiring a bootloader is invalid */
 4823|    740|	if (flag & FWUPD_DEVICE_FLAG_NEEDS_BOOTLOADER)
  ------------------
  |  Branch (4823:6): [True: 0, False: 740]
  ------------------
 4824|      0|		fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_IS_BOOTLOADER);
 4825|    740|	if (flag & FWUPD_DEVICE_FLAG_IS_BOOTLOADER)
  ------------------
  |  Branch (4825:6): [True: 0, False: 740]
  ------------------
 4826|      0|		fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_NEEDS_BOOTLOADER);
 4827|       |
 4828|       |	/* being both a signed and unsigned is invalid */
 4829|    740|	if (flag & FWUPD_DEVICE_FLAG_SIGNED_PAYLOAD)
  ------------------
  |  Branch (4829:6): [True: 0, False: 740]
  ------------------
 4830|      0|		fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_UNSIGNED_PAYLOAD);
 4831|    740|	if (flag & FWUPD_DEVICE_FLAG_UNSIGNED_PAYLOAD)
  ------------------
  |  Branch (4831:6): [True: 0, False: 740]
  ------------------
 4832|      0|		fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_SIGNED_PAYLOAD);
 4833|       |
 4834|       |	/* one implies the other */
 4835|    740|	if (flag & FWUPD_DEVICE_FLAG_CAN_VERIFY_IMAGE)
  ------------------
  |  Branch (4835:6): [True: 0, False: 740]
  ------------------
 4836|      0|		flag |= FWUPD_DEVICE_FLAG_CAN_VERIFY;
 4837|    740|	if (flag & FWUPD_DEVICE_FLAG_INSTALL_ALL_RELEASES)
  ------------------
  |  Branch (4837:6): [True: 0, False: 740]
  ------------------
 4838|      0|		flag |= FWUPD_DEVICE_FLAG_VERSION_CHECK_REQUIRED;
 4839|    740|	fwupd_device_add_flag(FWUPD_DEVICE(self), flag);
 4840|       |
 4841|       |	/* activatable devices shouldn't be allowed to update again until activated */
 4842|       |	/* don't let devices be updated until activated */
 4843|    740|	if (flag & FWUPD_DEVICE_FLAG_NEEDS_ACTIVATION)
  ------------------
  |  Branch (4843:6): [True: 0, False: 740]
  ------------------
 4844|      0|		fu_device_inhibit(self, "needs-activation", "Pending activation");
 4845|       |
 4846|       |	/* do not let devices be updated until back in range */
 4847|    740|	if (flag & FWUPD_DEVICE_FLAG_UNREACHABLE)
  ------------------
  |  Branch (4847:6): [True: 0, False: 740]
  ------------------
 4848|      0|		fu_device_add_problem(self, FWUPD_DEVICE_PROBLEM_UNREACHABLE);
 4849|       |
 4850|       |	/* fixup and maybe show a warning if the remove delay was forgotten */
 4851|    740|	if ((flag & FWUPD_DEVICE_FLAG_WAIT_FOR_REPLUG) && priv->remove_delay == 0) {
  ------------------
  |  Branch (4851:6): [True: 0, False: 740]
  |  Branch (4851:52): [True: 0, False: 0]
  ------------------
 4852|      0|		priv->remove_delay = FU_DEVICE_REMOVE_DELAY_RE_ENUMERATE;
  ------------------
  |  |  114|      0|#define FU_DEVICE_REMOVE_DELAY_RE_ENUMERATE 10000 /* ms */
  ------------------
 4853|      0|#ifndef SUPPORTED_BUILD
 4854|      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__)
  ------------------
 4855|      0|			   "add something like fu_device_set_remove_delay(FU_DEVICE(self), "
 4856|      0|			   "FU_DEVICE_REMOVE_DELAY_RE_ENUMERATE) to the %s _init()",
 4857|      0|			   G_OBJECT_TYPE_NAME(self));
 4858|      0|#endif
 4859|      0|	}
 4860|    740|}
fu_device_register_private_flag_safe:
 4865|     62|{
 4866|     62|	FuDeviceClassPrivate *cpriv = fu_device_get_class_private(klass);
 4867|     62|	GQuark quark = g_quark_from_static_string(flag);
 4868|       |
 4869|     62|	if (G_UNLIKELY(cpriv->quarks_cnt >= FU_DEVICE_PRIVATE_FLAG_REGISTERED_MAX)) {
  ------------------
  |  | 1025|     62|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|     62| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     62|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     62|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     62|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 62]
  |  |  |  |  ------------------
  |  |  |  | 1019|     62|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     62|   else                                         \
  |  |  |  | 1021|     62|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     62|   _g_boolean_var_;                             \
  |  |  |  | 1023|     62|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 62]
  |  |  ------------------
  ------------------
 4870|      0|		g_critical("too many registered flags, limit is %i",
  ------------------
  |  |  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__)
  ------------------
 4871|      0|			   FU_DEVICE_PRIVATE_FLAG_REGISTERED_MAX);
 4872|      0|		return 0;
 4873|      0|	}
 4874|     62|	cpriv->quarks[cpriv->quarks_cnt] = quark;
 4875|     62|	cpriv->quarks_cnt++;
 4876|     62|	return quark;
 4877|     62|}
fu_device_set_acquiesce_delay:
 5078|  1.48k|{
 5079|  1.48k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|  1.48k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5080|  1.48k|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|  1.48k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.48k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.48k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.48k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.48k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.48k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.48k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.48k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.48k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.48k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.48k|   else                                         \
  |  |  |  |  |  | 1021|  1.48k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.48k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.48k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.48k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.48k|      { } \
  |  |  633|  1.48k|    else \
  |  |  634|  1.48k|      { \
  |  |  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.48k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.48k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.48k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5081|  1.48k|	priv->acquiesce_delay = acquiesce_delay;
 5082|  1.48k|}
fu_device_get_vid:
 5282|  1.23k|{
 5283|  1.23k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|  1.23k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5284|  1.23k|	g_return_val_if_fail(FU_IS_DEVICE(self), 0x0000);
  ------------------
  |  |  643|  1.23k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.23k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.23k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.23k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.23k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.23k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.23k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.23k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.23k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.23k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.23k|   else                                         \
  |  |  |  |  |  | 1021|  1.23k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.23k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.23k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.23k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.23k|      { } \
  |  |  646|  1.23k|    else \
  |  |  647|  1.23k|      { \
  |  |  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.23k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.23k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.23k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5285|  1.23k|	return priv->vid;
 5286|  1.23k|}
fu_device_set_vid:
 5299|    682|{
 5300|    682|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|    682|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5301|    682|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    682|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    682|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    682|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    682|      { } \
  |  |  633|    682|    else \
  |  |  634|    682|      { \
  |  |  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|    682|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    682|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5302|    682|	if (priv->vid == vid)
  ------------------
  |  Branch (5302:6): [True: 64, False: 618]
  ------------------
 5303|     64|		return;
 5304|    618|	priv->vid = vid;
 5305|    618|	g_object_notify(G_OBJECT(self), "vid");
  ------------------
  |  |   56|    618|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|    618|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|    618|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5306|    618|}
fu_device_get_pid:
 5320|  1.28k|{
 5321|  1.28k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|  1.28k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5322|  1.28k|	g_return_val_if_fail(FU_IS_DEVICE(self), 0x0000);
  ------------------
  |  |  643|  1.28k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.28k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.28k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.28k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.28k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.28k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.28k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.28k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.28k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.28k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.28k|   else                                         \
  |  |  |  |  |  | 1021|  1.28k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.28k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.28k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.28k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.28k|      { } \
  |  |  646|  1.28k|    else \
  |  |  647|  1.28k|      { \
  |  |  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.28k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.28k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.28k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5323|  1.28k|	return priv->pid;
 5324|  1.28k|}
fu_device_set_pid:
 5337|    682|{
 5338|    682|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|    682|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5339|    682|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    682|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    682|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    682|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    682|      { } \
  |  |  633|    682|    else \
  |  |  634|    682|      { \
  |  |  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|    682|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    682|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5340|    682|	if (priv->pid == pid)
  ------------------
  |  Branch (5340:6): [True: 40, False: 642]
  ------------------
 5341|     40|		return;
 5342|    642|	priv->pid = pid;
 5343|    642|	g_object_notify(G_OBJECT(self), "pid");
  ------------------
  |  |   56|    642|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|    642|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|    642|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5344|    642|}
fu_device_set_context:
 5616|    740|{
 5617|    740|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|    740|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5618|    740|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    740|      { } \
  |  |  633|    740|    else \
  |  |  634|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5619|    740|	g_return_if_fail(FU_IS_CONTEXT(ctx) || ctx == NULL);
  ------------------
  |  |  630|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.22k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 740]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    740|      { } \
  |  |  633|    740|    else \
  |  |  634|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5620|       |
 5621|    740|#ifndef SUPPORTED_BUILD
 5622|    740|	if (priv->ctx != NULL && ctx == NULL) {
  ------------------
  |  Branch (5622:6): [True: 0, False: 740]
  |  Branch (5622:27): [True: 0, False: 0]
  ------------------
 5623|      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)))
  |  |  ------------------
  ------------------
 5624|      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__)
  ------------------
 5625|      0|		return;
 5626|      0|	}
 5627|    740|#endif
 5628|       |
 5629|    740|	if (g_set_object(&priv->ctx, ctx))
  ------------------
  |  |  750|    740|  (G_GNUC_EXTENSION ({ \
  |  |  ------------------
  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  |  Branch (750:3): [True: 0, False: 740]
  |  |  ------------------
  |  |  751|    740|    G_STATIC_ASSERT (sizeof *(object_ptr) == sizeof (new_object)); \
  |  |  ------------------
  |  |  |  |  758|    740|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  ------------------
  |  |  752|    740|    /* Only one access, please; work around type aliasing */ \
  |  |  753|    740|    union { char *in; GObject **out; } _object_ptr; \
  |  |  754|    740|    _object_ptr.in = (char *) (object_ptr); \
  |  |  755|    740|    /* Check types match */ \
  |  |  756|    740|    (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |                   (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \
  |  |  ------------------
  |  |  |  |  814|    740|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (756:13): [Folded, False: 740]
  |  |  ------------------
  |  |  757|    740|    (g_set_object) (_object_ptr.out, (GObject *) new_object); \
  |  |  758|    740|  })) \
  |  |  759|    740|  GLIB_AVAILABLE_MACRO_IN_2_44
  ------------------
 5630|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5631|    740|}
fu_device_add_instance_u16:
 7823|  2.52k|{
 7824|  2.52k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|  2.52k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 7825|  2.52k|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|  2.52k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.52k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.52k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.52k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.52k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.52k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.52k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.52k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.52k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.52k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.52k|   else                                         \
  |  |  |  |  |  | 1021|  2.52k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.52k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.52k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.52k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.52k|      { } \
  |  |  633|  2.52k|    else \
  |  |  634|  2.52k|      { \
  |  |  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.52k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.52k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.52k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7826|  2.52k|	g_return_if_fail(key != NULL);
  ------------------
  |  |  630|  2.52k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.52k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.52k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.52k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.52k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.52k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.52k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.52k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.52k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.52k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.52k|   else                                         \
  |  |  |  |  |  | 1021|  2.52k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.52k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.52k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.52k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.52k|      { } \
  |  |  633|  2.52k|    else \
  |  |  634|  2.52k|      { \
  |  |  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.52k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.52k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.52k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7827|  2.52k|	fu_device_ensure_instance_hash(self);
 7828|  2.52k|	g_hash_table_insert(priv->instance_hash, g_strdup(key), g_strdup_printf("%04X", value));
 7829|  2.52k|}
fu-device.c:fu_device_class_init:
 8445|      1|{
 8446|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8447|      1|	FuDeviceClass *device_class = FU_DEVICE_CLASS(klass);
 8448|      1|	GParamSpec *pspec;
 8449|      1|	const gchar *quark_flags[] = {
 8450|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_PROBE,
  ------------------
  |  |  378|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_PROBE "no-probe"
  ------------------
 8451|      1|	    FU_DEVICE_PRIVATE_FLAG_REFCOUNTED_PROXY,
  ------------------
  |  |  579|      1|#define FU_DEVICE_PRIVATE_FLAG_REFCOUNTED_PROXY "refcounted-proxy"
  ------------------
 8452|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_GENERIC_GUIDS,
  ------------------
  |  |  494|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_GENERIC_GUIDS "no-generic-guids"
  ------------------
 8453|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_SERIAL_NUMBER,
  ------------------
  |  |  306|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_SERIAL_NUMBER "no-serial-number"
  ------------------
 8454|      1|	    FU_DEVICE_PRIVATE_FLAG_IS_FAKE,
  ------------------
  |  |  645|      1|#define FU_DEVICE_PRIVATE_FLAG_IS_FAKE "is-fake"
  ------------------
 8455|      1|	    FU_DEVICE_PRIVATE_FLAG_PARENT_NAME_PREFIX,
  ------------------
  |  |  702|      1|#define FU_DEVICE_PRIVATE_FLAG_PARENT_NAME_PREFIX "parent-name-prefix"
  ------------------
 8456|      1|	};
 8457|      1|	const gchar *flags[] = {
 8458|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_ICON,
  ------------------
  |  |  266|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_ICON "md-set-icon"
  ------------------
 8459|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_NAME,
  ------------------
  |  |  242|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_NAME "md-set-name"
  ------------------
 8460|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_NAME_CATEGORY,
  ------------------
  |  |  250|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_NAME_CATEGORY "md-set-name-category"
  ------------------
 8461|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_VERFMT,
  ------------------
  |  |  258|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_VERFMT "md-set-verfmt"
  ------------------
 8462|      1|	    FU_DEVICE_PRIVATE_FLAG_ONLY_SUPPORTED,
  ------------------
  |  |  234|      1|#define FU_DEVICE_PRIVATE_FLAG_ONLY_SUPPORTED "only-supported"
  ------------------
 8463|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_AUTO_INSTANCE_IDS,
  ------------------
  |  |  218|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_AUTO_INSTANCE_IDS "no-auto-instance-ids"
  ------------------
 8464|      1|	    FU_DEVICE_PRIVATE_FLAG_ENSURE_SEMVER,
  ------------------
  |  |  226|      1|#define FU_DEVICE_PRIVATE_FLAG_ENSURE_SEMVER "ensure-semver"
  ------------------
 8465|      1|	    FU_DEVICE_PRIVATE_FLAG_RETRY_OPEN,
  ------------------
  |  |  274|      1|#define FU_DEVICE_PRIVATE_FLAG_RETRY_OPEN "retry-open"
  ------------------
 8466|      1|	    FU_DEVICE_PRIVATE_FLAG_REPLUG_MATCH_GUID,
  ------------------
  |  |  282|      1|#define FU_DEVICE_PRIVATE_FLAG_REPLUG_MATCH_GUID "replug-match-guid"
  ------------------
 8467|      1|	    FU_DEVICE_PRIVATE_FLAG_INHERIT_ACTIVATION,
  ------------------
  |  |  290|      1|#define FU_DEVICE_PRIVATE_FLAG_INHERIT_ACTIVATION "inherit-activation"
  ------------------
 8468|      1|	    FU_DEVICE_PRIVATE_FLAG_IS_OPEN,
  ------------------
  |  |  298|      1|#define FU_DEVICE_PRIVATE_FLAG_IS_OPEN "is-open"
  ------------------
 8469|      1|	    FU_DEVICE_PRIVATE_FLAG_AUTO_PARENT_CHILDREN,
  ------------------
  |  |  314|      1|#define FU_DEVICE_PRIVATE_FLAG_AUTO_PARENT_CHILDREN "auto-parent-children"
  ------------------
 8470|      1|	    FU_DEVICE_PRIVATE_FLAG_ATTACH_EXTRA_RESET,
  ------------------
  |  |  322|      1|#define FU_DEVICE_PRIVATE_FLAG_ATTACH_EXTRA_RESET "attach-extra-reset"
  ------------------
 8471|      1|	    FU_DEVICE_PRIVATE_FLAG_INHIBIT_CHILDREN,
  ------------------
  |  |  330|      1|#define FU_DEVICE_PRIVATE_FLAG_INHIBIT_CHILDREN "inhibit-children"
  ------------------
 8472|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_AUTO_REMOVE_CHILDREN,
  ------------------
  |  |  338|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_AUTO_REMOVE_CHILDREN "no-auto-remove-children"
  ------------------
 8473|      1|	    FU_DEVICE_PRIVATE_FLAG_USE_PROXY_FOR_OPEN,
  ------------------
  |  |  587|      1|#define FU_DEVICE_PRIVATE_FLAG_USE_PROXY_FOR_OPEN "use-proxy-for-open"
  ------------------
 8474|      1|	    FU_DEVICE_PRIVATE_FLAG_USE_PROXY_FALLBACK,
  ------------------
  |  |  346|      1|#define FU_DEVICE_PRIVATE_FLAG_USE_PROXY_FALLBACK "use-proxy-fallback"
  ------------------
 8475|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_AUTO_REMOVE,
  ------------------
  |  |  354|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_AUTO_REMOVE "no-auto-remove"
  ------------------
 8476|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_VENDOR,
  ------------------
  |  |  362|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_VENDOR "md-set-vendor"
  ------------------
 8477|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_LID_CLOSED,
  ------------------
  |  |  370|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_LID_CLOSED "no-lid-closed"
  ------------------
 8478|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_SIGNED,
  ------------------
  |  |  386|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_SIGNED "md-set-signed"
  ------------------
 8479|      1|	    FU_DEVICE_PRIVATE_FLAG_AUTO_PAUSE_POLLING,
  ------------------
  |  |  394|      1|#define FU_DEVICE_PRIVATE_FLAG_AUTO_PAUSE_POLLING "auto-pause-polling"
  ------------------
 8480|      1|	    FU_DEVICE_PRIVATE_FLAG_DELAYED_REMOVAL,
  ------------------
  |  |  403|      1|#define FU_DEVICE_PRIVATE_FLAG_DELAYED_REMOVAL "delayed-removal"
  ------------------
 8481|      1|	    FU_DEVICE_PRIVATE_FLAG_IGNORE_SYSTEM_POWER,
  ------------------
  |  |  412|      1|#define FU_DEVICE_PRIVATE_FLAG_IGNORE_SYSTEM_POWER "ignore-system-power"
  ------------------
 8482|      1|	    FU_DEVICE_PRIVATE_FLAG_SAVE_INTO_BACKUP_REMOTE,
  ------------------
  |  |  425|      1|#define FU_DEVICE_PRIVATE_FLAG_SAVE_INTO_BACKUP_REMOTE "save-into-backup-remote"
  ------------------
 8483|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_FLAGS,
  ------------------
  |  |  436|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_FLAGS "md-set-flags"
  ------------------
 8484|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_VERSION,
  ------------------
  |  |  444|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_VERSION "md-set-version"
  ------------------
 8485|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_ONLY_CHECKSUM,
  ------------------
  |  |  454|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_ONLY_CHECKSUM "md-only-checksum"
  ------------------
 8486|      1|	    FU_DEVICE_PRIVATE_FLAG_ADD_INSTANCE_ID_REV,
  ------------------
  |  |  462|      1|#define FU_DEVICE_PRIVATE_FLAG_ADD_INSTANCE_ID_REV "add-instance-id-rev"
  ------------------
 8487|      1|	    FU_DEVICE_PRIVATE_FLAG_UNCONNECTED,
  ------------------
  |  |  470|      1|#define FU_DEVICE_PRIVATE_FLAG_UNCONNECTED "unconnected"
  ------------------
 8488|      1|	    FU_DEVICE_PRIVATE_FLAG_DISPLAY_REQUIRED,
  ------------------
  |  |  478|      1|#define FU_DEVICE_PRIVATE_FLAG_DISPLAY_REQUIRED "display-required"
  ------------------
 8489|      1|	    FU_DEVICE_PRIVATE_FLAG_UPDATE_PENDING,
  ------------------
  |  |  486|      1|#define FU_DEVICE_PRIVATE_FLAG_UPDATE_PENDING "update-pending"
  ------------------
 8490|      1|	    FU_DEVICE_PRIVATE_FLAG_ENFORCE_REQUIRES,
  ------------------
  |  |  511|      1|#define FU_DEVICE_PRIVATE_FLAG_ENFORCE_REQUIRES "enforce-requires"
  ------------------
 8491|      1|	    FU_DEVICE_PRIVATE_FLAG_REQUIRES_UNLOCK_FIRMWARE,
  ------------------
  |  |  521|      1|#define FU_DEVICE_PRIVATE_FLAG_REQUIRES_UNLOCK_FIRMWARE "requires-unlock-firmware"
  ------------------
 8492|      1|	    FU_DEVICE_PRIVATE_FLAG_REQUIRES_UNLOCK_SECUREBOOT,
  ------------------
  |  |  531|      1|#define FU_DEVICE_PRIVATE_FLAG_REQUIRES_UNLOCK_SECUREBOOT "requires-unlock-secureboot"
  ------------------
 8493|      1|	    FU_DEVICE_PRIVATE_FLAG_HOST_FIRMWARE,
  ------------------
  |  |  539|      1|#define FU_DEVICE_PRIVATE_FLAG_HOST_FIRMWARE "host-firmware"
  ------------------
 8494|      1|	    FU_DEVICE_PRIVATE_FLAG_HOST_FIRMWARE_CHILD,
  ------------------
  |  |  547|      1|#define FU_DEVICE_PRIVATE_FLAG_HOST_FIRMWARE_CHILD "host-firmware-child"
  ------------------
 8495|      1|	    FU_DEVICE_PRIVATE_FLAG_HOST_CPU,
  ------------------
  |  |  555|      1|#define FU_DEVICE_PRIVATE_FLAG_HOST_CPU "host-cpu"
  ------------------
 8496|      1|	    FU_DEVICE_PRIVATE_FLAG_HOST_CPU_CHILD,
  ------------------
  |  |  563|      1|#define FU_DEVICE_PRIVATE_FLAG_HOST_CPU_CHILD "host-cpu-child"
  ------------------
 8497|      1|	    FU_DEVICE_PRIVATE_FLAG_EXPLICIT_ORDER,
  ------------------
  |  |  571|      1|#define FU_DEVICE_PRIVATE_FLAG_EXPLICIT_ORDER "explicit-order"
  ------------------
 8498|      1|	    FU_DEVICE_PRIVATE_FLAG_INSTALL_PARENT_FIRST,
  ------------------
  |  |  598|      1|#define FU_DEVICE_PRIVATE_FLAG_INSTALL_PARENT_FIRST "install-parent-first"
  ------------------
 8499|      1|	    FU_DEVICE_PRIVATE_FLAG_REGISTERED,
  ------------------
  |  |  607|      1|#define FU_DEVICE_PRIVATE_FLAG_REGISTERED "registered"
  ------------------
 8500|      1|	    FU_DEVICE_PRIVATE_FLAG_ADD_COUNTERPART_GUIDS,
  ------------------
  |  |  617|      1|#define FU_DEVICE_PRIVATE_FLAG_ADD_COUNTERPART_GUIDS "add-counterpart-guids"
  ------------------
 8501|      1|	    FU_DEVICE_PRIVATE_FLAG_USE_RUNTIME_VERSION,
  ------------------
  |  |  627|      1|#define FU_DEVICE_PRIVATE_FLAG_USE_RUNTIME_VERSION "use-runtime-version"
  ------------------
 8502|      1|	    FU_DEVICE_PRIVATE_FLAG_SKIPS_RESTART,
  ------------------
  |  |  636|      1|#define FU_DEVICE_PRIVATE_FLAG_SKIPS_RESTART "skips-restart"
  ------------------
 8503|      1|	    FU_DEVICE_PRIVATE_FLAG_COUNTERPART_VISIBLE,
  ------------------
  |  |  656|      1|#define FU_DEVICE_PRIVATE_FLAG_COUNTERPART_VISIBLE "counterpart-visible"
  ------------------
 8504|      1|	    FU_DEVICE_PRIVATE_FLAG_DETACH_PREPARE_FIRMWARE,
  ------------------
  |  |  666|      1|#define FU_DEVICE_PRIVATE_FLAG_DETACH_PREPARE_FIRMWARE "detach-prepare-firmware"
  ------------------
 8505|      1|	    FU_DEVICE_PRIVATE_FLAG_EMULATED_REQUIRE_SETUP,
  ------------------
  |  |  676|      1|#define FU_DEVICE_PRIVATE_FLAG_EMULATED_REQUIRE_SETUP "emulated-require-setup"
  ------------------
 8506|      1|	    FU_DEVICE_PRIVATE_FLAG_INSTALL_LOOP_RESTART,
  ------------------
  |  |  686|      1|#define FU_DEVICE_PRIVATE_FLAG_INSTALL_LOOP_RESTART "install-loop-restart"
  ------------------
 8507|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_REQUIRED_FREE,
  ------------------
  |  |  694|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_REQUIRED_FREE "md-set-required-free"
  ------------------
 8508|      1|	    FU_DEVICE_PRIVATE_FLAG_LAZY_VERFMT,
  ------------------
  |  |  712|      1|#define FU_DEVICE_PRIVATE_FLAG_LAZY_VERFMT "lazy-verfmt"
  ------------------
 8509|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_VERSION_EXPECTED,
  ------------------
  |  |  724|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_VERSION_EXPECTED "no-version-expected"
  ------------------
 8510|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_GENERIC_VERSION,
  ------------------
  |  |  502|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_GENERIC_VERSION "no-generic-version"
  ------------------
 8511|      1|	    FU_DEVICE_PRIVATE_FLAG_STRICT_EMULATION_ORDER,
  ------------------
  |  |  737|      1|#define FU_DEVICE_PRIVATE_FLAG_STRICT_EMULATION_ORDER "strict-emulation-order"
  ------------------
 8512|      1|	};
 8513|       |
 8514|      1|	object_class->constructed = fu_device_constructed;
 8515|      1|	object_class->dispose = fu_device_dispose;
 8516|      1|	object_class->finalize = fu_device_finalize;
 8517|      1|	object_class->get_property = fu_device_get_property;
 8518|      1|	object_class->set_property = fu_device_set_property;
 8519|       |
 8520|      1|	device_class->to_string = fu_device_to_string_impl;
 8521|       |
 8522|       |	/* used as device flags, order is important! */
 8523|      7|	for (guint i = 0; i < G_N_ELEMENTS(quark_flags); i++)
  ------------------
  |  |  840|      7|#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
  ------------------
  |  Branch (8523:20): [True: 6, False: 1]
  ------------------
 8524|      6|		quarks[i] = fu_device_register_private_flag_safe(device_class, quark_flags[i]);
 8525|     55|	for (guint i = 0; i < G_N_ELEMENTS(flags); i++)
  ------------------
  |  |  840|     55|#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
  ------------------
  |  Branch (8525:20): [True: 54, False: 1]
  ------------------
 8526|       |		/* register class private flags */
 8527|     54|		fu_device_register_private_flag_safe(device_class, flags[i]);
 8528|       |
 8529|       |	/**
 8530|       |	 * FuDevice::child-added:
 8531|       |	 * @self: the #FuDevice instance that emitted the signal
 8532|       |	 * @device: the #FuDevice child
 8533|       |	 *
 8534|       |	 * The ::child-added signal is emitted when a device has been added as a child.
 8535|       |	 *
 8536|       |	 * Since: 1.0.8
 8537|       |	 **/
 8538|      1|	signals[SIGNAL_CHILD_ADDED] = g_signal_new("child-added",
 8539|      1|						   G_TYPE_FROM_CLASS(object_class),
  ------------------
  |  |  613|      1|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  ------------------
 8540|      1|						   G_SIGNAL_RUN_LAST,
 8541|      1|						   G_STRUCT_OFFSET(FuDeviceClass, child_added),
  ------------------
  |  |  853|      1|      ((glong) offsetof (struct_type, member))
  ------------------
 8542|      1|						   NULL,
 8543|      1|						   NULL,
 8544|      1|						   g_cclosure_marshal_VOID__OBJECT,
 8545|      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)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8546|      1|						   1,
 8547|      1|						   FU_TYPE_DEVICE);
  ------------------
  |  |   22|      1|#define FU_TYPE_DEVICE (fu_device_get_type())
  ------------------
 8548|       |	/**
 8549|       |	 * FuDevice::child-removed:
 8550|       |	 * @self: the #FuDevice instance that emitted the signal
 8551|       |	 * @device: the #FuDevice child
 8552|       |	 *
 8553|       |	 * The ::child-removed signal is emitted when a device has been removed as a child.
 8554|       |	 *
 8555|       |	 * Since: 1.0.8
 8556|       |	 **/
 8557|      1|	signals[SIGNAL_CHILD_REMOVED] = g_signal_new("child-removed",
 8558|      1|						     G_TYPE_FROM_CLASS(object_class),
  ------------------
  |  |  613|      1|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  ------------------
 8559|      1|						     G_SIGNAL_RUN_LAST,
 8560|      1|						     G_STRUCT_OFFSET(FuDeviceClass, child_removed),
  ------------------
  |  |  853|      1|      ((glong) offsetof (struct_type, member))
  ------------------
 8561|      1|						     NULL,
 8562|      1|						     NULL,
 8563|      1|						     g_cclosure_marshal_VOID__OBJECT,
 8564|      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)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8565|      1|						     1,
 8566|      1|						     FU_TYPE_DEVICE);
  ------------------
  |  |   22|      1|#define FU_TYPE_DEVICE (fu_device_get_type())
  ------------------
 8567|       |	/**
 8568|       |	 * FuDevice::request:
 8569|       |	 * @self: the #FuDevice instance that emitted the signal
 8570|       |	 * @request: the #FwupdRequest
 8571|       |	 *
 8572|       |	 * The ::request signal is emitted when the device needs interactive action from the user.
 8573|       |	 *
 8574|       |	 * Since: 1.6.2
 8575|       |	 **/
 8576|      1|	signals[SIGNAL_REQUEST] = g_signal_new("request",
 8577|      1|					       G_TYPE_FROM_CLASS(object_class),
  ------------------
  |  |  613|      1|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  ------------------
 8578|      1|					       G_SIGNAL_RUN_LAST,
 8579|      1|					       G_STRUCT_OFFSET(FuDeviceClass, request),
  ------------------
  |  |  853|      1|      ((glong) offsetof (struct_type, member))
  ------------------
 8580|      1|					       NULL,
 8581|      1|					       NULL,
 8582|      1|					       g_cclosure_marshal_VOID__OBJECT,
 8583|      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)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8584|      1|					       1,
 8585|      1|					       FWUPD_TYPE_REQUEST);
  ------------------
  |  |   15|      1|#define FWUPD_TYPE_REQUEST (fwupd_request_get_type())
  ------------------
 8586|       |
 8587|       |	/**
 8588|       |	 * FuDevice:physical-id:
 8589|       |	 *
 8590|       |	 * The device physical ID.
 8591|       |	 *
 8592|       |	 * Since: 1.1.2
 8593|       |	 */
 8594|      1|	pspec = g_param_spec_string("physical-id",
 8595|      1|				    NULL,
 8596|      1|				    NULL,
 8597|      1|				    NULL,
 8598|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8599|      1|	g_object_class_install_property(object_class, PROP_PHYSICAL_ID, pspec);
 8600|       |
 8601|       |	/**
 8602|       |	 * FuDevice:logical-id:
 8603|       |	 *
 8604|       |	 * The device logical ID.
 8605|       |	 *
 8606|       |	 * Since: 1.1.2
 8607|       |	 */
 8608|      1|	pspec = g_param_spec_string("logical-id",
 8609|      1|				    NULL,
 8610|      1|				    NULL,
 8611|      1|				    NULL,
 8612|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8613|      1|	g_object_class_install_property(object_class, PROP_LOGICAL_ID, pspec);
 8614|       |
 8615|       |	/**
 8616|       |	 * FuDevice:backend-id:
 8617|       |	 *
 8618|       |	 * The device backend ID.
 8619|       |	 *
 8620|       |	 * Since: 1.5.8
 8621|       |	 */
 8622|      1|	pspec = g_param_spec_string("backend-id",
 8623|      1|				    NULL,
 8624|      1|				    NULL,
 8625|      1|				    NULL,
 8626|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8627|      1|	g_object_class_install_property(object_class, PROP_BACKEND_ID, pspec);
 8628|       |
 8629|       |	/**
 8630|       |	 * FuDevice:equivalent-id:
 8631|       |	 *
 8632|       |	 * The device equivalent ID.
 8633|       |	 *
 8634|       |	 * Since: 2.0.0
 8635|       |	 */
 8636|      1|	pspec = g_param_spec_string("equivalent-id",
 8637|      1|				    NULL,
 8638|      1|				    NULL,
 8639|      1|				    NULL,
 8640|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8641|      1|	g_object_class_install_property(object_class, PROP_EQUIVALENT_ID, pspec);
 8642|       |	/**
 8643|       |	 * FuDevice:update-message:
 8644|       |	 *
 8645|       |	 * The device update message.
 8646|       |	 *
 8647|       |	 * Since: 2.0.0
 8648|       |	 */
 8649|      1|	pspec = g_param_spec_string("update-message",
 8650|      1|				    NULL,
 8651|      1|				    NULL,
 8652|      1|				    NULL,
 8653|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8654|      1|	g_object_class_install_property(object_class, PROP_UPDATE_MESSAGE, pspec);
 8655|       |
 8656|       |	/**
 8657|       |	 * FuDevice:update-image:
 8658|       |	 *
 8659|       |	 * The update image for the device.
 8660|       |	 *
 8661|       |	 * Since: 2.0.0
 8662|       |	 */
 8663|      1|	pspec = g_param_spec_string("update-image",
 8664|      1|				    NULL,
 8665|      1|				    NULL,
 8666|      1|				    NULL,
 8667|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8668|      1|	g_object_class_install_property(object_class, PROP_UPDATE_IMAGE, pspec);
 8669|       |
 8670|       |	/**
 8671|       |	 * FuDevice:context:
 8672|       |	 *
 8673|       |	 * The #FuContext to use.
 8674|       |	 *
 8675|       |	 * Since: 1.6.0
 8676|       |	 */
 8677|      1|	pspec = g_param_spec_object("context",
 8678|      1|				    NULL,
 8679|      1|				    NULL,
 8680|      1|				    FU_TYPE_CONTEXT,
  ------------------
  |  |   23|      1|#define FU_TYPE_CONTEXT (fu_context_get_type())
  ------------------
 8681|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 8682|      1|	g_object_class_install_property(object_class, PROP_CONTEXT, pspec);
 8683|       |
 8684|       |	/**
 8685|       |	 * FuDevice:backend:
 8686|       |	 *
 8687|       |	 * The #FuBackend that created the device.
 8688|       |	 *
 8689|       |	 * Since: 2.0.0
 8690|       |	 */
 8691|      1|	pspec = g_param_spec_object("backend",
 8692|      1|				    NULL,
 8693|      1|				    NULL,
 8694|      1|				    FU_TYPE_BACKEND,
  ------------------
  |  |   14|      1|#define FU_TYPE_BACKEND (fu_backend_get_type())
  ------------------
 8695|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 8696|      1|	g_object_class_install_property(object_class, PROP_BACKEND, pspec);
 8697|       |
 8698|       |	/**
 8699|       |	 * FuDevice:proxy:
 8700|       |	 *
 8701|       |	 * The device proxy to use.
 8702|       |	 *
 8703|       |	 * Since: 1.4.1
 8704|       |	 */
 8705|      1|	pspec = g_param_spec_object("proxy",
 8706|      1|				    NULL,
 8707|      1|				    NULL,
 8708|      1|				    FU_TYPE_DEVICE,
  ------------------
  |  |   22|      1|#define FU_TYPE_DEVICE (fu_device_get_type())
  ------------------
 8709|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 8710|      1|	g_object_class_install_property(object_class, PROP_PROXY, pspec);
 8711|       |
 8712|       |	/**
 8713|       |	 * FuDevice:parent:
 8714|       |	 *
 8715|       |	 * The device parent.
 8716|       |	 *
 8717|       |	 * Since: 1.0.8
 8718|       |	 */
 8719|      1|	pspec = g_param_spec_object("parent",
 8720|      1|				    NULL,
 8721|      1|				    NULL,
 8722|      1|				    FU_TYPE_DEVICE,
  ------------------
  |  |   22|      1|#define FU_TYPE_DEVICE (fu_device_get_type())
  ------------------
 8723|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 8724|      1|	g_object_class_install_property(object_class, PROP_PARENT, pspec);
 8725|       |
 8726|       |	/**
 8727|       |	 * FuDevice:private-flags:
 8728|       |	 *
 8729|       |	 * The device private flags.
 8730|       |	 *
 8731|       |	 * Since: 1.9.1
 8732|       |	 */
 8733|      1|	pspec = g_param_spec_uint64("private-flags",
 8734|      1|				    NULL,
 8735|      1|				    NULL,
 8736|      1|				    0,
 8737|      1|				    G_MAXUINT64,
  ------------------
  |  |  101|      1|#define G_MAXUINT64	G_GUINT64_CONSTANT(0xffffffffffffffff)
  |  |  ------------------
  |  |  |  |   65|      1|#define G_GUINT64_CONSTANT(val)	(val##UL)
  |  |  ------------------
  ------------------
 8738|      1|				    0,
 8739|      1|				    G_PARAM_READABLE | G_PARAM_STATIC_NAME);
 8740|      1|	g_object_class_install_property(object_class, PROP_PRIVATE_FLAGS, pspec);
 8741|       |
 8742|       |	/**
 8743|       |	 * FuDevice:vid:
 8744|       |	 *
 8745|       |	 * The device vendor ID.
 8746|       |	 *
 8747|       |	 * Since: 2.0.0
 8748|       |	 */
 8749|      1|	pspec = g_param_spec_uint("vid",
 8750|      1|				  NULL,
 8751|      1|				  NULL,
 8752|      1|				  0,
 8753|      1|				  G_MAXUINT16,
  ------------------
  |  |   81|      1|#define G_MAXUINT16	((guint16) 0xffff)
  ------------------
 8754|      1|				  0,
 8755|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8756|      1|	g_object_class_install_property(object_class, PROP_VID, pspec);
 8757|       |
 8758|       |	/**
 8759|       |	 * FuDevice:pid:
 8760|       |	 *
 8761|       |	 * The device product ID.
 8762|       |	 *
 8763|       |	 * Since: 2.0.0
 8764|       |	 */
 8765|      1|	pspec = g_param_spec_uint("pid",
 8766|      1|				  NULL,
 8767|      1|				  NULL,
 8768|      1|				  0,
 8769|      1|				  G_MAXUINT16,
  ------------------
  |  |   81|      1|#define G_MAXUINT16	((guint16) 0xffff)
  ------------------
 8770|      1|				  0,
 8771|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8772|      1|	g_object_class_install_property(object_class, PROP_PID, pspec);
 8773|       |
 8774|       |	/**
 8775|       |	 * FuDevice:required-free:
 8776|       |	 *
 8777|       |	 * The required amount of free firmware space.
 8778|       |	 *
 8779|       |	 * Since: 2.0.12
 8780|       |	 */
 8781|      1|	pspec = g_param_spec_uint64("required-free",
 8782|      1|				    NULL,
 8783|      1|				    NULL,
 8784|      1|				    0,
 8785|      1|				    G_MAXUINT64,
  ------------------
  |  |  101|      1|#define G_MAXUINT64	G_GUINT64_CONSTANT(0xffffffffffffffff)
  |  |  ------------------
  |  |  |  |   65|      1|#define G_GUINT64_CONSTANT(val)	(val##UL)
  |  |  ------------------
  ------------------
 8786|      1|				    0,
 8787|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8788|      1|	g_object_class_install_property(object_class, PROP_REQUIRED_FREE, pspec);
 8789|      1|}
fu-device.c:fu_device_constructed:
 8427|    740|{
 8428|    740|	FuDevice *self = FU_DEVICE(obj);
 8429|    740|	fu_device_ensure_poll_interval(self);
 8430|    740|	G_OBJECT_CLASS(fu_device_parent_class)->constructed(obj);
  ------------------
  |  |   63|    740|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|    740|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|    740|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8431|    740|}
fu-device.c:fu_device_dispose:
 8435|    740|{
 8436|    740|	FuDevice *self = FU_DEVICE(object);
 8437|    740|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|    740|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 8438|    740|	g_clear_object(&priv->ctx);
  ------------------
  |  |  683|    740|#define g_clear_object(object_ptr) g_clear_pointer ((object_ptr), g_object_unref)
  |  |  ------------------
  |  |  |  |  120|    740|  G_STMT_START                                           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  121|    740|  {                                                      \
  |  |  |  |  122|    740|    G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|    740|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  |  |  ------------------
  |  |  |  |  123|    740|    glib_typeof ((pp)) _pp = (pp);                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    740|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  124|    740|    glib_typeof (*(pp)) _ptr = *_pp;                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    740|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  125|    740|    *_pp = NULL;                                         \
  |  |  |  |  126|    740|    if (_ptr)                                            \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (126:9): [True: 0, False: 740]
  |  |  |  |  ------------------
  |  |  |  |  127|    740|      (destroy) (_ptr);                                  \
  |  |  |  |  128|    740|  }                                                      \
  |  |  |  |  129|    740|  G_STMT_END                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  130|    740|  GLIB_AVAILABLE_MACRO_IN_2_34
  |  |  ------------------
  ------------------
 8439|    740|	g_clear_object(&priv->target);
  ------------------
  |  |  683|    740|#define g_clear_object(object_ptr) g_clear_pointer ((object_ptr), g_object_unref)
  |  |  ------------------
  |  |  |  |  120|    740|  G_STMT_START                                           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  121|    740|  {                                                      \
  |  |  |  |  122|    740|    G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|    740|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  |  |  ------------------
  |  |  |  |  123|    740|    glib_typeof ((pp)) _pp = (pp);                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    740|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  124|    740|    glib_typeof (*(pp)) _ptr = *_pp;                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    740|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  125|    740|    *_pp = NULL;                                         \
  |  |  |  |  126|    740|    if (_ptr)                                            \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (126:9): [True: 0, False: 740]
  |  |  |  |  ------------------
  |  |  |  |  127|    740|      (destroy) (_ptr);                                  \
  |  |  |  |  128|    740|  }                                                      \
  |  |  |  |  129|    740|  G_STMT_END                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  130|    740|  GLIB_AVAILABLE_MACRO_IN_2_34
  |  |  ------------------
  ------------------
 8440|    740|	G_OBJECT_CLASS(fu_device_parent_class)->dispose(object);
  ------------------
  |  |   63|    740|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|    740|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|    740|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8441|    740|}
fu-device.c:fu_device_finalize:
 8803|    740|{
 8804|    740|	FuDevice *self = FU_DEVICE(object);
 8805|    740|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|    740|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 8806|       |
 8807|    740|	if (priv->progress != NULL)
  ------------------
  |  Branch (8807:6): [True: 0, False: 740]
  ------------------
 8808|      0|		g_object_unref(priv->progress);
 8809|    740|	if (priv->proxy != NULL) {
  ------------------
  |  Branch (8809:6): [True: 0, False: 740]
  ------------------
 8810|      0|		if (priv->notify_flags_proxy_id != 0)
  ------------------
  |  Branch (8810:7): [True: 0, False: 0]
  ------------------
 8811|      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
  ------------------
 8812|      0|		if (fu_device_has_private_flag_quark(self, quarks[QUARK_REFCOUNTED_PROXY])) {
  ------------------
  |  Branch (8812:7): [True: 0, False: 0]
  ------------------
 8813|      0|			g_object_unref(priv->proxy);
 8814|      0|		} else {
 8815|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8816|      0|						     (gpointer *)&priv->proxy);
 8817|      0|		}
 8818|      0|	}
 8819|    740|	if (priv->backend != NULL)
  ------------------
  |  Branch (8819:6): [True: 0, False: 740]
  ------------------
 8820|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8821|    740|	if (priv->poll_source != NULL) {
  ------------------
  |  Branch (8821:6): [True: 0, False: 740]
  ------------------
 8822|      0|		g_source_destroy(priv->poll_source);
 8823|      0|		g_source_unref(priv->poll_source);
 8824|      0|	}
 8825|    740|	if (priv->metadata != NULL)
  ------------------
  |  Branch (8825:6): [True: 0, False: 740]
  ------------------
 8826|      0|		g_hash_table_unref(priv->metadata);
 8827|    740|	if (priv->inhibits != NULL)
  ------------------
  |  Branch (8827:6): [True: 0, False: 740]
  ------------------
 8828|      0|		g_hash_table_unref(priv->inhibits);
 8829|    740|	if (priv->instance_hash != NULL)
  ------------------
  |  Branch (8829:6): [True: 664, False: 76]
  ------------------
 8830|    664|		g_hash_table_unref(priv->instance_hash);
 8831|    740|	if (priv->parent_physical_ids != NULL)
  ------------------
  |  Branch (8831:6): [True: 0, False: 740]
  ------------------
 8832|      0|		g_ptr_array_unref(priv->parent_physical_ids);
 8833|    740|	if (priv->parent_backend_ids != NULL)
  ------------------
  |  Branch (8833:6): [True: 0, False: 740]
  ------------------
 8834|      0|		g_ptr_array_unref(priv->parent_backend_ids);
 8835|    740|	if (priv->events != NULL)
  ------------------
  |  Branch (8835:6): [True: 0, False: 740]
  ------------------
 8836|      0|		g_ptr_array_unref(priv->events);
 8837|    740|	if (priv->retry_recs != NULL)
  ------------------
  |  Branch (8837:6): [True: 740, False: 0]
  ------------------
 8838|    740|		g_ptr_array_unref(priv->retry_recs);
 8839|    740|	if (priv->instance_ids != NULL)
  ------------------
  |  Branch (8839:6): [True: 0, False: 740]
  ------------------
 8840|      0|		g_ptr_array_unref(priv->instance_ids);
 8841|    740|	if (priv->parent_guids != NULL)
  ------------------
  |  Branch (8841:6): [True: 0, False: 740]
  ------------------
 8842|      0|		g_ptr_array_unref(priv->parent_guids);
 8843|    740|	if (priv->possible_plugins != NULL)
  ------------------
  |  Branch (8843:6): [True: 0, False: 740]
  ------------------
 8844|      0|		g_ptr_array_unref(priv->possible_plugins);
 8845|    740|	g_array_unref(priv->private_flags);
 8846|    740|	g_free(priv->equivalent_id);
 8847|    740|	g_free(priv->physical_id);
 8848|    740|	g_free(priv->logical_id);
 8849|    740|	g_free(priv->backend_id);
 8850|    740|	g_free(priv->update_request_id);
 8851|    740|	g_free(priv->update_message);
 8852|    740|	g_free(priv->update_image);
 8853|    740|	g_free(priv->fwupd_version);
 8854|    740|	g_free(priv->proxy_guid);
 8855|    740|	g_free(priv->name);
 8856|    740|	g_free(priv->custom_flags);
 8857|       |
 8858|    740|	G_OBJECT_CLASS(fu_device_parent_class)->finalize(object);
  ------------------
  |  |   63|    740|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|    740|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|    740|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8859|    740|}
fu-device.c:fu_device_set_property:
  238|  2.96k|{
  239|  2.96k|	FuDevice *self = FU_DEVICE(object);
  240|  2.96k|	switch (prop_id) {
  241|      0|	case PROP_PHYSICAL_ID:
  ------------------
  |  Branch (241:2): [True: 0, False: 2.96k]
  ------------------
  242|      0|		fu_device_set_physical_id(self, g_value_get_string(value));
  243|      0|		break;
  244|      0|	case PROP_LOGICAL_ID:
  ------------------
  |  Branch (244:2): [True: 0, False: 2.96k]
  ------------------
  245|      0|		fu_device_set_logical_id(self, g_value_get_string(value));
  246|      0|		break;
  247|      0|	case PROP_BACKEND_ID:
  ------------------
  |  Branch (247:2): [True: 0, False: 2.96k]
  ------------------
  248|      0|		fu_device_set_backend_id(self, g_value_get_string(value));
  249|      0|		break;
  250|      0|	case PROP_EQUIVALENT_ID:
  ------------------
  |  Branch (250:2): [True: 0, False: 2.96k]
  ------------------
  251|      0|		fu_device_set_equivalent_id(self, g_value_get_string(value));
  252|      0|		break;
  253|      0|	case PROP_UPDATE_MESSAGE:
  ------------------
  |  Branch (253:2): [True: 0, False: 2.96k]
  ------------------
  254|      0|		fu_device_set_update_message(self, g_value_get_string(value));
  255|      0|		break;
  256|      0|	case PROP_UPDATE_IMAGE:
  ------------------
  |  Branch (256:2): [True: 0, False: 2.96k]
  ------------------
  257|      0|		fu_device_set_update_image(self, g_value_get_string(value));
  258|      0|		break;
  259|    740|	case PROP_CONTEXT:
  ------------------
  |  Branch (259:2): [True: 740, False: 2.22k]
  ------------------
  260|    740|		fu_device_set_context(self, g_value_get_object(value));
  261|    740|		break;
  262|    740|	case PROP_BACKEND:
  ------------------
  |  Branch (262:2): [True: 740, False: 2.22k]
  ------------------
  263|    740|		fu_device_set_backend(self, g_value_get_object(value));
  264|    740|		break;
  265|    740|	case PROP_PROXY:
  ------------------
  |  Branch (265:2): [True: 740, False: 2.22k]
  ------------------
  266|    740|		fu_device_set_proxy(self, g_value_get_object(value));
  267|    740|		break;
  268|    740|	case PROP_PARENT:
  ------------------
  |  Branch (268:2): [True: 740, False: 2.22k]
  ------------------
  269|    740|		fu_device_set_parent(self, g_value_get_object(value));
  270|    740|		break;
  271|      0|	case PROP_VID:
  ------------------
  |  Branch (271:2): [True: 0, False: 2.96k]
  ------------------
  272|      0|		fu_device_set_vid(self, g_value_get_uint(value));
  273|      0|		break;
  274|      0|	case PROP_PID:
  ------------------
  |  Branch (274:2): [True: 0, False: 2.96k]
  ------------------
  275|      0|		fu_device_set_pid(self, g_value_get_uint(value));
  276|      0|		break;
  277|      0|	case PROP_REQUIRED_FREE:
  ------------------
  |  Branch (277:2): [True: 0, False: 2.96k]
  ------------------
  278|      0|		fu_device_set_required_free(self, g_value_get_uint64(value));
  279|      0|		break;
  280|      0|	default:
  ------------------
  |  Branch (280:2): [True: 0, False: 2.96k]
  ------------------
  281|      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]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  282|      0|		break;
  283|  2.96k|	}
  284|  2.96k|}
fu-device.c:fu_device_init:
 8793|    740|{
 8794|    740|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|    740|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 8795|    740|	priv->order = G_MAXINT;
  ------------------
  |  |   34|    740|#define G_MAXINT	INT_MAX
  ------------------
 8796|    740|	priv->acquiesce_delay = 50; /* ms */
 8797|    740|	priv->private_flags = g_array_new(FALSE, FALSE, sizeof(GQuark));
  ------------------
  |  |  814|    740|#define	FALSE	(0)
  ------------------
              	priv->private_flags = g_array_new(FALSE, FALSE, sizeof(GQuark));
  ------------------
  |  |  814|    740|#define	FALSE	(0)
  ------------------
 8798|    740|	priv->proxy_gtype = G_TYPE_INVALID;
  ------------------
  |  |   55|    740|#define G_TYPE_INVALID			G_TYPE_MAKE_FUNDAMENTAL (0)
  |  |  ------------------
  |  |  |  |  221|    740|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|    740|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8799|    740|}
fu-device.c:fu_device_find_private_flag_quark:
  326|      1|{
  327|      1|	FuDeviceClassPrivate *cpriv = fu_device_get_class_private(klass);
  328|     35|	for (guint i = 0; i < cpriv->quarks_cnt; i++) {
  ------------------
  |  Branch (328:20): [True: 35, False: 0]
  ------------------
  329|     35|		if (flag_quark == cpriv->quarks[i])
  ------------------
  |  Branch (329:7): [True: 1, False: 34]
  ------------------
  330|      1|			return cpriv->quarks[i];
  331|     35|	}
  332|      0|	return 0;
  333|      1|}
fu-device.c:fu_device_ensure_poll_interval:
 1315|    740|{
 1316|    740|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|    740|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 1317|       |
 1318|       |	/* called from _init(); will call again from _constructed() */
 1319|    740|	if (priv->ctx == NULL)
  ------------------
  |  Branch (1319:6): [True: 740, False: 0]
  ------------------
 1320|    740|		return;
 1321|       |
 1322|      0|	if (priv->poll_source != NULL) {
  ------------------
  |  Branch (1322:6): [True: 0, False: 0]
  ------------------
 1323|      0|		g_source_destroy(priv->poll_source);
 1324|      0|		g_clear_pointer(&priv->poll_source, g_source_unref);
  ------------------
  |  |  120|      0|  G_STMT_START                                           \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  121|      0|  {                                                      \
  |  |  122|      0|    G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \
  |  |  ------------------
  |  |  |  |  758|      0|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  ------------------
  |  |  123|      0|    glib_typeof ((pp)) _pp = (pp);                       \
  |  |  ------------------
  |  |  |  |  238|      0|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  124|      0|    glib_typeof (*(pp)) _ptr = *_pp;                     \
  |  |  ------------------
  |  |  |  |  238|      0|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  125|      0|    *_pp = NULL;                                         \
  |  |  126|      0|    if (_ptr)                                            \
  |  |  ------------------
  |  |  |  Branch (126:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  127|      0|      (destroy) (_ptr);                                  \
  |  |  128|      0|  }                                                      \
  |  |  129|      0|  G_STMT_END                                             \
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  130|      0|  GLIB_AVAILABLE_MACRO_IN_2_34
  ------------------
 1325|      0|	}
 1326|      0|	if (priv->poll_interval == 0)
  ------------------
  |  Branch (1326:6): [True: 0, False: 0]
  ------------------
 1327|      0|		return;
 1328|      0|	if (priv->poll_interval % 1000 == 0) {
  ------------------
  |  Branch (1328:6): [True: 0, False: 0]
  ------------------
 1329|      0|		priv->poll_source = fu_context_add_timeout_seconds(priv->ctx,
 1330|      0|								   priv->poll_interval / 1000,
 1331|      0|								   fu_device_poll_cb,
 1332|      0|								   self);
 1333|      0|	} else {
 1334|      0|		priv->poll_source =
 1335|      0|		    fu_context_add_timeout(priv->ctx, priv->poll_interval, fu_device_poll_cb, self);
 1336|      0|	}
 1337|      0|}
fu-device.c:fu_device_ensure_exported_name:
 1857|    740|{
 1858|    740|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|    740|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 1859|    740|	FuDevice *parent = fu_device_get_parent_internal(self);
 1860|       |
 1861|    740|	if (fu_device_has_private_flag_quark(self, quarks[QUARK_PARENT_NAME_PREFIX]) &&
  ------------------
  |  Branch (1861:6): [True: 0, False: 740]
  ------------------
 1862|      0|	    priv->name != NULL && parent != NULL && fu_device_get_name(parent) != NULL) {
  ------------------
  |  |  179|      0|#define fu_device_get_name(d)		     fwupd_device_get_name(FWUPD_DEVICE(d))
  ------------------
  |  Branch (1862:6): [True: 0, False: 0]
  |  Branch (1862:28): [True: 0, False: 0]
  |  Branch (1862:46): [True: 0, False: 0]
  ------------------
 1863|      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)))
  |  |  ------------------
  ------------------
 1864|      0|		    g_strdup_printf("%s (%s)", fu_device_get_name(parent), priv->name);
  ------------------
  |  |  179|      0|#define fu_device_get_name(d)		     fwupd_device_get_name(FWUPD_DEVICE(d))
  ------------------
 1865|      0|		fwupd_device_set_name(FWUPD_DEVICE(self), name_parent);
 1866|    740|	} else {
 1867|    740|		fwupd_device_set_name(FWUPD_DEVICE(self), priv->name);
 1868|    740|	}
 1869|    740|}
fu-device.c:fu_device_get_class_private:
  178|     63|{
  179|     63|	return G_TYPE_CLASS_GET_PRIVATE(klass, FU_TYPE_DEVICE, FuDeviceClassPrivate);
  ------------------
  |  |  660|     63|#define G_TYPE_CLASS_GET_PRIVATE(klass, g_type, c_type)   ((c_type*) g_type_class_get_private ((GTypeClass*) (klass), (g_type)))
  ------------------
  180|     63|}
fu-device.c:fu_device_ensure_instance_hash:
 7638|  2.52k|{
 7639|  2.52k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  174|  2.52k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 7640|  2.52k|	if (priv->instance_hash != NULL)
  ------------------
  |  Branch (7640:6): [True: 1.85k, False: 664]
  ------------------
 7641|  1.85k|		return;
 7642|    664|	priv->instance_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
 7643|    664|}

fu_firmware_add_flag:
  108|   342k|{
  109|   342k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   342k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  110|   342k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   342k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   342k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   342k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   342k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   342k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   342k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   342k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   342k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 342k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   342k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   342k|   else                                         \
  |  |  |  |  |  | 1021|   342k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   342k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   342k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 342k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   342k|      { } \
  |  |  633|   342k|    else \
  |  |  634|   342k|      { \
  |  |  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|   342k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   342k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 342k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  111|   342k|	priv->flags |= flag;
  112|   342k|}
fu_firmware_has_flag:
  127|   445k|{
  128|   445k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   445k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  129|   445k|	g_return_val_if_fail(FU_IS_FIRMWARE(self), FALSE);
  ------------------
  |  |  643|   445k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   445k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   445k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   445k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   445k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   445k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   445k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   445k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 445k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   445k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   445k|   else                                         \
  |  |  |  |  |  | 1021|   445k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   445k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   445k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 445k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   445k|      { } \
  |  |  646|   445k|    else \
  |  |  647|   445k|      { \
  |  |  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|   445k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   445k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 445k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  130|   445k|	return (priv->flags & flag) > 0;
  131|   445k|}
fu_firmware_set_offset:
  396|   342k|{
  397|   342k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   342k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  398|   342k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   342k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   342k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   342k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   342k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   342k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   342k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   342k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   342k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 342k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   342k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   342k|   else                                         \
  |  |  |  |  |  | 1021|   342k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   342k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   342k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 342k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   342k|      { } \
  |  |  633|   342k|    else \
  |  |  634|   342k|      { \
  |  |  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|   342k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   342k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 342k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  399|   342k|	priv->offset = offset;
  400|   342k|}
fu_firmware_set_parent:
  449|   445k|{
  450|   445k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   445k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  451|   445k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   445k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   445k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   445k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   445k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   445k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   445k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   445k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   445k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 445k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   445k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   445k|   else                                         \
  |  |  |  |  |  | 1021|   445k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   445k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   445k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 445k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   445k|      { } \
  |  |  633|   445k|    else \
  |  |  634|   445k|      { \
  |  |  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|   445k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   445k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 445k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  452|       |
  453|   445k|	if (priv->parent != NULL)
  ------------------
  |  Branch (453:6): [True: 0, False: 445k]
  ------------------
  454|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  455|   445k|	if (parent != NULL)
  ------------------
  |  Branch (455:6): [True: 103k, False: 342k]
  ------------------
  456|   103k|		g_object_add_weak_pointer(G_OBJECT(parent), (gpointer *)&priv->parent);
  ------------------
  |  |   56|   103k|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|   103k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   103k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  457|   445k|	priv->parent = parent;
  458|   445k|}
fu_firmware_set_size:
  472|   259k|{
  473|   259k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   259k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  474|   259k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   259k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   259k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   259k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   259k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   259k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   259k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   259k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   259k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 259k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   259k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   259k|   else                                         \
  |  |  |  |  |  | 1021|   259k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   259k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   259k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 259k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   259k|      { } \
  |  |  633|   259k|    else \
  |  |  634|   259k|      { \
  |  |  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|   259k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   259k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 259k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  475|   259k|	priv->size = size;
  476|   259k|}
fu_firmware_get_size:
  494|   103k|{
  495|   103k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   103k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  496|   103k|	g_return_val_if_fail(FU_IS_FIRMWARE(self), G_MAXSIZE);
  ------------------
  |  |  643|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   103k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   103k|      { } \
  |  |  646|   103k|    else \
  |  |  647|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  497|   103k|	if (priv->size != 0)
  ------------------
  |  Branch (497:6): [True: 102k, False: 586]
  ------------------
  498|   102k|		return priv->size;
  499|    586|	if (priv->stream != NULL && priv->streamsz != 0)
  ------------------
  |  Branch (499:6): [True: 0, False: 586]
  |  Branch (499:30): [True: 0, False: 0]
  ------------------
  500|      0|		return priv->streamsz;
  501|    586|	if (priv->bytes != NULL)
  ------------------
  |  Branch (501:6): [True: 586, False: 0]
  ------------------
  502|    586|		return g_bytes_get_size(priv->bytes);
  503|      0|	return 0;
  504|    586|}
fu_firmware_set_size_max:
  519|      5|{
  520|      5|	FuFirmwareClassPrivate *cpriv = fu_firmware_get_class_private(klass);
  521|      5|	cpriv->size_max = size_max;
  522|      5|}
fu_firmware_set_idx:
  554|   199k|{
  555|   199k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   199k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  556|   199k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   199k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   199k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   199k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   199k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   199k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   199k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   199k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   199k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 199k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   199k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   199k|   else                                         \
  |  |  |  |  |  | 1021|   199k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   199k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   199k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 199k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   199k|      { } \
  |  |  633|   199k|    else \
  |  |  634|   199k|      { \
  |  |  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|   199k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   199k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 199k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  557|   199k|	priv->idx = idx;
  558|   199k|}
fu_firmware_set_bytes:
  589|   103k|{
  590|   103k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   103k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  591|   103k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   103k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   103k|      { } \
  |  |  633|   103k|    else \
  |  |  634|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  592|   103k|	g_return_if_fail(bytes != NULL);
  ------------------
  |  |  630|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   103k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   103k|      { } \
  |  |  633|   103k|    else \
  |  |  634|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  593|   103k|	if (priv->bytes == bytes)
  ------------------
  |  Branch (593:6): [True: 0, False: 103k]
  ------------------
  594|      0|		return;
  595|   103k|	if (priv->bytes != NULL)
  ------------------
  |  Branch (595:6): [True: 0, False: 103k]
  ------------------
  596|      0|		g_bytes_unref(priv->bytes);
  597|   103k|	priv->bytes = g_bytes_ref(bytes);
  598|       |
  599|       |	/* the input stream is no longer valid */
  600|       |	g_clear_object(&priv->stream);
  ------------------
  |  |  683|   103k|#define g_clear_object(object_ptr) g_clear_pointer ((object_ptr), g_object_unref)
  |  |  ------------------
  |  |  |  |  120|   103k|  G_STMT_START                                           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  121|   103k|  {                                                      \
  |  |  |  |  122|   103k|    G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|   103k|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  |  |  ------------------
  |  |  |  |  123|   103k|    glib_typeof ((pp)) _pp = (pp);                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   103k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  124|   103k|    glib_typeof (*(pp)) _ptr = *_pp;                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   103k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  125|   103k|    *_pp = NULL;                                         \
  |  |  |  |  126|   103k|    if (_ptr)                                            \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (126:9): [True: 0, False: 103k]
  |  |  |  |  ------------------
  |  |  |  |  127|   103k|      (destroy) (_ptr);                                  \
  |  |  |  |  128|   103k|  }                                                      \
  |  |  |  |  129|   103k|  G_STMT_END                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  130|   103k|  GLIB_AVAILABLE_MACRO_IN_2_34
  |  |  ------------------
  ------------------
  601|   103k|}
fu_firmware_parse_stream:
 1114|   342k|{
 1115|   342k|	FuFirmwareClass *klass = FU_FIRMWARE_GET_CLASS(self);
 1116|   342k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   342k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1117|   342k|	gsize streamsz = 0;
 1118|   342k|	g_autoptr(FuInputStream) partial_stream = NULL;
  ------------------
  |  | 1162|   342k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   342k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1119|   342k|	g_autoptr(FuInputStream) seekable_stream = NULL;
  ------------------
  |  | 1162|   342k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   342k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1120|   342k|	g_autoptr(GBytes) blob = NULL;
  ------------------
  |  | 1162|   342k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   342k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1121|       |
 1122|   342k|	g_return_val_if_fail(FU_IS_FIRMWARE(self), FALSE);
  ------------------
  |  |  643|   342k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   342k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   342k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   342k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   342k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   342k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   342k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   342k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 342k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   342k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   342k|   else                                         \
  |  |  |  |  |  | 1021|   342k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   342k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   342k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 342k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   342k|      { } \
  |  |  646|   342k|    else \
  |  |  647|   342k|      { \
  |  |  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|   342k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   342k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 342k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1123|   342k|	g_return_val_if_fail(FU_IS_INPUT_STREAM(stream), FALSE);
  ------------------
  |  |  643|   342k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   342k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   342k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   342k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   342k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   342k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   342k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   342k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 342k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   342k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   342k|   else                                         \
  |  |  |  |  |  | 1021|   342k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   342k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   342k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 342k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   342k|      { } \
  |  |  646|   342k|    else \
  |  |  647|   342k|      { \
  |  |  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|   342k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   342k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 342k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1124|   342k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   342k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   342k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   342k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   342k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   342k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   342k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   342k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   685k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 342k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   342k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   342k|   else                                         \
  |  |  |  |  |  | 1021|   342k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   342k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   342k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 342k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   342k|      { } \
  |  |  646|   342k|    else \
  |  |  647|   342k|      { \
  |  |  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|   342k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   342k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 342k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1125|       |
 1126|       |	/* sanity check */
 1127|   342k|	if (fu_firmware_has_flag(self, FU_FIRMWARE_FLAG_DONE_PARSE)) {
  ------------------
  |  Branch (1127:6): [True: 0, False: 342k]
  ------------------
 1128|      0|		g_set_error_literal(error,
 1129|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1130|      0|				    FWUPD_ERROR_NOT_SUPPORTED,
 1131|      0|				    "firmware object cannot be reused");
 1132|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1133|      0|	}
 1134|       |
 1135|       |	/* ensure the stream is seekable */
 1136|   342k|	if (!G_IS_SEEKABLE(stream) || !g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   34|   685k|#define G_IS_SEEKABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SEEKABLE))
  |  |  ------------------
  |  |  |  |  497|   342k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2313|   342k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   342k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2314|   342k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  |  |  | 2315|   342k|  if (!__inst) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2315:7): [True: 0, False: 342k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2316|   342k|    __r = FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2317|   342k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2317:12): [True: 342k, False: 0]
  |  |  |  |  |  |  |  Branch (2317:31): [True: 0, False: 342k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2318|   342k|    __r = TRUE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2319|   342k|  else \
  |  |  |  |  |  | 2320|   342k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  |  |  | 2321|   342k|  __r; \
  |  |  |  |  |  | 2322|   342k|}))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (!G_IS_SEEKABLE(stream) || !g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   33|   342k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   342k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   342k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1136:6): [True: 0, False: 342k]
  |  Branch (1136:32): [True: 0, False: 342k]
  ------------------
 1137|      0|		blob = fu_input_stream_read_bytes(stream, offset, G_MAXUINT32, NULL, error);
  ------------------
  |  |   92|      0|#define G_MAXUINT32	((guint32) 0xffffffff)
  ------------------
 1138|      0|		if (blob == NULL)
  ------------------
  |  Branch (1138:7): [True: 0, False: 0]
  ------------------
 1139|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1140|      0|		seekable_stream = fu_memory_input_stream_new_from_bytes(blob);
 1141|   342k|	} else {
 1142|   342k|		seekable_stream = g_object_ref(stream);
  ------------------
  |  |  523|   342k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
 1143|   342k|	}
 1144|       |
 1145|       |	/* check size */
 1146|   342k|	if (!fu_input_stream_size(seekable_stream, &streamsz, error))
  ------------------
  |  Branch (1146:6): [True: 0, False: 342k]
  ------------------
 1147|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1148|   342k|	if (streamsz <= offset) {
  ------------------
  |  Branch (1148:6): [True: 53, False: 342k]
  ------------------
 1149|     53|		g_set_error(error,
 1150|     53|			    FWUPD_ERROR,
  ------------------
  |  |   15|     53|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1151|     53|			    FWUPD_ERROR_NOT_SUPPORTED,
 1152|     53|			    "stream size 0x%x is smaller than offset 0x%x",
 1153|     53|			    (guint)streamsz,
 1154|     53|			    (guint)offset);
 1155|     53|		return FALSE;
  ------------------
  |  |  814|     53|#define	FALSE	(0)
  ------------------
 1156|     53|	}
 1157|       |
 1158|       |	/* optional */
 1159|   342k|	if (!fu_firmware_validate_for_offset(self, seekable_stream, offset, &offset, flags, error))
  ------------------
  |  Branch (1159:6): [True: 0, False: 342k]
  ------------------
 1160|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1161|   342k|	fu_firmware_set_offset(self, offset);
 1162|       |
 1163|       |	/* validate offset hasn't been corrupted */
 1164|   342k|	if (offset >= streamsz) {
  ------------------
  |  Branch (1164:6): [True: 0, False: 342k]
  ------------------
 1165|      0|		g_set_error(error,
 1166|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1167|      0|			    FWUPD_ERROR_INVALID_FILE,
 1168|      0|			    "offset 0x%x exceeds stream size 0x%x",
 1169|      0|			    (guint)offset,
 1170|      0|			    (guint)streamsz);
 1171|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1172|      0|	}
 1173|       |
 1174|       |	/* save stream size */
 1175|   342k|	priv->streamsz = streamsz - offset;
 1176|   342k|	if (priv->streamsz == 0) {
  ------------------
  |  Branch (1176:6): [True: 0, False: 342k]
  ------------------
 1177|      0|		g_set_error_literal(error,
 1178|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1179|      0|				    FWUPD_ERROR_NOT_SUPPORTED,
 1180|      0|				    "invalid firmware as zero sized");
 1181|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1182|      0|	}
 1183|   342k|	{
 1184|   342k|		FuFirmwareClassPrivate *cpriv =
 1185|   342k|		    fu_firmware_get_class_private(FU_FIRMWARE_GET_CLASS(self));
 1186|   342k|		if (cpriv->size_max > 0 && priv->streamsz > cpriv->size_max) {
  ------------------
  |  Branch (1186:7): [True: 342k, False: 0]
  |  Branch (1186:30): [True: 0, False: 342k]
  ------------------
 1187|      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)))
  |  |  ------------------
  ------------------
 1188|      0|			g_autofree gchar *sz_max = g_format_size(cpriv->size_max);
  ------------------
  |  | 1167|      0|#define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree)
  |  |  ------------------
  |  |  |  | 1129|      0|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1189|      0|			g_set_error(error,
 1190|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1191|      0|				    FWUPD_ERROR_INVALID_FILE,
 1192|      0|				    "%s firmware is too large (%s, limit %s)",
 1193|      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)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1194|      0|				    sz_val,
 1195|      0|				    sz_max);
 1196|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1197|      0|		}
 1198|       |
 1199|   342k|#ifndef SUPPORTED_BUILD
 1200|       |		/* we want all firmware subclasses to set this now */
 1201|   342k|		if (G_OBJECT_TYPE(self) != FU_TYPE_FIRMWARE &&
  ------------------
  |  |  100|   342k|#define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
  |  |  ------------------
  |  |  |  |  602|   342k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|   342k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (G_OBJECT_TYPE(self) != FU_TYPE_FIRMWARE &&
  ------------------
  |  |   18|   684k|#define FU_TYPE_FIRMWARE (fu_firmware_get_type())
  ------------------
  |  Branch (1201:7): [True: 342k, False: 0]
  ------------------
 1202|   342k|		    cpriv->size_max == FU_FIRMWARE_SIZE_MAX_DEFAULT) {
  ------------------
  |  |   13|   342k|#define FU_FIRMWARE_SIZE_MAX_DEFAULT ((100 * FU_MB) + 1)
  |  |  ------------------
  |  |  |  |   81|   342k|#define FU_MB (1ull << 20)
  |  |  ------------------
  ------------------
  |  Branch (1202:7): [True: 0, False: 342k]
  ------------------
 1203|      0|			g_critical(
  ------------------
  |  |  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__)
  ------------------
 1204|      0|			    "%s did not set firmware max size with fu_firmware_set_size_max()",
 1205|      0|			    G_OBJECT_TYPE_NAME(self));
 1206|      0|		}
 1207|   342k|#endif
 1208|   342k|	}
 1209|       |
 1210|       |	/* any FuFirmware subclass that gets past this point might have allocated memory in
 1211|       |	 * ->tokenize() or ->parse() and needs to be destroyed before parsing again */
 1212|      0|	fu_firmware_add_flag(self, FU_FIRMWARE_FLAG_DONE_PARSE);
 1213|       |
 1214|       |	/* this allows devices to skip reading the old firmware if the GType is unsuitable */
 1215|   342k|	if (klass->check_compatible != NULL)
  ------------------
  |  Branch (1215:6): [True: 0, False: 342k]
  ------------------
 1216|      0|		fu_firmware_add_flag(self, FU_FIRMWARE_FLAG_HAS_CHECK_COMPATIBLE);
 1217|       |
 1218|       |	/* save stream */
 1219|   342k|	if (offset == 0) {
  ------------------
  |  Branch (1219:6): [True: 1.87k, False: 340k]
  ------------------
 1220|  1.87k|		partial_stream = g_object_ref(seekable_stream);
  ------------------
  |  |  523|  1.87k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
 1221|   340k|	} else {
 1222|   340k|		partial_stream =
 1223|   340k|		    fu_partial_input_stream_new(seekable_stream, offset, priv->streamsz, error);
 1224|   340k|		if (partial_stream == NULL) {
  ------------------
  |  Branch (1224:7): [True: 0, False: 340k]
  ------------------
 1225|      0|			g_prefix_error_literal(error, "failed to cut firmware: ");
  ------------------
  |  |   13|      0|#define g_prefix_error_literal	  g_prefix_error
  ------------------
 1226|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1227|      0|		}
 1228|   340k|	}
 1229|       |
 1230|       |	/* cache */
 1231|   342k|	if (flags & FU_FIRMWARE_PARSE_FLAG_CACHE_BLOB) {
  ------------------
  |  Branch (1231:6): [True: 103k, False: 239k]
  ------------------
 1232|   103k|		if (blob == NULL) {
  ------------------
  |  Branch (1232:7): [True: 103k, False: 0]
  ------------------
 1233|   103k|			blob = fu_input_stream_read_bytes(partial_stream,
 1234|   103k|							  0x0,
 1235|   103k|							  priv->streamsz,
 1236|   103k|							  NULL,
 1237|   103k|							  error);
 1238|   103k|			if (blob == NULL)
  ------------------
  |  Branch (1238:8): [True: 0, False: 103k]
  ------------------
 1239|      0|				return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1240|   103k|		}
 1241|   103k|		fu_firmware_set_bytes(self, blob);
 1242|   103k|	}
 1243|   342k|	if (flags & FU_FIRMWARE_PARSE_FLAG_CACHE_STREAM)
  ------------------
  |  Branch (1243:6): [True: 0, False: 342k]
  ------------------
 1244|      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|   342k|  GLIB_AVAILABLE_MACRO_IN_2_44
  ------------------
 1245|       |
 1246|       |	/* optional */
 1247|   342k|	if (klass->tokenize != NULL) {
  ------------------
  |  Branch (1247:6): [True: 0, False: 342k]
  ------------------
 1248|      0|		if (!klass->tokenize(self, partial_stream, flags, error))
  ------------------
  |  Branch (1248:7): [True: 0, False: 0]
  ------------------
 1249|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1250|      0|	}
 1251|       |
 1252|       |	/* optional */
 1253|   342k|	if (klass->parse_full != NULL)
  ------------------
  |  Branch (1253:6): [True: 0, False: 342k]
  ------------------
 1254|      0|		return klass->parse_full(self, seekable_stream, offset, flags, error);
 1255|   342k|	if (klass->parse != NULL)
  ------------------
  |  Branch (1255:6): [True: 342k, False: 0]
  ------------------
 1256|   342k|		return klass->parse(self, partial_stream, flags, error);
 1257|       |
 1258|       |	/* verify alignment */
 1259|      0|	if (streamsz % (1ull << priv->alignment) != 0) {
  ------------------
  |  Branch (1259:6): [True: 0, False: 0]
  ------------------
 1260|      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)))
  |  |  ------------------
  ------------------
 1261|      0|		str = g_format_size_full(1ull << priv->alignment, G_FORMAT_SIZE_IEC_UNITS);
 1262|      0|		g_set_error(error,
 1263|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1264|      0|			    FWUPD_ERROR_INVALID_FILE,
 1265|      0|			    "raw firmware is not aligned to 0x%x (%s)",
 1266|      0|			    (guint)(1ull << priv->alignment),
 1267|      0|			    str);
 1268|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1269|      0|	}
 1270|       |
 1271|       |	/* success */
 1272|      0|	return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1273|      0|}
fu_firmware_parse_bytes:
 1295|   342k|{
 1296|   342k|	g_autoptr(FuInputStream) stream = NULL;
  ------------------
  |  | 1162|   342k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   342k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1297|       |
 1298|   342k|	g_return_val_if_fail(FU_IS_FIRMWARE(self), FALSE);
  ------------------
  |  |  643|   342k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   342k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   342k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   342k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   342k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   342k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   342k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   342k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 342k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   342k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   342k|   else                                         \
  |  |  |  |  |  | 1021|   342k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   342k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   342k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 342k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   342k|      { } \
  |  |  646|   342k|    else \
  |  |  647|   342k|      { \
  |  |  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|   342k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   342k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 342k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1299|   342k|	g_return_val_if_fail(fw != NULL, FALSE);
  ------------------
  |  |  643|   342k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   342k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   342k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   342k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   342k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   342k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   342k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   342k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 342k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   342k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   342k|   else                                         \
  |  |  |  |  |  | 1021|   342k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   342k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   342k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 342k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   342k|      { } \
  |  |  646|   342k|    else \
  |  |  647|   342k|      { \
  |  |  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|   342k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   342k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 342k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1300|   342k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   342k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   342k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   342k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   342k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   342k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   342k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   342k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   685k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 342k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   342k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   342k|   else                                         \
  |  |  |  |  |  | 1021|   342k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   342k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   342k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 342k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   342k|      { } \
  |  |  646|   342k|    else \
  |  |  647|   342k|      { \
  |  |  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|   342k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   342k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 342k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1301|       |
 1302|   342k|	stream = fu_memory_input_stream_new_from_bytes(fw);
 1303|   342k|	return fu_firmware_parse_stream(self, stream, offset, flags, error);
 1304|   342k|}
fu_firmware_add_image_gtype:
 1886|      1|{
 1887|      1|	FuFirmwareClassPrivate *cpriv = fu_firmware_get_class_private(klass);
 1888|       |
 1889|      1|	g_return_if_fail(FU_IS_FIRMWARE_CLASS(klass));
  ------------------
  |  |  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, \
  |  |  ------------------
  |  |  |  |    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|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1890|      1|	g_return_if_fail(type != G_TYPE_INVALID);
  ------------------
  |  |  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, \
  |  |  ------------------
  |  |  |  |    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|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1891|      1|	g_return_if_fail(cpriv->image_gtypes_cnt < FU_FIRMWARE_IMAGE_GTYPES_MAX);
  ------------------
  |  |  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, \
  |  |  ------------------
  |  |  |  |    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|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1892|       |
 1893|      1|	g_type_ensure(type);
 1894|      1|	cpriv->image_gtypes[cpriv->image_gtypes_cnt++] = type;
 1895|      1|}
fu_firmware_add_image:
 1969|   103k|{
 1970|   103k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   103k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1971|       |
 1972|   103k|	g_return_val_if_fail(FU_IS_FIRMWARE(self), FALSE);
  ------------------
  |  |  643|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   103k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   103k|      { } \
  |  |  646|   103k|    else \
  |  |  647|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1973|   103k|	g_return_val_if_fail(FU_IS_FIRMWARE(img), FALSE);
  ------------------
  |  |  643|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   103k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   103k|      { } \
  |  |  646|   103k|    else \
  |  |  647|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1974|   103k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   206k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   103k|      { } \
  |  |  646|   103k|    else \
  |  |  647|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1975|       |
 1976|       |	/* check depth */
 1977|   103k|	if (priv->depth > FU_FIRMWARE_IMAGE_DEPTH_MAX) {
  ------------------
  |  |   83|   103k|#define FU_FIRMWARE_IMAGE_DEPTH_MAX 50
  ------------------
  |  Branch (1977:6): [True: 0, False: 103k]
  ------------------
 1978|      0|		g_set_error(error,
 1979|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1980|      0|			    FWUPD_ERROR_INVALID_DATA,
 1981|      0|			    "images are nested too deep, limit is %u",
 1982|      0|			    (guint)FU_FIRMWARE_IMAGE_DEPTH_MAX);
  ------------------
  |  |   83|      0|#define FU_FIRMWARE_IMAGE_DEPTH_MAX 50
  ------------------
 1983|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1984|      0|	}
 1985|       |
 1986|       |	/* check image is a permissible GType */
 1987|   103k|	if (!fu_firmware_check_image_gtype(self, G_OBJECT_TYPE(img), error))
  ------------------
  |  |  100|   103k|#define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
  |  |  ------------------
  |  |  |  |  602|   103k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|   103k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1987:6): [True: 0, False: 103k]
  ------------------
 1988|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1989|       |
 1990|       |	/* dedupe */
 1991|   103k|	if (priv->flags & FU_FIRMWARE_FLAG_DEDUPE_ID) {
  ------------------
  |  Branch (1991:6): [True: 0, False: 103k]
  ------------------
 1992|      0|		for (guint i = 0; i < priv->images->len; i++) {
  ------------------
  |  Branch (1992:21): [True: 0, False: 0]
  ------------------
 1993|      0|			FuFirmware *img_tmp = g_ptr_array_index(priv->images, i);
  ------------------
  |  |  138|      0|#define    g_ptr_array_index(array,index_) ((array)->pdata)[index_]
  ------------------
 1994|      0|			if (g_strcmp0(fu_firmware_get_id(img_tmp), fu_firmware_get_id(img)) == 0) {
  ------------------
  |  Branch (1994:8): [True: 0, False: 0]
  ------------------
 1995|      0|				g_ptr_array_remove_index(priv->images, i);
 1996|      0|				break;
 1997|      0|			}
 1998|      0|		}
 1999|      0|	}
 2000|   103k|	if (priv->flags & FU_FIRMWARE_FLAG_DEDUPE_IDX) {
  ------------------
  |  Branch (2000:6): [True: 0, False: 103k]
  ------------------
 2001|      0|		for (guint i = 0; i < priv->images->len; i++) {
  ------------------
  |  Branch (2001:21): [True: 0, False: 0]
  ------------------
 2002|      0|			FuFirmware *img_tmp = g_ptr_array_index(priv->images, i);
  ------------------
  |  |  138|      0|#define    g_ptr_array_index(array,index_) ((array)->pdata)[index_]
  ------------------
 2003|      0|			if (fu_firmware_get_idx(img_tmp) == fu_firmware_get_idx(img)) {
  ------------------
  |  Branch (2003:8): [True: 0, False: 0]
  ------------------
 2004|      0|				g_ptr_array_remove_index(priv->images, i);
 2005|      0|				break;
 2006|      0|			}
 2007|      0|		}
 2008|      0|	}
 2009|       |
 2010|       |	/* sanity check */
 2011|   103k|	{
 2012|   103k|		FuFirmwareClassPrivate *cpriv =
 2013|   103k|		    fu_firmware_get_class_private(FU_FIRMWARE_GET_CLASS(self));
 2014|   103k|		if (cpriv->images_max > 0 && priv->images->len >= cpriv->images_max) {
  ------------------
  |  Branch (2014:7): [True: 0, False: 103k]
  |  Branch (2014:32): [True: 0, False: 0]
  ------------------
 2015|      0|			g_set_error(error,
 2016|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 2017|      0|				    FWUPD_ERROR_INVALID_DATA,
 2018|      0|				    "too many images, limit is %u",
 2019|      0|				    cpriv->images_max);
 2020|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 2021|      0|		}
 2022|   103k|	}
 2023|       |
 2024|   103k|	g_ptr_array_add(priv->images, g_object_ref(img));
  ------------------
  |  |  523|   103k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
 2025|       |
 2026|       |	/* set the other way around */
 2027|   103k|	fu_firmware_set_parent(img, self);
 2028|   103k|	fu_firmware_set_depth(img, priv->depth + 1);
 2029|       |
 2030|       |	/* success */
 2031|   103k|	return TRUE;
  ------------------
  |  |  818|   103k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   103k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2032|   103k|}
fu-firmware.c:fu_firmware_class_init:
 2784|      1|{
 2785|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2786|      1|	GParamSpec *pspec;
 2787|       |
 2788|      1|	object_class->finalize = fu_firmware_finalize;
 2789|      1|	object_class->get_property = fu_firmware_get_property;
 2790|      1|	object_class->set_property = fu_firmware_set_property;
 2791|      1|	object_class->constructed = fu_firmware_constructed;
 2792|      1|	fu_firmware_set_size_max(klass, FU_FIRMWARE_SIZE_MAX_DEFAULT);
  ------------------
  |  |   13|      1|#define FU_FIRMWARE_SIZE_MAX_DEFAULT ((100 * FU_MB) + 1)
  |  |  ------------------
  |  |  |  |   81|      1|#define FU_MB (1ull << 20)
  |  |  ------------------
  ------------------
 2793|       |
 2794|       |	/**
 2795|       |	 * FuFirmware:parent:
 2796|       |	 *
 2797|       |	 * The firmware parent.
 2798|       |	 *
 2799|       |	 * Since: 1.8.2
 2800|       |	 */
 2801|      1|	pspec = g_param_spec_object("parent",
 2802|      1|				    NULL,
 2803|      1|				    NULL,
 2804|      1|				    FU_TYPE_FIRMWARE,
  ------------------
  |  |   18|      1|#define FU_TYPE_FIRMWARE (fu_firmware_get_type())
  ------------------
 2805|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 2806|      1|	g_object_class_install_property(object_class, PROP_PARENT, pspec);
 2807|      1|}
fu-firmware.c:fu_firmware_finalize:
 2760|   342k|{
 2761|   342k|	FuFirmware *self = FU_FIRMWARE(object);
 2762|   342k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   342k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 2763|   342k|	g_free(priv->version);
 2764|   342k|	g_free(priv->id);
 2765|   342k|	g_free(priv->filename);
 2766|   342k|	if (priv->bytes != NULL)
  ------------------
  |  Branch (2766:6): [True: 103k, False: 239k]
  ------------------
 2767|   103k|		g_bytes_unref(priv->bytes);
 2768|   342k|	if (priv->stream != NULL)
  ------------------
  |  Branch (2768:6): [True: 0, False: 342k]
  ------------------
 2769|      0|		g_object_unref(priv->stream);
 2770|   342k|	if (priv->chunks != NULL)
  ------------------
  |  Branch (2770:6): [True: 0, False: 342k]
  ------------------
 2771|      0|		g_ptr_array_unref(priv->chunks);
 2772|   342k|	if (priv->patches != NULL)
  ------------------
  |  Branch (2772:6): [True: 0, False: 342k]
  ------------------
 2773|      0|		g_ptr_array_unref(priv->patches);
 2774|   342k|	if (priv->magic != NULL)
  ------------------
  |  Branch (2774:6): [True: 0, False: 342k]
  ------------------
 2775|      0|		g_ptr_array_unref(priv->magic);
 2776|   342k|	if (priv->parent != NULL)
  ------------------
  |  Branch (2776:6): [True: 0, False: 342k]
  ------------------
 2777|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2778|   342k|	g_ptr_array_unref(priv->images);
 2779|   342k|	G_OBJECT_CLASS(fu_firmware_parent_class)->finalize(object);
  ------------------
  |  |   63|   342k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|   342k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|   342k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2780|   342k|}
fu-firmware.c:fu_firmware_set_property:
 2724|   342k|{
 2725|   342k|	FuFirmware *self = FU_FIRMWARE(object);
 2726|   342k|	switch (prop_id) {
 2727|   342k|	case PROP_PARENT:
  ------------------
  |  Branch (2727:2): [True: 342k, False: 0]
  ------------------
 2728|   342k|		fu_firmware_set_parent(self, g_value_get_object(value));
 2729|   342k|		break;
 2730|      0|	default:
  ------------------
  |  Branch (2730:2): [True: 0, False: 342k]
  ------------------
 2731|      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]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2732|      0|		break;
 2733|   342k|	}
 2734|   342k|}
fu-firmware.c:fu_firmware_constructed:
 2745|   342k|{
 2746|   342k|	FuFirmware *self = FU_FIRMWARE(obj);
 2747|   342k|	FuFirmwareClass *klass = FU_FIRMWARE_GET_CLASS(self);
 2748|   342k|	if (klass->add_magic != NULL)
  ------------------
  |  Branch (2748:6): [True: 0, False: 342k]
  ------------------
 2749|      0|		klass->add_magic(self);
 2750|   342k|	if (G_TYPE_FROM_CLASS(klass) != FU_TYPE_FIRMWARE && klass->parse_full == NULL &&
  ------------------
  |  |  613|   342k|#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 &&
  ------------------
  |  |   18|   685k|#define FU_TYPE_FIRMWARE (fu_firmware_get_type())
  ------------------
  |  Branch (2750:6): [True: 342k, False: 0]
  |  Branch (2750:54): [True: 342k, False: 0]
  ------------------
 2751|   342k|	    klass->parse == NULL)
  ------------------
  |  Branch (2751:6): [True: 0, False: 342k]
  ------------------
 2752|      0|		fu_firmware_add_flag(self, FU_FIRMWARE_FLAG_IS_ABSTRACT);
 2753|       |
 2754|       |	/* chain up to parent */
 2755|   342k|	G_OBJECT_CLASS(fu_firmware_parent_class)->constructed(obj);
  ------------------
  |  |   63|   342k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|   342k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|   342k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2756|   342k|}
fu-firmware.c:fu_firmware_init:
 2738|   342k|{
 2739|   342k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   342k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 2740|   342k|	priv->images = g_ptr_array_new_with_free_func((GDestroyNotify)g_object_unref);
 2741|   342k|}
fu-firmware.c:fu_firmware_fuzzer_iface_init:
 3115|      1|{
 3116|      1|	iface->test_input = fu_firmware_fuzzer_test_input;
 3117|      1|	iface->build_example = fu_firmware_fuzzer_build_example;
 3118|      1|}
fu-firmware.c:fu_firmware_get_class_private:
   77|   548k|{
   78|   548k|	return G_TYPE_CLASS_GET_PRIVATE(klass, FU_TYPE_FIRMWARE, FuFirmwareClassPrivate);
  ------------------
  |  |  660|   548k|#define G_TYPE_CLASS_GET_PRIVATE(klass, g_type, c_type)   ((c_type*) g_type_class_get_private ((GTypeClass*) (klass), (g_type)))
  ------------------
   79|   548k|}
fu-firmware.c:fu_firmware_validate_for_offset:
 1059|   342k|{
 1060|   342k|	FuFirmwareClass *klass = FU_FIRMWARE_GET_CLASS(self);
 1061|   342k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   342k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1062|   342k|	gsize streamsz = 0;
 1063|       |
 1064|       |	/* not implemented */
 1065|   342k|	if (klass->validate == NULL)
  ------------------
  |  Branch (1065:6): [True: 342k, False: 0]
  ------------------
 1066|   342k|		return TRUE;
  ------------------
  |  |  818|   342k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   342k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1067|       |
 1068|       |	/* fuzzing */
 1069|      0|	if (!fu_firmware_has_flag(self, FU_FIRMWARE_FLAG_ALWAYS_SEARCH) &&
  ------------------
  |  Branch (1069:6): [True: 0, False: 0]
  ------------------
 1070|      0|	    (flags & FU_FIRMWARE_PARSE_FLAG_NO_SEARCH) > 0) {
  ------------------
  |  Branch (1070:6): [True: 0, False: 0]
  ------------------
 1071|      0|		return klass->validate(self, stream, offset, error);
 1072|      0|	}
 1073|       |
 1074|       |	/* try all the magic values, if provided */
 1075|      0|	if (priv->magic != NULL)
  ------------------
  |  Branch (1075:6): [True: 0, False: 0]
  ------------------
 1076|      0|		return fu_firmware_validate_with_magic(self, stream, offset, offset_found, error);
 1077|       |
 1078|       |	/* limit the size of firmware we search as brute force is expensive */
 1079|      0|	if (!fu_input_stream_size(stream, &streamsz, error))
  ------------------
  |  Branch (1079:6): [True: 0, False: 0]
  ------------------
 1080|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1081|      0|	if (streamsz < FU_FIRMWARE_SEARCH_MAGIC_BUFSZ_MAX) {
  ------------------
  |  |   84|      0|#define FU_FIRMWARE_SEARCH_MAGIC_BUFSZ_MAX (64 * FU_KB)
  |  |  ------------------
  |  |  |  |   72|      0|#define FU_KB (1ull << 10)
  |  |  ------------------
  ------------------
  |  Branch (1081:6): [True: 0, False: 0]
  ------------------
 1082|      0|		for (gsize offset_tmp = offset; offset_tmp < streamsz; offset_tmp++) {
  ------------------
  |  Branch (1082:35): [True: 0, False: 0]
  ------------------
 1083|      0|			if (klass->validate(self, stream, offset_tmp, NULL)) {
  ------------------
  |  Branch (1083:8): [True: 0, False: 0]
  ------------------
 1084|      0|				*offset_found = offset_tmp;
 1085|      0|				return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1086|      0|			}
 1087|      0|		}
 1088|      0|	}
 1089|       |
 1090|       |	/* check in more detail */
 1091|      0|	return klass->validate(self, stream, offset, error);
 1092|      0|}
fu-firmware.c:fu_firmware_check_image_gtype:
 1923|   103k|{
 1924|   103k|	FuFirmwareClassPrivate *cpriv = fu_firmware_get_class_private(FU_FIRMWARE_GET_CLASS(self));
 1925|       |
 1926|       |	/* certain GTypes can opt-out of this check */
 1927|   103k|	if (fu_firmware_has_flag(self, FU_FIRMWARE_FLAG_NO_IMAGE_TYPE_CHECK))
  ------------------
  |  Branch (1927:6): [True: 0, False: 103k]
  ------------------
 1928|      0|		return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1929|       |
 1930|   103k|	if (cpriv->image_gtypes_cnt == 0) {
  ------------------
  |  Branch (1930:6): [True: 0, False: 103k]
  ------------------
 1931|      0|#ifndef SUPPORTED_BUILD
 1932|      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__)
  ------------------
 1933|      0|			   G_OBJECT_TYPE_NAME(self),
 1934|      0|			   g_type_name(gtype));
 1935|      0|#endif
 1936|      0|		return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1937|      0|	}
 1938|   103k|	for (guint i = 0; i < cpriv->image_gtypes_cnt; i++) {
  ------------------
  |  Branch (1938:20): [True: 103k, False: 0]
  ------------------
 1939|   103k|		if (cpriv->image_gtypes[i] == gtype)
  ------------------
  |  Branch (1939:7): [True: 103k, False: 0]
  ------------------
 1940|   103k|			return TRUE;
  ------------------
  |  |  818|   103k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   103k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1941|   103k|	}
 1942|      0|	g_set_error(error,
 1943|      0|		    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1944|      0|		    FWUPD_ERROR_NOT_SUPPORTED,
 1945|      0|		    "cannot add %s to %s",
 1946|      0|		    g_type_name(gtype),
 1947|      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)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1948|      0|	return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1949|   103k|}
fu-firmware.c:fu_firmware_set_depth:
 1851|   103k|{
 1852|   103k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   103k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1853|   103k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   103k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   103k|      { } \
  |  |  633|   103k|    else \
  |  |  634|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1854|   103k|	priv->depth = depth;
 1855|   103k|}

fu_fuzzer_test_input:
   32|    740|{
   33|    740|	FuFuzzerInterface *iface = FU_FUZZER_GET_IFACE(self);
   34|    740|	if (iface->test_input == NULL) {
  ------------------
  |  Branch (34:6): [True: 0, False: 740]
  ------------------
   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|    740|	return iface->test_input(self, blob, error);
   42|    740|}
fu-fuzzer.c:fu_fuzzer_default_init:
   15|      1|{
   16|      1|}

fu_input_stream_read:
  155|  1.09M|{
  156|  1.09M|	g_return_val_if_fail(FU_IS_INPUT_STREAM(stream), -1);
  ------------------
  |  |  643|  1.09M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.09M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.09M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.09M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.09M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.09M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.09M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.09M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.09M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.09M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.09M|   else                                         \
  |  |  |  |  |  | 1021|  1.09M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.09M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.09M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.09M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.09M|      { } \
  |  |  646|  1.09M|    else \
  |  |  647|  1.09M|      { \
  |  |  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|  1.09M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.09M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.09M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  157|  1.09M|	g_return_val_if_fail(buffer != NULL, -1);
  ------------------
  |  |  643|  1.09M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.09M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.09M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.09M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.09M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.09M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.09M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.09M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.09M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.09M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.09M|   else                                         \
  |  |  |  |  |  | 1021|  1.09M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.09M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.09M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.09M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.09M|      { } \
  |  |  646|  1.09M|    else \
  |  |  647|  1.09M|      { \
  |  |  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|  1.09M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.09M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.09M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  158|  1.09M|	g_return_val_if_fail(error == NULL || *error == NULL, -1);
  ------------------
  |  |  643|  1.09M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.09M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.09M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.09M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.09M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.09M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.09M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.28M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.09M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.09M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.09M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.09M|   else                                         \
  |  |  |  |  |  | 1021|  1.09M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.09M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.09M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.09M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.09M|      { } \
  |  |  646|  1.09M|    else \
  |  |  647|  1.09M|      { \
  |  |  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|  1.09M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.09M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.09M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  159|  1.09M|	return FU_INPUT_STREAM_GET_CLASS(stream)->read_fn(stream,
  160|  1.09M|							  buffer,
  161|  1.09M|							  count,
  162|  1.09M|							  cancellable,
  163|  1.09M|							  error);
  164|  1.09M|}
fu_input_stream_read_byte_array:
  479|   544k|{
  480|   544k|	guint8 tmp[0x8000]; /* nocheck:zero-init */
  481|   544k|	g_autoptr(GByteArray) buf = g_byte_array_new();
  ------------------
  |  | 1162|   544k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   544k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  482|   544k|	g_autoptr(GError) error_local = NULL;
  ------------------
  |  | 1162|   544k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   544k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  483|       |
  484|   544k|	g_return_val_if_fail(FU_IS_INPUT_STREAM(stream), NULL);
  ------------------
  |  |  643|   544k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   544k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   544k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   544k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   544k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   544k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   544k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   544k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 544k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   544k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   544k|   else                                         \
  |  |  |  |  |  | 1021|   544k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   544k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   544k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 544k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   544k|      { } \
  |  |  646|   544k|    else \
  |  |  647|   544k|      { \
  |  |  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|   544k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   544k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 544k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  485|   544k|	g_return_val_if_fail(progress == NULL || FU_IS_PROGRESS(progress), NULL);
  ------------------
  |  |  643|   544k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   544k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   544k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   544k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   544k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   544k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   544k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.08M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 544k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   544k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   544k|   else                                         \
  |  |  |  |  |  | 1021|   544k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   544k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   544k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 544k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   544k|      { } \
  |  |  646|   544k|    else \
  |  |  647|   544k|      { \
  |  |  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|   544k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   544k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 544k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  486|   544k|	g_return_val_if_fail(error == NULL || *error == NULL, NULL);
  ------------------
  |  |  643|   544k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   544k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   544k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   544k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   544k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   544k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   544k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.08M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 544k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   544k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   544k|   else                                         \
  |  |  |  |  |  | 1021|   544k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   544k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   544k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 544k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   544k|      { } \
  |  |  646|   544k|    else \
  |  |  647|   544k|      { \
  |  |  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|   544k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   544k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 544k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  487|       |
  488|       |	/* this is invalid */
  489|   544k|	if (count == 0) {
  ------------------
  |  Branch (489:6): [True: 0, False: 544k]
  ------------------
  490|      0|		g_set_error_literal(error,
  491|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  492|      0|				    FWUPD_ERROR_NOT_SUPPORTED,
  493|      0|				    "read size must be non-zero");
  494|      0|		return NULL;
  495|      0|	}
  496|       |
  497|       |	/* seek back to start */
  498|   544k|	if (G_IS_SEEKABLE(stream) && g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   34|  1.08M|#define G_IS_SEEKABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SEEKABLE))
  |  |  ------------------
  |  |  |  |  497|   544k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2313|   544k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   544k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2314|   544k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  |  |  | 2315|   544k|  if (!__inst) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2315:7): [True: 0, False: 544k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2316|   544k|    __r = FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2317|   544k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2317:12): [True: 544k, False: 0]
  |  |  |  |  |  |  |  Branch (2317:31): [True: 0, False: 544k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2318|   544k|    __r = TRUE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2319|   544k|  else \
  |  |  |  |  |  | 2320|   544k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  |  |  | 2321|   544k|  __r; \
  |  |  |  |  |  | 2322|   544k|}))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (34:36): [True: 544k, False: 0]
  |  |  ------------------
  ------------------
              	if (G_IS_SEEKABLE(stream) && g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   33|   544k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   544k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   544k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (498:31): [True: 544k, False: 0]
  ------------------
  499|   544k|		if (!g_seekable_seek(G_SEEKABLE(stream), offset, G_SEEK_SET, NULL, error))
  ------------------
  |  |   33|   544k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   544k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   544k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (499:7): [True: 0, False: 544k]
  ------------------
  500|      0|			return NULL;
  501|   544k|	}
  502|       |
  503|       |	/* read from stream in 32kB chunks */
  504|   549k|	while (TRUE) {
  ------------------
  |  |  818|   549k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   549k|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (818:14): [True: 549k, Folded]
  |  |  ------------------
  ------------------
  505|   549k|		gssize sz;
  506|   549k|		sz = fu_input_stream_read(stream,
  507|   549k|					  tmp,
  508|   549k|					  MIN(count - buf->len, sizeof(tmp)),
  ------------------
  |  |  825|   549k|#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (825:21): [True: 544k, False: 5.25k]
  |  |  ------------------
  ------------------
  509|   549k|					  NULL,
  510|   549k|					  &error_local);
  511|   549k|		if (sz == 0)
  ------------------
  |  Branch (511:7): [True: 516, False: 549k]
  ------------------
  512|    516|			break;
  513|   549k|		if (sz < 0) {
  ------------------
  |  Branch (513:7): [True: 0, False: 549k]
  ------------------
  514|      0|			g_set_error_literal(error,
  515|      0|					    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  516|      0|					    FWUPD_ERROR_INVALID_FILE,
  517|      0|					    error_local->message);
  518|      0|			return NULL;
  519|      0|		}
  520|       |
  521|       |		/* update progress */
  522|   549k|		if (progress != NULL)
  ------------------
  |  Branch (522:7): [True: 0, False: 549k]
  ------------------
  523|      0|			fu_progress_set_percentage_full(progress, buf->len, count);
  524|       |
  525|   549k|		g_byte_array_append(buf, tmp, sz);
  526|   549k|		if (buf->len >= count)
  ------------------
  |  Branch (526:7): [True: 543k, False: 5.76k]
  ------------------
  527|   543k|			break;
  528|   549k|	}
  529|       |
  530|       |	/* no data was read */
  531|   544k|	if (buf->len == 0) {
  ------------------
  |  Branch (531:6): [True: 1, False: 544k]
  ------------------
  532|      1|		g_set_error_literal(error,
  533|      1|				    FWUPD_ERROR,
  ------------------
  |  |   15|      1|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  534|      1|				    FWUPD_ERROR_INVALID_FILE,
  535|      1|				    "no data could be read");
  536|      1|		return NULL;
  537|      1|	}
  538|       |
  539|       |	/* success */
  540|   544k|	return g_steal_pointer(&buf);
  ------------------
  |  |  222|   544k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  541|   544k|}
fu_input_stream_read_bytes:
  565|   103k|{
  566|   103k|	g_autoptr(GByteArray) buf = NULL;
  ------------------
  |  | 1162|   103k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   103k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  567|   103k|	g_return_val_if_fail(FU_IS_INPUT_STREAM(stream), NULL);
  ------------------
  |  |  643|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   103k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   103k|      { } \
  |  |  646|   103k|    else \
  |  |  647|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  568|   103k|	g_return_val_if_fail(progress == NULL || FU_IS_PROGRESS(progress), NULL);
  ------------------
  |  |  643|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   206k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   103k|      { } \
  |  |  646|   103k|    else \
  |  |  647|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  569|   103k|	g_return_val_if_fail(error == NULL || *error == NULL, NULL);
  ------------------
  |  |  643|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   206k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   103k|      { } \
  |  |  646|   103k|    else \
  |  |  647|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  570|   103k|	buf = fu_input_stream_read_byte_array(stream, offset, count, progress, error);
  571|   103k|	if (buf == NULL)
  ------------------
  |  Branch (571:6): [True: 0, False: 103k]
  ------------------
  572|      0|		return NULL;
  573|   103k|	return g_byte_array_free_to_bytes(g_steal_pointer(&buf));
  ------------------
  |  |  222|   103k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  574|   103k|}
fu_input_stream_size:
  626|   683k|{
  627|   683k|	g_return_val_if_fail(FU_IS_INPUT_STREAM(stream), FALSE);
  ------------------
  |  |  643|   683k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   683k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   683k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   683k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   683k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   683k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   683k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   683k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 683k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   683k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   683k|   else                                         \
  |  |  |  |  |  | 1021|   683k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   683k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   683k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 683k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   683k|      { } \
  |  |  646|   683k|    else \
  |  |  647|   683k|      { \
  |  |  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|   683k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   683k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 683k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  628|   683k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   683k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   683k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   683k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   683k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   683k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   683k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   683k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.36M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 683k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   683k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   683k|   else                                         \
  |  |  |  |  |  | 1021|   683k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   683k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   683k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 683k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   683k|      { } \
  |  |  646|   683k|    else \
  |  |  647|   683k|      { \
  |  |  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|   683k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   683k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 683k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  629|       |
  630|       |	/* streaming from unseekable stream */
  631|   683k|	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|   683k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2313|   683k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   683k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2314|   683k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  |  |  | 2315|   683k|  if (!__inst) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2315:7): [True: 0, False: 683k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2316|   683k|    __r = FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2317|   683k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2317:12): [True: 683k, False: 0]
  |  |  |  |  |  |  |  Branch (2317:31): [True: 0, False: 683k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2318|   683k|    __r = TRUE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2319|   683k|  else \
  |  |  |  |  |  | 2320|   683k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  |  |  | 2321|   683k|  __r; \
  |  |  |  |  |  | 2322|   683k|}))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (!G_IS_SEEKABLE(stream) || !g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   33|   683k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   683k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   683k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (631:6): [True: 0, False: 683k]
  |  Branch (631:32): [True: 0, False: 683k]
  ------------------
  632|      0|		if (val != NULL)
  ------------------
  |  Branch (632:7): [True: 0, False: 0]
  ------------------
  633|      0|			*val = G_MAXSIZE;
  ------------------
  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  634|      0|		return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  635|      0|	}
  636|       |
  637|   683k|	if (!g_seekable_seek(G_SEEKABLE(stream), 0, G_SEEK_END, NULL, error)) {
  ------------------
  |  |   33|   683k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   683k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   683k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (637:6): [True: 0, False: 683k]
  ------------------
  638|      0|		g_prefix_error_literal(error, "seek to end: ");
  ------------------
  |  |   13|      0|#define g_prefix_error_literal	  g_prefix_error
  ------------------
  639|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  640|      0|	}
  641|   683k|	if (val != NULL)
  ------------------
  |  Branch (641:6): [True: 683k, False: 0]
  ------------------
  642|   683k|		*val = g_seekable_tell(G_SEEKABLE(stream));
  ------------------
  |  |   33|   683k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   683k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   683k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  643|       |
  644|       |	/* success */
  645|   683k|	return TRUE;
  ------------------
  |  |  818|   683k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   683k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  646|   683k|}
fu-input-stream.c:fu_input_stream_class_init:
  122|      1|{
  123|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  124|      1|	object_class->constructed = fu_input_stream_constructed;
  125|      1|	klass->tell = fu_input_stream_default_tell;
  126|      1|	klass->can_seek = fu_input_stream_default_can_seek;
  127|      1|	klass->seek = fu_input_stream_default_seek;
  128|      1|}
fu-input-stream.c:fu_input_stream_constructed:
  111|   683k|{
  112|   683k|	FuInputStreamClass *klass = FU_INPUT_STREAM_GET_CLASS(object);
  113|       |
  114|   683k|	G_OBJECT_CLASS(fu_input_stream_parent_class)->constructed(object);
  ------------------
  |  |   63|   683k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|   683k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|   683k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  115|       |
  116|       |	/* every FuInputStream subclass must implement read_fn */
  117|   683k|	g_assert(klass->read_fn != NULL); /* nocheck:blocked */
  ------------------
  |  |  231|   683k|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   683k|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|   683k|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|   683k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   683k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   683k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   683k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   683k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 683k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   683k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   683k|   else                                         \
  |  |  |  |  |  | 1021|   683k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   683k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   683k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 683k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|   683k|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |                                                              g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|   683k|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   683k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 683k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  118|   683k|}
fu-input-stream.c:fu_input_stream_init:
  132|   683k|{
  133|   683k|}
fu-input-stream.c:fu_input_stream_seekable_iface_init:
  101|      1|{
  102|      1|	iface->tell = fu_input_stream_seekable_tell;
  103|      1|	iface->can_seek = fu_input_stream_seekable_can_seek;
  104|      1|	iface->seek = fu_input_stream_seekable_seek;
  105|      1|	iface->can_truncate = fu_input_stream_seekable_can_truncate;
  106|      1|	iface->truncate_fn = fu_input_stream_seekable_truncate;
  107|      1|}
fu-input-stream.c:fu_input_stream_seekable_tell:
   54|  3.07M|{
   55|  3.07M|	FuInputStream *self = FU_INPUT_STREAM(seekable);
   56|  3.07M|	FuInputStreamClass *klass = FU_INPUT_STREAM_GET_CLASS(self);
   57|  3.07M|	return klass->tell(self);
   58|  3.07M|}
fu-input-stream.c:fu_input_stream_seekable_can_seek:
   62|  2.11M|{
   63|  2.11M|	FuInputStream *self = FU_INPUT_STREAM(seekable);
   64|  2.11M|	FuInputStreamClass *klass = FU_INPUT_STREAM_GET_CLASS(self);
   65|  2.11M|	return klass->can_seek(self);
   66|  2.11M|}
fu-input-stream.c:fu_input_stream_seekable_seek:
   74|  1.76M|{
   75|  1.76M|	FuInputStream *self = FU_INPUT_STREAM(seekable);
   76|  1.76M|	FuInputStreamClass *klass = FU_INPUT_STREAM_GET_CLASS(self);
   77|  1.76M|	return klass->seek(self, offset, type, cancellable, error);
   78|  1.76M|}

fu_memread_uint16:
  142|  56.8k|{
  143|  56.8k|	guint16 val_hw;
  144|  56.8k|	guint16 val_native;
  145|  56.8k|	memcpy(&val_hw, buf, sizeof(val_hw)); /* nocheck:blocked */
  146|  56.8k|	switch (endian) {
  147|      0|	case G_BIG_ENDIAN:
  ------------------
  |  |  185|      0|#define G_BIG_ENDIAN    4321
  ------------------
  |  Branch (147:2): [True: 0, False: 56.8k]
  ------------------
  148|      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)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  149|      0|		break;
  150|  56.8k|	case G_LITTLE_ENDIAN:
  ------------------
  |  |  184|  56.8k|#define G_LITTLE_ENDIAN 1234
  ------------------
  |  Branch (150:2): [True: 56.8k, False: 0]
  ------------------
  151|  56.8k|		val_native = GUINT16_FROM_LE(val_hw); /* nocheck:blocked */
  ------------------
  |  |  386|  56.8k|#define GUINT16_FROM_LE(val)	(GUINT16_TO_LE (val))
  |  |  ------------------
  |  |  |  |  160|  56.8k|#define GUINT16_TO_LE(val)	((guint16) (val))
  |  |  ------------------
  ------------------
  152|  56.8k|		break;
  153|      0|	default:
  ------------------
  |  Branch (153:2): [True: 0, False: 56.8k]
  ------------------
  154|      0|		val_native = val_hw;
  155|      0|		break;
  156|  56.8k|	}
  157|  56.8k|	return val_native;
  158|  56.8k|}
fu_memchk_read:
  328|  1.00M|{
  329|  1.00M|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|  1.00M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.00M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.00M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.00M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.00M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.00M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.00M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.02M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 735, False: 1.00M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.00M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.00M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.00M|   else                                         \
  |  |  |  |  |  | 1021|  1.00M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.00M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.00M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.00M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.00M|      { } \
  |  |  646|  1.00M|    else \
  |  |  647|  1.00M|      { \
  |  |  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|  1.00M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.00M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.00M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  330|  1.00M|	if (n == 0)
  ------------------
  |  Branch (330:6): [True: 0, False: 1.00M]
  ------------------
  331|      0|		return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  332|  1.00M|	if (n > bufsz) {
  ------------------
  |  Branch (332:6): [True: 15, False: 1.00M]
  ------------------
  333|     15|		g_set_error(error,
  334|     15|			    FWUPD_ERROR,
  ------------------
  |  |   15|     15|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  335|     15|			    FWUPD_ERROR_READ,
  336|     15|			    "attempted to read 0x%02x bytes from buffer of 0x%02x",
  337|     15|			    (guint)n,
  338|     15|			    (guint)bufsz);
  339|     15|		return FALSE;
  ------------------
  |  |  814|     15|#define	FALSE	(0)
  ------------------
  340|     15|	}
  341|  1.00M|	if (fu_size_checked_add(offset, n) == G_MAXSIZE) {
  ------------------
  |  |   84|  1.00M|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|  1.00M|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  |  Branch (341:6): [True: 0, False: 1.00M]
  ------------------
  342|      0|		g_set_error(error,
  343|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  344|      0|			    FWUPD_ERROR_READ,
  345|      0|			    "offset 0x%02x + 0x%02x overflowed",
  346|      0|			    (guint)offset,
  347|      0|			    (guint)n);
  348|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  349|      0|	}
  350|  1.00M|	if (offset > bufsz || n + offset > bufsz) {
  ------------------
  |  Branch (350:6): [True: 0, False: 1.00M]
  |  Branch (350:24): [True: 78, False: 1.00M]
  ------------------
  351|     78|		g_set_error(error,
  352|     78|			    FWUPD_ERROR,
  ------------------
  |  |   15|     78|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  353|     78|			    FWUPD_ERROR_READ,
  354|     78|			    "attempted to read 0x%02x bytes at offset 0x%02x from buffer of 0x%02x",
  355|     78|			    (guint)n,
  356|     78|			    (guint)offset,
  357|     78|			    (guint)bufsz);
  358|     78|		return FALSE;
  ------------------
  |  |  814|     78|#define	FALSE	(0)
  ------------------
  359|     78|	}
  360|  1.00M|	return TRUE;
  ------------------
  |  |  818|  1.00M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.00M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  361|  1.00M|}
fu_memchk_write:
  383|   549k|{
  384|   549k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   549k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   549k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   549k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   549k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   549k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   549k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   549k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.64M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 549k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 549k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   549k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   549k|   else                                         \
  |  |  |  |  |  | 1021|   549k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   549k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   549k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 549k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   549k|      { } \
  |  |  646|   549k|    else \
  |  |  647|   549k|      { \
  |  |  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|   549k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   549k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 549k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  385|   549k|	if (n == 0)
  ------------------
  |  Branch (385:6): [True: 0, False: 549k]
  ------------------
  386|      0|		return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  387|   549k|	if (n > bufsz) {
  ------------------
  |  Branch (387:6): [True: 0, False: 549k]
  ------------------
  388|      0|		g_set_error(error,
  389|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  390|      0|			    FWUPD_ERROR_WRITE,
  391|      0|			    "attempted to write 0x%02x bytes to buffer of 0x%02x",
  392|      0|			    (guint)n,
  393|      0|			    (guint)bufsz);
  394|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  395|      0|	}
  396|   549k|	if (fu_size_checked_add(offset, n) == G_MAXSIZE) {
  ------------------
  |  |   84|   549k|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|   549k|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  |  Branch (396:6): [True: 0, False: 549k]
  ------------------
  397|      0|		g_set_error(error,
  398|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  399|      0|			    FWUPD_ERROR_WRITE,
  400|      0|			    "offset 0x%02x + 0x%02x overflowed",
  401|      0|			    (guint)offset,
  402|      0|			    (guint)n);
  403|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  404|      0|	}
  405|   549k|	if (offset > bufsz || n + offset > bufsz) {
  ------------------
  |  Branch (405:6): [True: 0, False: 549k]
  |  Branch (405:24): [True: 0, False: 549k]
  ------------------
  406|      0|		g_set_error(error,
  407|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  408|      0|			    FWUPD_ERROR_WRITE,
  409|      0|			    "attempted to write 0x%02x bytes at offset 0x%02x to buffer of 0x%02x",
  410|      0|			    (guint)n,
  411|      0|			    (guint)offset,
  412|      0|			    (guint)bufsz);
  413|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  414|      0|	}
  415|   549k|	return TRUE;
  ------------------
  |  |  818|   549k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   549k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  416|   549k|}
fu_memcpy_safe:
  453|   549k|{
  454|   549k|	g_return_val_if_fail(dst != NULL, FALSE);
  ------------------
  |  |  643|   549k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   549k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   549k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   549k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   549k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   549k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   549k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   549k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 549k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   549k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   549k|   else                                         \
  |  |  |  |  |  | 1021|   549k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   549k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   549k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 549k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   549k|      { } \
  |  |  646|   549k|    else \
  |  |  647|   549k|      { \
  |  |  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|   549k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   549k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 549k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  455|   549k|	g_return_val_if_fail(src != NULL, FALSE);
  ------------------
  |  |  643|   549k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   549k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   549k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   549k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   549k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   549k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   549k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   549k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 549k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   549k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   549k|   else                                         \
  |  |  |  |  |  | 1021|   549k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   549k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   549k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 549k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   549k|      { } \
  |  |  646|   549k|    else \
  |  |  647|   549k|      { \
  |  |  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|   549k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   549k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 549k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  456|   549k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   549k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   549k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   549k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   549k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   549k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   549k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   549k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.64M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 549k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 549k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   549k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   549k|   else                                         \
  |  |  |  |  |  | 1021|   549k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   549k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   549k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 549k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   549k|      { } \
  |  |  646|   549k|    else \
  |  |  647|   549k|      { \
  |  |  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|   549k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   549k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 549k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  457|       |
  458|   549k|	if (!fu_memchk_read(src_sz, src_offset, n, error))
  ------------------
  |  Branch (458:6): [True: 0, False: 549k]
  ------------------
  459|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  460|   549k|	if (!fu_memchk_write(dst_sz, dst_offset, n, error))
  ------------------
  |  Branch (460:6): [True: 0, False: 549k]
  ------------------
  461|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  462|   549k|	memcpy(dst + dst_offset, src + src_offset, n); /* nocheck:blocked */
  463|   549k|	return TRUE;
  ------------------
  |  |  818|   549k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   549k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  464|   549k|}

fu_memory_input_stream_new_from_bytes:
  150|   342k|{
  151|   342k|	g_autoptr(FuMemoryInputStream) self = NULL;
  ------------------
  |  | 1162|   342k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   342k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  152|       |
  153|   342k|	g_return_val_if_fail(bytes != NULL, NULL);
  ------------------
  |  |  643|   342k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   342k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   342k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   342k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   342k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   342k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   342k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   342k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 342k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   342k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   342k|   else                                         \
  |  |  |  |  |  | 1021|   342k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   342k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   342k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 342k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   342k|      { } \
  |  |  646|   342k|    else \
  |  |  647|   342k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuMemoryInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   342k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   342k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 342k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  154|       |
  155|   342k|	self = g_object_new(FU_TYPE_MEMORY_INPUT_STREAM, NULL);
  ------------------
  |  |   13|   342k|#define FU_TYPE_MEMORY_INPUT_STREAM (fu_memory_input_stream_get_type())
  ------------------
  156|   342k|	g_clear_pointer(&self->bytes, g_bytes_unref);
  ------------------
  |  |  120|   342k|  G_STMT_START                                           \
  |  |  ------------------
  |  |  |  |  874|   342k|#define G_STMT_START  do
  |  |  ------------------
  |  |  121|   342k|  {                                                      \
  |  |  122|   342k|    G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \
  |  |  ------------------
  |  |  |  |  758|   342k|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  ------------------
  |  |  123|   342k|    glib_typeof ((pp)) _pp = (pp);                       \
  |  |  ------------------
  |  |  |  |  238|   342k|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  124|   342k|    glib_typeof (*(pp)) _ptr = *_pp;                     \
  |  |  ------------------
  |  |  |  |  238|   342k|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  125|   342k|    *_pp = NULL;                                         \
  |  |  126|   342k|    if (_ptr)                                            \
  |  |  ------------------
  |  |  |  Branch (126:9): [True: 342k, False: 0]
  |  |  ------------------
  |  |  127|   342k|      (destroy) (_ptr);                                  \
  |  |  128|   342k|  }                                                      \
  |  |  129|   342k|  G_STMT_END                                             \
  |  |  ------------------
  |  |  |  |  882|   342k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 342k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  130|   342k|  GLIB_AVAILABLE_MACRO_IN_2_34
  ------------------
  157|   342k|	self->bytes = g_bytes_ref(bytes);
  158|       |
  159|   342k|	return FU_INPUT_STREAM(g_steal_pointer(&self));
  ------------------
  |  |  222|   342k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  160|   342k|}
fu-memory-input-stream.c:fu_memory_input_stream_class_init:
  122|      1|{
  123|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  124|      1|	FuInputStreamClass *istream_class = FU_INPUT_STREAM_CLASS(klass);
  125|      1|	object_class->finalize = fu_memory_input_stream_finalize;
  126|      1|	istream_class->read_fn = fu_memory_input_stream_read_fn;
  127|      1|	istream_class->tell = fu_memory_input_stream_tell;
  128|      1|	istream_class->can_seek = fu_memory_input_stream_can_seek;
  129|      1|	istream_class->seek = fu_memory_input_stream_seek;
  130|      1|}
fu-memory-input-stream.c:fu_memory_input_stream_finalize:
  114|   342k|{
  115|   342k|	FuMemoryInputStream *self = FU_MEMORY_INPUT_STREAM(object);
  116|   342k|	g_clear_pointer(&self->bytes, g_bytes_unref);
  ------------------
  |  |  120|   342k|  G_STMT_START                                           \
  |  |  ------------------
  |  |  |  |  874|   342k|#define G_STMT_START  do
  |  |  ------------------
  |  |  121|   342k|  {                                                      \
  |  |  122|   342k|    G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \
  |  |  ------------------
  |  |  |  |  758|   342k|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  ------------------
  |  |  123|   342k|    glib_typeof ((pp)) _pp = (pp);                       \
  |  |  ------------------
  |  |  |  |  238|   342k|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  124|   342k|    glib_typeof (*(pp)) _ptr = *_pp;                     \
  |  |  ------------------
  |  |  |  |  238|   342k|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  125|   342k|    *_pp = NULL;                                         \
  |  |  126|   342k|    if (_ptr)                                            \
  |  |  ------------------
  |  |  |  Branch (126:9): [True: 342k, False: 0]
  |  |  ------------------
  |  |  127|   342k|      (destroy) (_ptr);                                  \
  |  |  128|   342k|  }                                                      \
  |  |  129|   342k|  G_STMT_END                                             \
  |  |  ------------------
  |  |  |  |  882|   342k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 342k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  130|   342k|  GLIB_AVAILABLE_MACRO_IN_2_34
  ------------------
  117|   342k|	G_OBJECT_CLASS(fu_memory_input_stream_parent_class)->finalize(object);
  ------------------
  |  |   63|   342k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|   342k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|   342k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  118|   342k|}
fu-memory-input-stream.c:fu_memory_input_stream_read_fn:
   36|   549k|{
   37|   549k|	FuMemoryInputStream *self = FU_MEMORY_INPUT_STREAM(stream);
   38|   549k|	gsize data_sz = 0;
   39|   549k|	const guint8 *data = g_bytes_get_data(self->bytes, &data_sz);
   40|   549k|	gsize available;
   41|       |
   42|   549k|	if (self->pos >= data_sz)
  ------------------
  |  Branch (42:6): [True: 516, False: 549k]
  ------------------
   43|    516|		return 0;
   44|       |
   45|   549k|	available = data_sz - self->pos;
   46|   549k|	count = MIN(count, available);
  ------------------
  |  |  825|   549k|#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (825:21): [True: 444k, False: 104k]
  |  |  ------------------
  ------------------
   47|   549k|	if (count > 0) {
  ------------------
  |  Branch (47:6): [True: 549k, False: 0]
  ------------------
   48|   549k|		if (!fu_memcpy_safe(buffer, count, 0x0, data, data_sz, self->pos, count, error))
  ------------------
  |  Branch (48:7): [True: 0, False: 549k]
  ------------------
   49|      0|			return -1;
   50|   549k|	}
   51|   549k|	self->pos += count;
   52|   549k|	return (gssize)count;
   53|   549k|}
fu-memory-input-stream.c:fu_memory_input_stream_tell:
   57|  1.87M|{
   58|  1.87M|	FuMemoryInputStream *self = FU_MEMORY_INPUT_STREAM(stream);
   59|  1.87M|	return (goffset)self->pos;
   60|  1.87M|}
fu-memory-input-stream.c:fu_memory_input_stream_can_seek:
   64|  1.56M|{
   65|  1.56M|	return TRUE;
  ------------------
  |  |  818|  1.56M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.56M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
   66|  1.56M|}
fu-memory-input-stream.c:fu_memory_input_stream_seek:
   74|  1.22M|{
   75|  1.22M|	FuMemoryInputStream *self = FU_MEMORY_INPUT_STREAM(stream);
   76|  1.22M|	gsize data_sz = g_bytes_get_size(self->bytes);
   77|  1.22M|	goffset new_pos;
   78|       |
   79|  1.22M|	switch (type) {
   80|   544k|	case G_SEEK_SET:
  ------------------
  |  Branch (80:2): [True: 544k, False: 683k]
  ------------------
   81|   544k|		new_pos = offset;
   82|   544k|		break;
   83|      0|	case G_SEEK_CUR:
  ------------------
  |  Branch (83:2): [True: 0, False: 1.22M]
  ------------------
   84|      0|		new_pos = (goffset)self->pos + offset;
   85|      0|		break;
   86|   683k|	case G_SEEK_END:
  ------------------
  |  Branch (86:2): [True: 683k, False: 544k]
  ------------------
   87|   683k|		new_pos = (goffset)data_sz + offset;
   88|   683k|		break;
   89|      0|	default:
  ------------------
  |  Branch (89:2): [True: 0, False: 1.22M]
  ------------------
   90|      0|		g_set_error_literal(error,
   91|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
   92|      0|				    FWUPD_ERROR_NOT_SUPPORTED,
   93|      0|				    "unsupported seek type");
   94|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
   95|  1.22M|	}
   96|       |
   97|  1.22M|	if (new_pos < 0 || (gsize)new_pos > data_sz) {
  ------------------
  |  Branch (97:6): [True: 0, False: 1.22M]
  |  Branch (97:21): [True: 0, False: 1.22M]
  ------------------
   98|      0|		g_set_error(error, /* nocheck:error */
   99|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  100|      0|			    FWUPD_ERROR_INVALID_DATA,
  101|      0|			    "seek to %" G_GINT64_MODIFIER
  102|      0|			    "d is outside stream of size 0x%" G_GSIZE_MODIFIER "x",
  103|      0|			    (gint64)new_pos,
  104|      0|			    data_sz);
  105|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  106|      0|	}
  107|       |
  108|  1.22M|	self->pos = (gsize)new_pos;
  109|  1.22M|	return TRUE;
  ------------------
  |  |  818|  1.22M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.22M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  110|  1.22M|}
fu-memory-input-stream.c:fu_memory_input_stream_init:
  134|   342k|{
  135|       |	self->bytes = g_bytes_new(NULL, 0);
  136|   342k|}

fu_partial_input_stream_new:
  127|   340k|{
  128|   340k|	gsize base_sz = 0;
  129|   340k|	g_autoptr(FuPartialInputStream) self = g_object_new(FU_TYPE_PARTIAL_INPUT_STREAM, NULL);
  ------------------
  |  | 1162|   340k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   340k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
              	g_autoptr(FuPartialInputStream) self = g_object_new(FU_TYPE_PARTIAL_INPUT_STREAM, NULL);
  ------------------
  |  |   15|   340k|#define FU_TYPE_PARTIAL_INPUT_STREAM (fu_partial_input_stream_get_type())
  ------------------
  130|       |
  131|   340k|	g_return_val_if_fail(FU_IS_INPUT_STREAM(stream), NULL);
  ------------------
  |  |  643|   340k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   340k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   340k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   340k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   340k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   340k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   340k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   340k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 340k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   340k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   340k|   else                                         \
  |  |  |  |  |  | 1021|   340k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   340k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   340k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 340k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   340k|      { } \
  |  |  646|   340k|    else \
  |  |  647|   340k|      { \
  |  |  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|   340k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   340k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 340k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  132|   340k|	g_return_val_if_fail(error == NULL || *error == NULL, NULL);
  ------------------
  |  |  643|   340k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   340k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   340k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   340k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   340k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   340k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   340k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   681k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 340k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   340k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   340k|   else                                         \
  |  |  |  |  |  | 1021|   340k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   340k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   340k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 340k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   340k|      { } \
  |  |  646|   340k|    else \
  |  |  647|   340k|      { \
  |  |  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|   340k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   340k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 340k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  133|       |
  134|   340k|	self->base_stream = g_object_ref(stream);
  ------------------
  |  |  523|   340k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
  135|   340k|	self->offset = offset;
  136|       |
  137|       |	/* sanity check */
  138|   340k|	if (!fu_input_stream_size(stream, &base_sz, error)) {
  ------------------
  |  Branch (138:6): [True: 0, False: 340k]
  ------------------
  139|      0|		g_prefix_error_literal(error, "failed to get size: ");
  ------------------
  |  |   13|      0|#define g_prefix_error_literal	  g_prefix_error
  ------------------
  140|      0|		return NULL;
  141|      0|	}
  142|   340k|	if (size == G_MAXSIZE) {
  ------------------
  |  |   84|   340k|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|   340k|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  |  Branch (142:6): [True: 0, False: 340k]
  ------------------
  143|      0|		if (offset > base_sz) {
  ------------------
  |  Branch (143:7): [True: 0, False: 0]
  ------------------
  144|      0|			g_set_error(error,
  145|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  146|      0|				    FWUPD_ERROR_INVALID_DATA,
  147|      0|				    "base stream was 0x%x bytes in size "
  148|      0|				    "and tried to create partial stream @0x%x",
  149|      0|				    (guint)base_sz,
  150|      0|				    (guint)offset);
  151|      0|			return NULL;
  152|      0|		}
  153|      0|		self->size = base_sz - offset;
  154|   340k|	} else {
  155|   340k|		if (fu_size_checked_add(offset, size) > base_sz) {
  ------------------
  |  Branch (155:7): [True: 0, False: 340k]
  ------------------
  156|      0|			g_set_error(error,
  157|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  158|      0|				    FWUPD_ERROR_INVALID_DATA,
  159|      0|				    "base stream was 0x%x bytes in size, and tried to create "
  160|      0|				    "partial stream @0x%x of 0x%x bytes",
  161|      0|				    (guint)base_sz,
  162|      0|				    (guint)offset,
  163|      0|				    (guint)size);
  164|      0|			return NULL;
  165|      0|		}
  166|   340k|		self->size = size;
  167|   340k|	}
  168|       |
  169|       |	/* success */
  170|   340k|	return FU_INPUT_STREAM(g_steal_pointer(&self));
  ------------------
  |  |  222|   340k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  171|   340k|}
fu-partial-input-stream.c:fu_partial_input_stream_class_init:
  239|      1|{
  240|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  241|      1|	FuInputStreamClass *istream_class = FU_INPUT_STREAM_CLASS(klass);
  242|      1|	istream_class->read_fn = fu_partial_input_stream_read_fn;
  243|      1|	istream_class->tell = fu_partial_input_stream_tell;
  244|      1|	istream_class->can_seek = fu_partial_input_stream_can_seek;
  245|      1|	istream_class->seek = fu_partial_input_stream_seek;
  246|      1|	object_class->finalize = fu_partial_input_stream_finalize;
  247|      1|}
fu-partial-input-stream.c:fu_partial_input_stream_read_fn:
  213|   546k|{
  214|   546k|	FuPartialInputStream *self = FU_PARTIAL_INPUT_STREAM(stream);
  215|   546k|	g_return_val_if_fail(FU_IS_PARTIAL_INPUT_STREAM(self), -1);
  ------------------
  |  |  643|   546k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   546k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   546k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   546k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   546k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   546k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   546k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   546k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 546k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   546k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   546k|   else                                         \
  |  |  |  |  |  | 1021|   546k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   546k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   546k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 546k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   546k|      { } \
  |  |  646|   546k|    else \
  |  |  647|   546k|      { \
  |  |  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|   546k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   546k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 546k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  216|   546k|	g_return_val_if_fail(error == NULL || *error == NULL, -1);
  ------------------
  |  |  643|   546k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   546k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   546k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   546k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   546k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   546k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   546k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.63M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 546k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 546k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   546k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   546k|   else                                         \
  |  |  |  |  |  | 1021|   546k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   546k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   546k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 546k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   546k|      { } \
  |  |  646|   546k|    else \
  |  |  647|   546k|      { \
  |  |  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|   546k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   546k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 546k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  217|   546k|	if (self->size < (gsize)g_seekable_tell(G_SEEKABLE(stream))) {
  ------------------
  |  |   33|   546k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   546k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   546k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (217:6): [True: 0, False: 546k]
  ------------------
  218|      0|		g_set_error_literal(error,
  219|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  220|      0|				    FWUPD_ERROR_INVALID_DATA,
  221|      0|				    "base stream is outside seekable range");
  222|      0|		return -1;
  223|      0|	}
  224|   546k|	count = MIN(count, self->size - g_seekable_tell(G_SEEKABLE(stream)));
  ------------------
  |  |  825|   546k|#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (825:21): [True: 443k, False: 102k]
  |  |  ------------------
  ------------------
  225|   546k|	return fu_input_stream_read(self->base_stream, buffer, count, cancellable, error);
  226|   546k|}
fu-partial-input-stream.c:fu_partial_input_stream_tell:
   66|  1.19M|{
   67|  1.19M|	FuPartialInputStream *self = FU_PARTIAL_INPUT_STREAM(stream);
   68|  1.19M|	return g_seekable_tell(G_SEEKABLE(self->base_stream)) - self->offset;
  ------------------
  |  |   33|  1.19M|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|  1.19M|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|  1.19M|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|  1.19M|}
fu-partial-input-stream.c:fu_partial_input_stream_can_seek:
   73|   540k|{
   74|   540k|	FuPartialInputStream *self = FU_PARTIAL_INPUT_STREAM(stream);
   75|   540k|	return g_seekable_can_seek(G_SEEKABLE(self->base_stream));
  ------------------
  |  |   33|   540k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   540k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   540k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|   540k|}
fu-partial-input-stream.c:fu_partial_input_stream_seek:
   84|   540k|{
   85|   540k|	FuPartialInputStream *self = FU_PARTIAL_INPUT_STREAM(stream);
   86|       |
   87|   540k|	g_return_val_if_fail(FU_IS_PARTIAL_INPUT_STREAM(self), FALSE);
  ------------------
  |  |  643|   540k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   540k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   540k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   540k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   540k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   540k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   540k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   540k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 540k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   540k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   540k|   else                                         \
  |  |  |  |  |  | 1021|   540k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   540k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   540k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 540k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   540k|      { } \
  |  |  646|   540k|    else \
  |  |  647|   540k|      { \
  |  |  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|   540k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   540k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 540k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   88|   540k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   540k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   540k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   540k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   540k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   540k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   540k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   540k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.08M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 540k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   540k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   540k|   else                                         \
  |  |  |  |  |  | 1021|   540k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   540k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   540k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 540k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   540k|      { } \
  |  |  646|   540k|    else \
  |  |  647|   540k|      { \
  |  |  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|   540k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   540k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 540k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   89|       |
   90|   540k|	if (type == G_SEEK_CUR) {
  ------------------
  |  Branch (90:6): [True: 0, False: 540k]
  ------------------
   91|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   92|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   93|      0|				       self->offset + pos + offset,
   94|      0|				       G_SEEK_SET,
   95|      0|				       cancellable,
   96|      0|				       error);
   97|      0|	}
   98|   540k|	if (type == G_SEEK_END) {
  ------------------
  |  Branch (98:6): [True: 0, False: 540k]
  ------------------
   99|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  100|      0|				       self->offset + self->size + offset,
  101|      0|				       G_SEEK_SET,
  102|      0|				       cancellable,
  103|      0|				       error);
  104|      0|	}
  105|   540k|	return g_seekable_seek(G_SEEKABLE(self->base_stream),
  ------------------
  |  |   33|   540k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   540k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   540k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|   540k|			       self->offset + offset,
  107|   540k|			       G_SEEK_SET,
  108|   540k|			       cancellable,
  109|   540k|			       error);
  110|   540k|}
fu-partial-input-stream.c:fu_partial_input_stream_finalize:
  230|   340k|{
  231|   340k|	FuPartialInputStream *self = FU_PARTIAL_INPUT_STREAM(object);
  232|   340k|	if (self->base_stream != NULL)
  ------------------
  |  Branch (232:6): [True: 340k, False: 0]
  ------------------
  233|   340k|		g_object_unref(self->base_stream);
  234|   340k|	G_OBJECT_CLASS(fu_partial_input_stream_parent_class)->finalize(object);
  ------------------
  |  |   63|   340k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|   340k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|   340k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  235|   340k|}
fu-partial-input-stream.c:fu_partial_input_stream_init:
  251|   340k|{
  252|   340k|}
fu-partial-input-stream.c:fu_partial_input_stream_codec_iface_init:
   60|      1|{
   61|      1|	iface->add_string = fu_partial_input_stream_add_string;
   62|      1|}

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

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

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

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|      1|	fu_device_register_private_flag_safe(device_class, FU_DEVICE_PRIVATE_FLAG_HAS_DS20);
  ------------------
  |  |  746|      1|#define FU_DEVICE_PRIVATE_FLAG_HAS_DS20 "has-ds20"
  ------------------
 3210|      1|	quarks[QUARK_ADD_INSTANCE_ID_REV] =
 3211|      1|	    fu_device_find_private_flag(device_class, FU_DEVICE_PRIVATE_FLAG_ADD_INSTANCE_ID_REV);
  ------------------
  |  |  462|      1|#define FU_DEVICE_PRIVATE_FLAG_ADD_INSTANCE_ID_REV "add-instance-id-rev"
  ------------------
 3212|       |
 3213|       |	/**
 3214|       |	 * FuUsbDevice:libusb-device:
 3215|       |	 *
 3216|       |	 * The low-level #libusb_device.
 3217|       |	 *
 3218|       |	 * Since: 2.0.0
 3219|       |	 */
 3220|      1|	pspec =
 3221|      1|	    g_param_spec_pointer("libusb-device",
 3222|      1|				 NULL,
 3223|       |				 NULL,
 3224|      1|				 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 3225|      1|	g_object_class_install_property(object_class, PROP_LIBUSB_DEVICE, pspec);
 3226|      1|}
fu-usb-device.c:fu_usb_device_finalize:
  254|    740|{
  255|    740|	FuUsbDevice *self = FU_USB_DEVICE(object);
  256|    740|	FuUsbDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   85|    740|#define GET_PRIVATE(o) (fu_usb_device_get_instance_private(o))
  ------------------
  257|       |
  258|    740|	if (priv->handle != NULL)
  ------------------
  |  Branch (258:6): [True: 0, False: 740]
  ------------------
  259|      0|		libusb_close(priv->handle);
  260|    740|	if (priv->usb_device != NULL)
  ------------------
  |  Branch (260:6): [True: 0, False: 740]
  ------------------
  261|      0|		libusb_unref_device(priv->usb_device);
  262|    740|	if (priv->device_interfaces != NULL)
  ------------------
  |  Branch (262:6): [True: 0, False: 740]
  ------------------
  263|      0|		g_ptr_array_unref(priv->device_interfaces);
  264|    740|	g_ptr_array_unref(priv->interfaces);
  265|    740|	g_ptr_array_unref(priv->bos_descriptors);
  266|    740|	g_ptr_array_unref(priv->hid_descriptors);
  267|    740|	g_ptr_array_unref(priv->cfg_descriptors);
  268|       |
  269|    740|	G_OBJECT_CLASS(fu_usb_device_parent_class)->finalize(object);
  ------------------
  |  |   63|    740|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|    740|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|    740|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  270|    740|}
fu-usb-device.c:fu_usb_device_set_property:
  240|    740|{
  241|    740|	FuUsbDevice *self = FU_USB_DEVICE(object);
  242|    740|	switch (prop_id) {
  243|    740|	case PROP_LIBUSB_DEVICE:
  ------------------
  |  Branch (243:2): [True: 740, False: 0]
  ------------------
  244|    740|		fu_usb_device_set_dev(self, g_value_get_pointer(value));
  245|    740|		break;
  246|      0|	default:
  ------------------
  |  Branch (246:2): [True: 0, False: 740]
  ------------------
  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|    740|	}
  250|    740|}
fu-usb-device.c:fu_usb_device_set_dev:
  202|    740|{
  203|    740|	FuUsbDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   85|    740|#define GET_PRIVATE(o) (fu_usb_device_get_instance_private(o))
  ------------------
  204|       |
  205|       |	/* allow replacement */
  206|    740|	g_clear_pointer(&priv->usb_device, libusb_unref_device);
  ------------------
  |  |  120|    740|  G_STMT_START                                           \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  121|    740|  {                                                      \
  |  |  122|    740|    G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \
  |  |  ------------------
  |  |  |  |  758|    740|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  ------------------
  |  |  123|    740|    glib_typeof ((pp)) _pp = (pp);                       \
  |  |  ------------------
  |  |  |  |  238|    740|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  124|    740|    glib_typeof (*(pp)) _ptr = *_pp;                     \
  |  |  ------------------
  |  |  |  |  238|    740|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  125|    740|    *_pp = NULL;                                         \
  |  |  126|    740|    if (_ptr)                                            \
  |  |  ------------------
  |  |  |  Branch (126:9): [True: 0, False: 740]
  |  |  ------------------
  |  |  127|    740|      (destroy) (_ptr);                                  \
  |  |  128|    740|  }                                                      \
  |  |  129|    740|  G_STMT_END                                             \
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  130|    740|  GLIB_AVAILABLE_MACRO_IN_2_34
  ------------------
  207|    740|	if (usb_device != NULL)
  ------------------
  |  Branch (207:6): [True: 0, False: 740]
  ------------------
  208|      0|		priv->usb_device = libusb_ref_device(usb_device);
  209|    740|}
fu-usb-device.c:fu_usb_device_add_interface_internal:
 1375|  59.7k|{
 1376|  59.7k|	FuUsbDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   85|  59.7k|#define GET_PRIVATE(o) (fu_usb_device_get_instance_private(o))
  ------------------
 1377|  59.7k|	g_ptr_array_add(priv->interfaces, g_object_ref(iface));
  ------------------
  |  |  523|  59.7k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
 1378|  59.7k|}
fu-usb-device.c:fu_usb_device_init:
  274|    740|{
  275|    740|	FuUsbDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   85|    740|#define GET_PRIVATE(o) (fu_usb_device_get_instance_private(o))
  ------------------
  276|    740|	priv->configuration = -1;
  277|    740|	priv->claim_retry_count = 3;
  278|    740|	priv->interfaces = g_ptr_array_new_with_free_func((GDestroyNotify)g_object_unref);
  279|    740|	priv->bos_descriptors = g_ptr_array_new_with_free_func((GDestroyNotify)g_object_unref);
  280|    740|	priv->cfg_descriptors = g_ptr_array_new_with_free_func((GDestroyNotify)g_object_unref);
  281|    740|	priv->hid_descriptors = g_ptr_array_new_with_free_func((GDestroyNotify)g_object_unref);
  282|    740|	fu_device_set_acquiesce_delay(FU_DEVICE(self), 2500);
  283|    740|	fu_device_retry_add_recovery(FU_DEVICE(self),
  284|    740|				     FWUPD_ERROR,
  ------------------
  |  |   15|    740|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  285|    740|				     FWUPD_ERROR_PERMISSION_DENIED,
  286|    740|				     NULL);
  287|    740|	g_signal_connect(FU_DEVICE(self),
  ------------------
  |  |  501|    740|    g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
  ------------------
  288|    740|			 "notify::vid",
  289|    740|			 G_CALLBACK(fu_usb_device_vid_notify_cb),
  290|    740|			 NULL);
  291|       |	g_signal_connect(FU_DEVICE(self),
  ------------------
  |  |  501|    740|    g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
  ------------------
  292|    740|			 "notify::pid",
  293|    740|			 G_CALLBACK(fu_usb_device_pid_notify_cb),
  294|    740|			 NULL);
  295|    740|}
fu-usb-device.c:fu_usb_device_vid_notify_cb:
  213|    618|{
  214|    618|	fu_device_add_instance_u16(device, "VID", fu_device_get_vid(device));
  215|    618|}
fu-usb-device.c:fu_usb_device_pid_notify_cb:
  219|    642|{
  220|    642|	fu_device_add_instance_u16(device, "PID", fu_device_get_pid(device));
  221|    642|}
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|    740|{
 3166|    740|	FuUsbDevice *self = FU_USB_DEVICE(fuzzer);
 3167|    740|	return fu_usb_device_parse_descriptor(self, blob, error);
 3168|    740|}
fu-usb-device.c:fu_usb_device_parse_descriptor:
 1822|    740|{
 1823|    740|	FuUsbDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   85|    740|#define GET_PRIVATE(o) (fu_usb_device_get_instance_private(o))
  ------------------
 1824|    740|	gsize offset = 0;
 1825|    740|	g_autoptr(FuUsbDeviceHdr) st = NULL;
  ------------------
  |  | 1162|    740|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|    740|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1826|    740|	g_autoptr(FuUsbInterface) iface_last = NULL;
  ------------------
  |  | 1162|    740|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|    740|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1827|       |
 1828|       |	/* sanity check */
 1829|    740|	if (g_bytes_get_size(blob) > FU_USB_DEVICE_DESCRIPTOR_SIZE_MAX) {
  ------------------
  |  |   90|    740|#define FU_USB_DEVICE_DESCRIPTOR_SIZE_MAX (18 + (64 * FU_KB)) /* dev descr + max-size raw descr */
  |  |  ------------------
  |  |  |  |   72|    740|#define FU_KB (1ull << 10)
  |  |  ------------------
  ------------------
  |  Branch (1829:6): [True: 5, False: 735]
  ------------------
 1830|      5|		g_set_error(error,
 1831|      5|			    FWUPD_ERROR,
  ------------------
  |  |   15|      5|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1832|      5|			    FWUPD_ERROR_INVALID_DATA,
 1833|      5|			    "USB descriptor was too large: limit is 0x%x bytes",
 1834|      5|			    (guint)FU_USB_DEVICE_DESCRIPTOR_SIZE_MAX);
  ------------------
  |  |   90|      5|#define FU_USB_DEVICE_DESCRIPTOR_SIZE_MAX (18 + (64 * FU_KB)) /* dev descr + max-size raw descr */
  |  |  ------------------
  |  |  |  |   72|      5|#define FU_KB (1ull << 10)
  |  |  ------------------
  ------------------
 1835|      5|		return FALSE;
  ------------------
  |  |  814|      5|#define	FALSE	(0)
  ------------------
 1836|      5|	}
 1837|       |
 1838|    735|	st = fu_usb_device_hdr_parse_bytes(blob, offset, error);
 1839|    735|	if (st == NULL)
  ------------------
  |  Branch (1839:6): [True: 53, False: 682]
  ------------------
 1840|     53|		return FALSE;
  ------------------
  |  |  814|     53|#define	FALSE	(0)
  ------------------
 1841|    682|	priv->desc.bLength = fu_usb_device_hdr_get_length(st);
 1842|    682|	priv->desc.bDescriptorType = FU_USB_DEVICE_HDR_DEFAULT_DESCRIPTOR_TYPE;
  ------------------
  |  |  341|    682|#define FU_USB_DEVICE_HDR_DEFAULT_DESCRIPTOR_TYPE FU_USB_DESCRIPTOR_KIND_DEVICE
  ------------------
 1843|    682|	priv->desc.bcdUSB = fu_usb_device_hdr_get_usb(st);
 1844|    682|	priv->desc.bDeviceClass = fu_usb_device_hdr_get_device_class(st);
 1845|    682|	priv->desc.bDeviceSubClass = fu_usb_device_hdr_get_device_sub_class(st);
 1846|    682|	priv->desc.bDeviceProtocol = fu_usb_device_hdr_get_device_protocol(st);
 1847|    682|	priv->desc.bMaxPacketSize0 = fu_usb_device_hdr_get_max_packet_size0(st);
 1848|    682|	fu_device_set_vid(FU_DEVICE(self), fu_usb_device_hdr_get_vendor(st));
 1849|    682|	fu_device_set_pid(FU_DEVICE(self), fu_usb_device_hdr_get_product(st));
 1850|    682|	priv->desc.bcdDevice = fu_usb_device_hdr_get_device(st);
 1851|    682|	priv->desc.iManufacturer = fu_usb_device_hdr_get_manufacturer_idx(st);
 1852|    682|	priv->desc.iProduct = fu_usb_device_hdr_get_product_idx(st);
 1853|    682|	priv->desc.iSerialNumber = fu_usb_device_hdr_get_serial_number_idx(st);
 1854|    682|	priv->desc.bNumConfigurations = fu_usb_device_hdr_get_num_configurations(st);
 1855|       |
 1856|    682|	offset += fu_usb_device_hdr_get_length(st);
 1857|   458k|	while (offset < g_bytes_get_size(blob)) {
  ------------------
  |  Branch (1857:9): [True: 458k, False: 197]
  ------------------
 1858|   458k|		FuUsbDescriptorKind descriptor_kind;
 1859|   458k|		g_autoptr(FuUsbBaseHdr) st_base = NULL;
  ------------------
  |  | 1162|   458k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   458k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1860|   458k|		g_autoptr(GError) error_local = NULL;
  ------------------
  |  | 1162|   458k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   458k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1861|       |
 1862|       |		/* this is common to all descriptor types */
 1863|   458k|		st_base = fu_usb_base_hdr_parse_bytes(blob, offset, &error_local);
 1864|   458k|		if (st_base == NULL) {
  ------------------
  |  Branch (1864:7): [True: 78, False: 458k]
  ------------------
 1865|     78|			if (g_error_matches(error_local, FWUPD_ERROR, FWUPD_ERROR_INVALID_FILE))
  ------------------
  |  |   15|     78|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  |  Branch (1865:8): [True: 0, False: 78]
  ------------------
 1866|      0|				break;
 1867|     78|			if (g_error_matches(error_local, FWUPD_ERROR, FWUPD_ERROR_INVALID_DATA))
  ------------------
  |  |   15|     78|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  |  Branch (1867:8): [True: 0, False: 78]
  ------------------
 1868|      0|				break;
 1869|     78|			g_propagate_error(error, g_steal_pointer(&error_local));
  ------------------
  |  |  222|     78|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
 1870|     78|			return FALSE;
  ------------------
  |  |  814|     78|#define	FALSE	(0)
  ------------------
 1871|     78|		}
 1872|       |
 1873|       |		/* sanity check */
 1874|   458k|		if (fu_usb_base_hdr_get_length(st_base) == 0) {
  ------------------
  |  Branch (1874:7): [True: 72, False: 458k]
  ------------------
 1875|     72|			g_set_error_literal(error,
 1876|     72|					    FWUPD_ERROR,
  ------------------
  |  |   15|     72|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1877|     72|					    FWUPD_ERROR_INVALID_DATA,
 1878|     72|					    "USB descriptor had impossible zero size");
 1879|     72|			return FALSE;
  ------------------
  |  |  814|     72|#define	FALSE	(0)
  ------------------
 1880|     72|		}
 1881|       |
 1882|       |		/* config, interface or endpoint */
 1883|   458k|		descriptor_kind = fu_usb_base_hdr_get_descriptor_type(st_base);
 1884|   458k|		if (descriptor_kind == FU_USB_DESCRIPTOR_KIND_CONFIG) {
  ------------------
  |  Branch (1884:7): [True: 124k, False: 333k]
  ------------------
 1885|   124k|			g_autoptr(FuUsbConfigDescriptor) cfg_descriptor =
  ------------------
  |  | 1162|   124k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   124k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1886|   124k|			    fu_usb_config_descriptor_new();
 1887|   124k|			if (!fu_firmware_parse_bytes(FU_FIRMWARE(cfg_descriptor),
  ------------------
  |  Branch (1887:8): [True: 34, False: 124k]
  ------------------
 1888|   124k|						     blob,
 1889|   124k|						     offset,
 1890|   124k|						     FU_FIRMWARE_PARSE_FLAG_NONE,
 1891|   124k|						     error))
 1892|     34|				return FALSE;
  ------------------
  |  |  814|     34|#define	FALSE	(0)
  ------------------
 1893|   124k|			g_ptr_array_add(priv->cfg_descriptors, g_steal_pointer(&cfg_descriptor));
  ------------------
  |  |  222|   124k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
 1894|   333k|		} else if (descriptor_kind == FU_USB_DESCRIPTOR_KIND_INTERFACE) {
  ------------------
  |  Branch (1894:14): [True: 59.9k, False: 273k]
  ------------------
 1895|  59.9k|			g_autoptr(FuUsbInterface) iface = g_object_new(FU_TYPE_USB_INTERFACE, NULL);
  ------------------
  |  | 1162|  59.9k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  59.9k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
              			g_autoptr(FuUsbInterface) iface = g_object_new(FU_TYPE_USB_INTERFACE, NULL);
  ------------------
  |  |   14|  59.9k|#define FU_TYPE_USB_INTERFACE (fu_usb_interface_get_type())
  ------------------
 1896|  59.9k|			if (!fu_firmware_parse_bytes(FU_FIRMWARE(iface),
  ------------------
  |  Branch (1896:8): [True: 198, False: 59.7k]
  ------------------
 1897|  59.9k|						     blob,
 1898|  59.9k|						     offset,
 1899|  59.9k|						     FU_FIRMWARE_PARSE_FLAG_NONE,
 1900|  59.9k|						     error))
 1901|    198|				return FALSE;
  ------------------
  |  |  814|    198|#define	FALSE	(0)
  ------------------
 1902|  59.7k|			fu_usb_device_add_interface_internal(self, iface);
 1903|       |
 1904|       |			/* the next descriptor is the custom one, so just add as a child */
 1905|  59.7k|			if (fu_usb_interface_get_class(iface) ==
  ------------------
  |  Branch (1905:8): [True: 14.9k, False: 44.8k]
  ------------------
 1906|  59.7k|			    FU_USB_CLASS_APPLICATION_SPECIFIC) {
 1907|  14.9k|				g_autoptr(FuUsbDescriptor) img =
  ------------------
  |  | 1162|  14.9k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  14.9k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1908|  14.9k|				    g_object_new(FU_TYPE_USB_DESCRIPTOR, NULL);
  ------------------
  |  |   14|  14.9k|#define FU_TYPE_USB_DESCRIPTOR (fu_usb_descriptor_get_type())
  ------------------
 1909|  14.9k|				if (!fu_firmware_parse_bytes(
  ------------------
  |  Branch (1909:9): [True: 56, False: 14.8k]
  ------------------
 1910|  14.9k|					FU_FIRMWARE(img),
 1911|  14.9k|					blob,
 1912|  14.9k|					offset + fu_usb_base_hdr_get_length(st_base),
 1913|  14.9k|					FU_FIRMWARE_PARSE_FLAG_CACHE_BLOB,
 1914|  14.9k|					error))
 1915|     56|					return FALSE;
  ------------------
  |  |  814|     56|#define	FALSE	(0)
  ------------------
 1916|  14.8k|				if (!fu_firmware_add_image(FU_FIRMWARE(iface),
  ------------------
  |  Branch (1916:9): [True: 0, False: 14.8k]
  ------------------
 1917|  14.8k|							   FU_FIRMWARE(img),
 1918|  14.8k|							   error))
 1919|      0|					return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1920|  14.8k|				if (!fu_size_checked_inc(&offset,
  ------------------
  |  Branch (1920:9): [True: 0, False: 14.8k]
  ------------------
 1921|  14.8k|							 fu_firmware_get_size(FU_FIRMWARE(img)),
 1922|  14.8k|							 error))
 1923|      0|					return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1924|  14.8k|			}
 1925|       |
 1926|  59.7k|			g_set_object(&iface_last, iface);
  ------------------
  |  |  750|  59.7k|  (G_GNUC_EXTENSION ({ \
  |  |  ------------------
  |  |  |  |   54|  59.7k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  751|  59.7k|    G_STATIC_ASSERT (sizeof *(object_ptr) == sizeof (new_object)); \
  |  |  ------------------
  |  |  |  |  758|  59.7k|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  ------------------
  |  |  752|  59.7k|    /* Only one access, please; work around type aliasing */ \
  |  |  753|  59.7k|    union { char *in; GObject **out; } _object_ptr; \
  |  |  754|  59.7k|    _object_ptr.in = (char *) (object_ptr); \
  |  |  755|  59.7k|    /* Check types match */ \
  |  |  756|  59.7k|    (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |                   (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \
  |  |  ------------------
  |  |  |  |  814|  59.7k|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (756:13): [Folded, False: 59.7k]
  |  |  ------------------
  |  |  757|  59.7k|    (g_set_object) (_object_ptr.out, (GObject *) new_object); \
  |  |  758|  59.7k|  })) \
  |  |  759|  59.7k|  GLIB_AVAILABLE_MACRO_IN_2_44
  ------------------
 1927|   273k|		} else if (descriptor_kind == FU_USB_DESCRIPTOR_KIND_ENDPOINT) {
  ------------------
  |  Branch (1927:14): [True: 36.4k, False: 236k]
  ------------------
 1928|  36.4k|			g_autoptr(FuUsbEndpoint) ep = g_object_new(FU_TYPE_USB_ENDPOINT, NULL);
  ------------------
  |  | 1162|  36.4k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  36.4k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
              			g_autoptr(FuUsbEndpoint) ep = g_object_new(FU_TYPE_USB_ENDPOINT, NULL);
  ------------------
  |  |   14|  36.4k|#define FU_TYPE_USB_ENDPOINT (fu_usb_endpoint_get_type())
  ------------------
 1929|  36.4k|			if (!fu_firmware_parse_bytes(FU_FIRMWARE(ep),
  ------------------
  |  Branch (1929:8): [True: 36, False: 36.4k]
  ------------------
 1930|  36.4k|						     blob,
 1931|  36.4k|						     offset,
 1932|  36.4k|						     FU_FIRMWARE_PARSE_FLAG_NONE,
 1933|  36.4k|						     error))
 1934|     36|				return FALSE;
  ------------------
  |  |  814|     36|#define	FALSE	(0)
  ------------------
 1935|  36.4k|			if (iface_last == NULL) {
  ------------------
  |  Branch (1935:8): [True: 14.8k, False: 21.5k]
  ------------------
 1936|  14.8k|				g_debug("endpoint 0x%x without prior interface, ignoring",
  ------------------
  |  |  351|  14.8k|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    9|  14.8k|#define G_LOG_DOMAIN "FuUsbDevice"
  |  |  ------------------
  |  |  352|  14.8k|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|  14.8k|                               __VA_ARGS__)
  ------------------
 1937|  14.8k|					fu_usb_endpoint_get_number(ep));
 1938|  21.5k|			} else {
 1939|  21.5k|				fu_usb_interface_add_endpoint(iface_last, ep);
 1940|  21.5k|			}
 1941|   236k|		} else if (descriptor_kind == FU_USB_DESCRIPTOR_KIND_HID) {
  ------------------
  |  Branch (1941:14): [True: 17.7k, False: 219k]
  ------------------
 1942|  17.7k|			g_autoptr(FuUsbHidDescriptor) hid_descriptor =
  ------------------
  |  | 1162|  17.7k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  17.7k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1943|  17.7k|			    g_object_new(FU_TYPE_USB_HID_DESCRIPTOR, NULL);
  ------------------
  |  |   13|  17.7k|#define FU_TYPE_USB_HID_DESCRIPTOR (fu_usb_hid_descriptor_get_type())
  ------------------
 1944|  17.7k|			if (!fu_firmware_parse_bytes(FU_FIRMWARE(hid_descriptor),
  ------------------
  |  Branch (1944:8): [True: 11, False: 17.7k]
  ------------------
 1945|  17.7k|						     blob,
 1946|  17.7k|						     offset,
 1947|  17.7k|						     FU_FIRMWARE_PARSE_FLAG_NONE,
 1948|  17.7k|						     error))
 1949|     11|				return FALSE;
  ------------------
  |  |  814|     11|#define	FALSE	(0)
  ------------------
 1950|  17.7k|			if (iface_last == NULL) {
  ------------------
  |  Branch (1950:8): [True: 611, False: 17.0k]
  ------------------
 1951|    611|				g_debug("hid descriptor without prior interface, ignoring");
  ------------------
  |  |  351|    611|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    9|    611|#define G_LOG_DOMAIN "FuUsbDevice"
  |  |  ------------------
  |  |  352|    611|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|    611|                               __VA_ARGS__)
  ------------------
 1952|  17.0k|			} else {
 1953|  17.0k|				fu_usb_hid_descriptor_set_iface_number(
 1954|  17.0k|				    hid_descriptor,
 1955|  17.0k|				    fu_usb_interface_get_number(iface_last));
 1956|  17.0k|				g_ptr_array_add(priv->hid_descriptors,
 1957|  17.0k|						g_steal_pointer(&hid_descriptor));
  ------------------
  |  |  222|  17.0k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
 1958|  17.0k|			}
 1959|   219k|		} else {
 1960|   219k|			const gchar *str = fu_usb_descriptor_kind_to_string(descriptor_kind);
 1961|   219k|			g_debug("usb descriptor type 0x%x [%s] not processed",
  ------------------
  |  |  351|   219k|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    9|   219k|#define G_LOG_DOMAIN "FuUsbDevice"
  |  |  ------------------
  |  |  352|   219k|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|   438k|                               __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (353:32): [True: 194k, False: 25.1k]
  |  |  ------------------
  ------------------
 1962|   219k|				descriptor_kind,
 1963|   219k|				str != NULL ? str : "unknown");
 1964|   219k|		}
 1965|   458k|		if (!fu_size_checked_inc(&offset, fu_usb_base_hdr_get_length(st_base), error))
  ------------------
  |  Branch (1965:7): [True: 0, False: 458k]
  ------------------
 1966|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1967|   458k|	}
 1968|       |
 1969|       |	/* success */
 1970|    197|	return TRUE;
  ------------------
  |  |  818|    197|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    197|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1971|    682|}

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

fu_usb_hid_descriptor_set_iface_number:
   94|  17.0k|{
   95|  17.0k|	g_return_if_fail(FU_IS_USB_HID_DESCRIPTOR(self));
  ------------------
  |  |  630|  17.0k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  17.0k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  17.0k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  17.0k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  17.0k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  17.0k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  17.0k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  17.0k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 17.0k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  17.0k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  17.0k|   else                                         \
  |  |  |  |  |  | 1021|  17.0k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  17.0k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  17.0k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 17.0k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  17.0k|      { } \
  |  |  633|  17.0k|    else \
  |  |  634|  17.0k|      { \
  |  |  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|  17.0k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  17.0k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 17.0k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   96|  17.0k|	self->iface_number = iface_number;
   97|  17.0k|}
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_firmware_set_size_max(firmware_class, 1 * FU_MB);
  ------------------
  |  |   81|      1|#define FU_MB (1ull << 20)
  ------------------
  198|      1|}
fu-usb-hid-descriptor.c:fu_usb_hid_descriptor_finalize:
  183|  17.7k|{
  184|  17.7k|	FuUsbHidDescriptor *self = FU_USB_HID_DESCRIPTOR(object);
  185|  17.7k|	if (self->blob != NULL)
  ------------------
  |  Branch (185:6): [True: 0, False: 17.7k]
  ------------------
  186|      0|		g_bytes_unref(self->blob);
  187|  17.7k|	G_OBJECT_CLASS(fu_usb_hid_descriptor_parent_class)->finalize(object);
  ------------------
  |  |   63|  17.7k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|  17.7k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|  17.7k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|  17.7k|}
fu-usb-hid-descriptor.c:fu_usb_hid_descriptor_parse:
  155|  17.7k|{
  156|  17.7k|	FuUsbHidDescriptor *self = FU_USB_HID_DESCRIPTOR(firmware);
  157|  17.7k|	g_autoptr(FuUsbHidDescriptorHdr) st = NULL;
  ------------------
  |  | 1162|  17.7k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  17.7k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  158|       |
  159|       |	/* parse */
  160|  17.7k|	st = fu_usb_hid_descriptor_hdr_parse_stream(stream, 0x0, error);
  161|  17.7k|	if (st == NULL)
  ------------------
  |  Branch (161:6): [True: 11, False: 17.7k]
  ------------------
  162|     11|		return FALSE;
  ------------------
  |  |  814|     11|#define	FALSE	(0)
  ------------------
  163|  17.7k|	self->descriptor_length = fu_usb_hid_descriptor_hdr_get_class_descriptor_length(st);
  164|       |
  165|       |	/* success */
  166|  17.7k|	return TRUE;
  ------------------
  |  |  818|  17.7k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  17.7k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  167|  17.7k|}
fu-usb-hid-descriptor.c:fu_usb_hid_descriptor_init:
  178|  17.7k|{
  179|  17.7k|}
fu-usb-hid-descriptor.c:fu_usb_hid_descriptor_codec_iface_init:
  171|      1|{
  172|      1|	iface->add_json = fu_usb_hid_descriptor_add_json;
  173|      1|	iface->from_json = fu_usb_hid_descriptor_from_json;
  174|      1|}

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

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_seekable_tell:
   66|  3.07M|{
   67|  3.07M|  GSeekableIface *iface;
   68|       |
   69|  3.07M|  g_return_val_if_fail (G_IS_SEEKABLE (seekable), 0);
  ------------------
  |  |  643|  3.07M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.07M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.07M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.07M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.07M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.07M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.07M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  21.5M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.07M, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.07M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.07M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.07M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.07M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.07M|   else                                         \
  |  |  |  |  |  | 1021|  3.07M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.07M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.07M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.07M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.07M|      { } \
  |  |  646|  3.07M|    else \
  |  |  647|  3.07M|      { \
  |  |  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.07M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.07M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.07M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|       |
   71|  3.07M|  iface = G_SEEKABLE_GET_IFACE (seekable);
  ------------------
  |  |   35|  3.07M|#define G_SEEKABLE_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_SEEKABLE, GSeekableIface))
  |  |  ------------------
  |  |  |  |  540|  3.07M|#define G_TYPE_INSTANCE_GET_INTERFACE(instance, g_type, c_type) (_G_TYPE_IGI ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2310|  3.07M|#define _G_TYPE_IGI(ip, gt, ct)         ((ct*) g_type_interface_peek (((GTypeInstance*) ip)->g_class, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   72|       |
   73|  3.07M|  return (* iface->tell) (seekable);
   74|  3.07M|}
g_seekable_can_seek:
   86|  2.11M|{
   87|  2.11M|  GSeekableIface *iface;
   88|       |  
   89|  2.11M|  g_return_val_if_fail (G_IS_SEEKABLE (seekable), FALSE);
  ------------------
  |  |  643|  2.11M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.11M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.11M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.11M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.11M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.11M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.11M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  14.7M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.11M, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 2.11M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 2.11M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.11M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.11M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.11M|   else                                         \
  |  |  |  |  |  | 1021|  2.11M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.11M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.11M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.11M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.11M|      { } \
  |  |  646|  2.11M|    else \
  |  |  647|  2.11M|      { \
  |  |  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.11M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.11M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.11M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   90|       |
   91|  2.11M|  iface = G_SEEKABLE_GET_IFACE (seekable);
  ------------------
  |  |   35|  2.11M|#define G_SEEKABLE_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_SEEKABLE, GSeekableIface))
  |  |  ------------------
  |  |  |  |  540|  2.11M|#define G_TYPE_INSTANCE_GET_INTERFACE(instance, g_type, c_type) (_G_TYPE_IGI ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2310|  2.11M|#define _G_TYPE_IGI(ip, gt, ct)         ((ct*) g_type_interface_peek (((GTypeInstance*) ip)->g_class, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   92|       |
   93|  2.11M|  return (* iface->can_seek) (seekable);
   94|  2.11M|}
g_seekable_seek:
  130|  1.76M|{
  131|  1.76M|  GSeekableIface *iface;
  132|       |  
  133|  1.76M|  g_return_val_if_fail (G_IS_SEEKABLE (seekable), FALSE);
  ------------------
  |  |  643|  1.76M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.76M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.76M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.76M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.76M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.76M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.76M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  12.3M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.76M, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.76M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.76M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.76M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.76M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.76M|   else                                         \
  |  |  |  |  |  | 1021|  1.76M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.76M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.76M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.76M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.76M|      { } \
  |  |  646|  1.76M|    else \
  |  |  647|  1.76M|      { \
  |  |  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.76M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.76M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.76M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  134|       |
  135|  1.76M|  iface = G_SEEKABLE_GET_IFACE (seekable);
  ------------------
  |  |   35|  1.76M|#define G_SEEKABLE_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_SEEKABLE, GSeekableIface))
  |  |  ------------------
  |  |  |  |  540|  1.76M|#define G_TYPE_INSTANCE_GET_INTERFACE(instance, g_type, c_type) (_G_TYPE_IGI ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2310|  1.76M|#define _G_TYPE_IGI(ip, gt, ct)         ((ct*) g_type_interface_peek (((GTypeInstance*) ip)->g_class, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  136|       |
  137|  1.76M|  return (* iface->seek) (seekable, offset, type, cancellable, error);
  138|  1.76M|}
gseekable.c:g_seekable_default_init:
   53|      1|{
   54|      1|}

g_array_new:
  182|    740|{
  183|    740|  g_return_val_if_fail (elt_size > 0, NULL);
  ------------------
  |  |  643|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    740|      { } \
  |  |  646|    740|    else \
  |  |  647|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  184|       |
  185|    740|  return g_array_sized_new (zero_terminated, clear, elt_size, 0);
  186|    740|}
g_array_sized_new:
  260|  1.00M|{
  261|  1.00M|  GRealArray *array;
  262|       |  
  263|  1.00M|  g_return_val_if_fail (elt_size > 0, NULL);
  ------------------
  |  |  643|  1.00M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.00M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.00M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.00M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.00M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.00M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.00M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.00M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.00M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.00M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.00M|   else                                         \
  |  |  |  |  |  | 1021|  1.00M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.00M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.00M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.00M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.00M|      { } \
  |  |  646|  1.00M|    else \
  |  |  647|  1.00M|      { \
  |  |  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.00M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.00M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.00M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  264|       |
  265|  1.00M|  array = g_slice_new (GRealArray);
  ------------------
  |  |   46|  1.00M|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  ------------------
  266|       |
  267|  1.00M|  array->data            = NULL;
  268|  1.00M|  array->len             = 0;
  269|  1.00M|  array->alloc           = 0;
  270|  1.00M|  array->zero_terminated = (zero_terminated ? 1 : 0);
  ------------------
  |  Branch (270:29): [True: 0, False: 1.00M]
  ------------------
  271|  1.00M|  array->clear           = (clear ? 1 : 0);
  ------------------
  |  Branch (271:29): [True: 0, False: 1.00M]
  ------------------
  272|  1.00M|  array->elt_size        = elt_size;
  273|  1.00M|  array->clear_func      = NULL;
  274|       |
  275|  1.00M|  g_atomic_ref_count_init (&array->ref_count);
  276|       |
  277|  1.00M|  if (array->zero_terminated || reserved_size != 0)
  ------------------
  |  Branch (277:7): [True: 0, False: 1.00M]
  |  Branch (277:33): [True: 0, False: 1.00M]
  ------------------
  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.00M|  return (GArray*) array;
  284|  1.00M|}
g_array_unref:
  358|   900k|{
  359|   900k|  GRealArray *rarray = (GRealArray*) array;
  360|   900k|  g_return_if_fail (array);
  ------------------
  |  |  630|   900k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   900k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   900k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   900k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   900k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   900k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   900k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   900k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 900k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   900k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   900k|   else                                         \
  |  |  |  |  |  | 1021|   900k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   900k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   900k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 900k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   900k|      { } \
  |  |  633|   900k|    else \
  |  |  634|   900k|      { \
  |  |  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|   900k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   900k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 900k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  361|       |
  362|   900k|  if (g_atomic_ref_count_dec (&rarray->ref_count))
  ------------------
  |  Branch (362:7): [True: 900k, False: 0]
  ------------------
  363|   900k|    array_free (rarray, FREE_SEGMENT);
  364|   900k|}
g_array_free:
  412|   103k|{
  413|   103k|  GRealArray *array = (GRealArray*) farray;
  414|   103k|  ArrayFreeFlags flags;
  415|       |
  416|   103k|  g_return_val_if_fail (array, NULL);
  ------------------
  |  |  643|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   103k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   103k|      { } \
  |  |  646|   103k|    else \
  |  |  647|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  417|       |
  418|   103k|  flags = (free_segment ? FREE_SEGMENT : 0);
  ------------------
  |  Branch (418:12): [True: 0, False: 103k]
  ------------------
  419|       |
  420|       |  /* if others are holding a reference, preserve the wrapper but do free/return the data */
  421|   103k|  if (!g_atomic_ref_count_dec (&array->ref_count))
  ------------------
  |  Branch (421:7): [True: 0, False: 103k]
  ------------------
  422|      0|    flags |= PRESERVE_WRAPPER;
  423|       |
  424|   103k|  return array_free (array, flags);
  425|   103k|}
g_array_append_vals:
  491|  1.00M|{
  492|  1.00M|  GRealArray *array = (GRealArray*) farray;
  493|       |
  494|  1.00M|  g_return_val_if_fail (array, NULL);
  ------------------
  |  |  643|  1.00M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.00M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.00M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.00M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.00M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.00M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.00M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.00M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.00M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.00M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.00M|   else                                         \
  |  |  |  |  |  | 1021|  1.00M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.00M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.00M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.00M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.00M|      { } \
  |  |  646|  1.00M|    else \
  |  |  647|  1.00M|      { \
  |  |  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.00M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.00M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.00M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  495|       |
  496|  1.00M|  if (len == 0)
  ------------------
  |  Branch (496:7): [True: 0, False: 1.00M]
  ------------------
  497|      0|    return farray;
  498|       |
  499|  1.00M|  g_array_maybe_expand (array, len);
  500|       |
  501|  1.00M|  memcpy (g_array_elt_pos (array, array->len), data, 
  ------------------
  |  |  154|  1.00M|#define g_array_elt_pos(array,i) ((array)->data + g_array_elt_len((array),(i)))
  |  |  ------------------
  |  |  |  |  153|  1.00M|#define g_array_elt_len(array,i) ((array)->elt_size * (i))
  |  |  ------------------
  ------------------
  502|  1.00M|          g_array_elt_len (array, len));
  ------------------
  |  |  153|  1.00M|#define g_array_elt_len(array,i) ((array)->elt_size * (i))
  ------------------
  503|       |
  504|  1.00M|  array->len += len;
  505|       |
  506|  1.00M|  g_array_zero_terminate (array);
  ------------------
  |  |  157|  1.00M|#define g_array_zero_terminate(array) G_STMT_START{                     \
  |  |  ------------------
  |  |  |  |  874|  1.00M|#define G_STMT_START  do
  |  |  ------------------
  |  |  158|  1.00M|  if ((array)->zero_terminated)                                         \
  |  |  ------------------
  |  |  |  Branch (158:7): [True: 0, False: 1.00M]
  |  |  ------------------
  |  |  159|  1.00M|    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.00M|}G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.00M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.00M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  507|       |
  508|  1.00M|  return farray;
  509|  1.00M|}
g_ptr_array_new_with_free_func:
 1305|   406k|{
 1306|   406k|  return ptr_array_new (0, element_free_func);
 1307|   406k|}
g_ptr_array_unref:
 1395|   406k|{
 1396|   406k|  GRealPtrArray *rarray = (GRealPtrArray *)array;
 1397|       |
 1398|   406k|  g_return_if_fail (array);
  ------------------
  |  |  630|   406k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   406k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   406k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   406k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   406k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   406k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   406k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   406k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 406k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   406k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   406k|   else                                         \
  |  |  |  |  |  | 1021|   406k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   406k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   406k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 406k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   406k|      { } \
  |  |  633|   406k|    else \
  |  |  634|   406k|      { \
  |  |  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|   406k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   406k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 406k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1399|       |
 1400|   406k|  if (g_atomic_ref_count_dec (&rarray->ref_count))
  ------------------
  |  Branch (1400:7): [True: 406k, False: 0]
  ------------------
 1401|   406k|    ptr_array_free (array, FREE_SEGMENT);
 1402|   406k|}
g_ptr_array_add:
 1807|   327k|{
 1808|   327k|  GRealPtrArray *rarray = (GRealPtrArray *)array;
 1809|       |
 1810|   327k|  g_return_if_fail (rarray);
  ------------------
  |  |  630|   327k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   327k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   327k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   327k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   327k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   327k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   327k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   327k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 327k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   327k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   327k|   else                                         \
  |  |  |  |  |  | 1021|   327k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   327k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   327k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 327k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   327k|      { } \
  |  |  633|   327k|    else \
  |  |  634|   327k|      { \
  |  |  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|   327k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   327k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 327k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1811|   327k|  g_return_if_fail (rarray->len == 0 || (rarray->len != 0 && rarray->pdata != NULL));
  ------------------
  |  |  630|   327k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   327k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   327k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   327k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   327k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   327k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   327k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.57M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 306k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 306k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 21.2k, False: 306k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   327k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   327k|   else                                         \
  |  |  |  |  |  | 1021|   327k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   327k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   327k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 327k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   327k|      { } \
  |  |  633|   327k|    else \
  |  |  634|   327k|      { \
  |  |  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|   327k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   327k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 327k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1812|       |
 1813|   327k|  g_ptr_array_maybe_expand (rarray, 1);
 1814|       |
 1815|   327k|  rarray->pdata[rarray->len++] = data;
 1816|   327k|}
g_byte_array_new:
 2230|  1.00M|{
 2231|  1.00M|  return (GByteArray *)g_array_sized_new (FALSE, FALSE, 1, 0);
  ------------------
  |  |  814|  1.00M|#define	FALSE	(0)
  ------------------
                return (GByteArray *)g_array_sized_new (FALSE, FALSE, 1, 0);
  ------------------
  |  |  814|  1.00M|#define	FALSE	(0)
  ------------------
 2232|  1.00M|}
g_byte_array_free:
 2326|   103k|{
 2327|   103k|  return (guint8 *)g_array_free ((GArray *)array, free_segment);
 2328|   103k|}
g_byte_array_free_to_bytes:
 2350|   103k|{
 2351|   103k|  gsize length;
 2352|       |
 2353|   103k|  g_return_val_if_fail (array != NULL, NULL);
  ------------------
  |  |  643|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   103k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   103k|      { } \
  |  |  646|   103k|    else \
  |  |  647|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2354|       |
 2355|   103k|  length = array->len;
 2356|   103k|  return g_bytes_new_take (g_byte_array_free (array, FALSE), length);
  ------------------
  |  |  814|   103k|#define	FALSE	(0)
  ------------------
 2357|   103k|}
g_byte_array_unref:
 2389|   899k|{
 2390|   899k|  g_array_unref ((GArray *)array);
 2391|   899k|}
g_byte_array_append:
 2408|  1.00M|{
 2409|  1.00M|  g_array_append_vals ((GArray *)array, (guint8 *)data, len);
 2410|       |
 2411|  1.00M|  return array;
 2412|  1.00M|}
garray.c:array_free:
  430|  1.00M|{
  431|  1.00M|  gchar *segment;
  432|       |
  433|  1.00M|  if (flags & FREE_SEGMENT)
  ------------------
  |  Branch (433:7): [True: 900k, False: 103k]
  ------------------
  434|   900k|    {
  435|   900k|      if (array->clear_func != NULL)
  ------------------
  |  Branch (435:11): [True: 0, False: 900k]
  ------------------
  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|   900k|      g_free (array->data);
  444|   900k|      segment = NULL;
  445|   900k|    }
  446|   103k|  else
  447|   103k|    segment = (gchar*) array->data;
  448|       |
  449|  1.00M|  if (flags & PRESERVE_WRAPPER)
  ------------------
  |  Branch (449:7): [True: 0, False: 1.00M]
  ------------------
  450|      0|    {
  451|      0|      array->data            = NULL;
  452|      0|      array->len             = 0;
  453|      0|      array->alloc           = 0;
  454|      0|    }
  455|  1.00M|  else
  456|  1.00M|    {
  457|  1.00M|      g_slice_free1 (sizeof (GRealArray), array);
  458|  1.00M|    }
  459|       |
  460|  1.00M|  return segment;
  461|  1.00M|}
garray.c:g_array_maybe_expand:
  973|  1.00M|{
  974|  1.00M|  guint want_alloc;
  975|       |
  976|       |  /* Detect potential overflow */
  977|  1.00M|  if G_UNLIKELY ((G_MAXUINT - array->len) < len)
  ------------------
  |  | 1025|  1.00M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  1.00M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.00M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.00M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.00M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.00M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.00M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.00M|   else                                         \
  |  |  |  | 1021|  1.00M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.00M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.00M|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 1.00M]
  |  |  ------------------
  ------------------
  978|  1.00M|    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.00M|  want_alloc = g_array_elt_len (array, array->len + len +
  ------------------
  |  |  153|  1.00M|#define g_array_elt_len(array,i) ((array)->elt_size * (i))
  ------------------
  981|  1.00M|                                array->zero_terminated);
  982|       |
  983|  1.00M|  if (want_alloc > array->alloc)
  ------------------
  |  Branch (983:7): [True: 1.00M, False: 0]
  ------------------
  984|  1.00M|    {
  985|  1.00M|      want_alloc = g_nearest_pow (want_alloc);
  986|  1.00M|      want_alloc = MAX (want_alloc, MIN_ARRAY_SIZE);
  ------------------
  |  |  822|  1.00M|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 98.2k, False: 910k]
  |  |  ------------------
  ------------------
  987|       |
  988|  1.00M|      array->data = g_realloc (array->data, want_alloc);
  989|       |
  990|  1.00M|      if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|  1.00M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  1.00M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.00M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.00M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.00M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.00M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.00M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.00M|   else                                         \
  |  |  |  | 1021|  1.00M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.00M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.00M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 1.00M]
  |  |  ------------------
  ------------------
  991|      0|        memset (array->data + array->alloc, 0, want_alloc - array->alloc);
  992|       |
  993|  1.00M|      array->alloc = want_alloc;
  994|  1.00M|    }
  995|  1.00M|}
garray.c:g_nearest_pow:
  953|  1.03M|{
  954|  1.03M|  guint n = num - 1;
  955|       |
  956|  1.03M|  g_assert (num > 0);
  ------------------
  |  |  231|  1.03M|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.03M|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|  1.03M|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|  1.03M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.03M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.03M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.03M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.03M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.03M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.03M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.03M|   else                                         \
  |  |  |  |  |  | 1021|  1.03M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.03M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.03M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 1.03M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|  1.03M|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|  1.03M|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.03M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.03M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  957|       |
  958|  1.03M|  n |= n >> 1;
  959|  1.03M|  n |= n >> 2;
  960|  1.03M|  n |= n >> 4;
  961|  1.03M|  n |= n >> 8;
  962|  1.03M|  n |= n >> 16;
  963|       |#if SIZEOF_INT == 8
  964|       |  n |= n >> 32;
  965|       |#endif
  966|       |
  967|  1.03M|  return n + 1;
  968|  1.03M|}
garray.c:ptr_array_new:
 1083|   406k|{
 1084|   406k|  GRealPtrArray *array;
 1085|       |
 1086|   406k|  array = g_slice_new (GRealPtrArray);
  ------------------
  |  |   46|   406k|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  ------------------
 1087|       |
 1088|   406k|  array->pdata = NULL;
 1089|   406k|  array->len = 0;
 1090|   406k|  array->alloc = 0;
 1091|   406k|  array->element_free_func = element_free_func;
 1092|       |
 1093|   406k|  g_atomic_ref_count_init (&array->ref_count);
 1094|       |
 1095|   406k|  if (reserved_size != 0)
  ------------------
  |  Branch (1095:7): [True: 0, False: 406k]
  ------------------
 1096|      0|    g_ptr_array_maybe_expand (array, reserved_size);
 1097|       |
 1098|   406k|  return (GPtrArray *) array;
 1099|   406k|}
garray.c:ptr_array_free:
 1450|   406k|{
 1451|   406k|  GRealPtrArray *rarray = (GRealPtrArray *)array;
 1452|   406k|  gpointer *segment;
 1453|       |
 1454|   406k|  if (flags & FREE_SEGMENT)
  ------------------
  |  Branch (1454:7): [True: 406k, False: 0]
  ------------------
 1455|   406k|    {
 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|   406k|      gpointer *stolen_pdata = g_steal_pointer (&rarray->pdata);
  ------------------
  |  |  222|   406k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
 1463|   406k|      if (rarray->element_free_func != NULL)
  ------------------
  |  Branch (1463:11): [True: 406k, False: 0]
  ------------------
 1464|   406k|        {
 1465|   406k|          guint i;
 1466|       |
 1467|   733k|          for (i = 0; i < rarray->len; ++i)
  ------------------
  |  Branch (1467:23): [True: 327k, False: 406k]
  ------------------
 1468|   327k|            rarray->element_free_func (stolen_pdata[i]);
 1469|   406k|        }
 1470|       |
 1471|   406k|      g_free (stolen_pdata);
 1472|   406k|      segment = NULL;
 1473|   406k|    }
 1474|      0|  else
 1475|      0|    segment = rarray->pdata;
 1476|       |
 1477|   406k|  if (flags & PRESERVE_WRAPPER)
  ------------------
  |  Branch (1477:7): [True: 0, False: 406k]
  ------------------
 1478|      0|    {
 1479|      0|      rarray->pdata = NULL;
 1480|      0|      rarray->len = 0;
 1481|      0|      rarray->alloc = 0;
 1482|      0|    }
 1483|   406k|  else
 1484|   406k|    {
 1485|   406k|      g_slice_free1 (sizeof (GRealPtrArray), rarray);
 1486|   406k|    }
 1487|       |
 1488|   406k|  return segment;
 1489|   406k|}
garray.c:g_ptr_array_maybe_expand:
 1494|   327k|{
 1495|       |  /* Detect potential overflow */
 1496|   327k|  if G_UNLIKELY ((G_MAXUINT - array->len) < len)
  ------------------
  |  | 1025|   327k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   327k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   327k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   327k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   327k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 327k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   327k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   327k|   else                                         \
  |  |  |  | 1021|   327k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   327k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   327k|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 327k]
  |  |  ------------------
  ------------------
 1497|   327k|    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|   327k|  if ((array->len + len) > array->alloc)
  ------------------
  |  Branch (1499:7): [True: 25.0k, False: 302k]
  ------------------
 1500|  25.0k|    {
 1501|  25.0k|      guint old_alloc = array->alloc;
 1502|  25.0k|      array->alloc = g_nearest_pow (array->len + len);
 1503|  25.0k|      array->alloc = MAX (array->alloc, MIN_ARRAY_SIZE);
  ------------------
  |  |  822|  25.0k|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 3.78k, False: 21.2k]
  |  |  ------------------
  ------------------
 1504|  25.0k|      array->pdata = g_realloc (array->pdata, sizeof (gpointer) * array->alloc);
 1505|  25.0k|      if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|  25.0k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  25.0k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  25.0k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  25.0k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  25.0k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 25.0k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  25.0k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  25.0k|   else                                         \
  |  |  |  | 1021|  25.0k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  25.0k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  25.0k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 25.0k]
  |  |  ------------------
  ------------------
 1506|      0|        for ( ; old_alloc < array->alloc; old_alloc++)
  ------------------
  |  Branch (1506:17): [True: 0, False: 0]
  ------------------
 1507|      0|          array->pdata [old_alloc] = NULL;
 1508|  25.0k|    }
 1509|   327k|}

g_pointer_bit_lock:
  402|  7.74M|{
  403|  7.74M|  g_return_if_fail (lock_bit < 32);
  ------------------
  |  |  630|  7.74M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  7.74M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  7.74M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  7.74M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  7.74M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  7.74M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  7.74M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  7.74M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 7.74M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  7.74M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  7.74M|   else                                         \
  |  |  |  |  |  | 1021|  7.74M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  7.74M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  7.74M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 7.74M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  7.74M|      { } \
  |  |  633|  7.74M|    else \
  |  |  634|  7.74M|      { \
  |  |  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|  7.74M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  7.74M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 7.74M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  404|       |
  405|  7.74M|  {
  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|  7.74M|  volatile gsize *pointer_address = address;
  435|  7.74M|  gsize mask = 1u << lock_bit;
  436|  7.74M|  gsize v;
  437|       |
  438|  7.74M| retry:
  439|  7.74M|  v = g_atomic_pointer_or (pointer_address, mask);
  ------------------
  |  |  235|  7.74M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  7.74M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  236|  7.74M|    gsize *gapo_atomic = (gsize *) (atomic);                                 \
  |  |  237|  7.74M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  ------------------
  |  |  |  |  765|  7.74M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  238|  7.74M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize));                    \
  |  |  ------------------
  |  |  |  |  765|  7.74M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  239|  7.74M|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  ------------------
  |  |  |  Branch (239:13): [Folded, False: 7.74M]
  |  |  ------------------
  |  |  240|  7.74M|    (void) (0 ? (val) ^ (val) : 1);                                          \
  |  |  ------------------
  |  |  |  Branch (240:13): [Folded, False: 7.74M]
  |  |  ------------------
  |  |  241|  7.74M|    (gsize) __atomic_fetch_or (gapo_atomic, (val), __ATOMIC_SEQ_CST);        \
  |  |  242|  7.74M|  }))
  ------------------
  440|  7.74M|  if (v & mask)
  ------------------
  |  Branch (440:7): [True: 0, False: 7.74M]
  ------------------
  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|  7.74M|#endif
  452|  7.74M|  }
  453|  7.74M|}
g_pointer_bit_unlock:
  518|  7.74M|{
  519|  7.74M|  g_return_if_fail (lock_bit < 32);
  ------------------
  |  |  630|  7.74M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  7.74M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  7.74M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  7.74M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  7.74M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  7.74M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  7.74M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  7.74M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 7.74M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  7.74M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  7.74M|   else                                         \
  |  |  |  |  |  | 1021|  7.74M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  7.74M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  7.74M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 7.74M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  7.74M|      { } \
  |  |  633|  7.74M|    else \
  |  |  634|  7.74M|      { \
  |  |  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|  7.74M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  7.74M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 7.74M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  520|       |
  521|  7.74M|  {
  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|  7.74M|    volatile gsize *pointer_address = address;
  529|  7.74M|    gsize mask = 1u << lock_bit;
  530|       |
  531|  7.74M|    g_atomic_pointer_and (pointer_address, ~mask);
  ------------------
  |  |  226|  7.74M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  7.74M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  227|  7.74M|    gsize *gapa_atomic = (gsize *) (atomic);                                 \
  |  |  228|  7.74M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  ------------------
  |  |  |  |  765|  7.74M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  229|  7.74M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize));                    \
  |  |  ------------------
  |  |  |  |  765|  7.74M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  230|  7.74M|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  ------------------
  |  |  |  Branch (230:13): [Folded, False: 7.74M]
  |  |  ------------------
  |  |  231|  7.74M|    (void) (0 ? (val) ^ (val) : 1);                                          \
  |  |  ------------------
  |  |  |  Branch (231:13): [Folded, False: 7.74M]
  |  |  ------------------
  |  |  232|  7.74M|    (gsize) __atomic_fetch_and (gapa_atomic, (val), __ATOMIC_SEQ_CST);       \
  |  |  233|  7.74M|  }))
  ------------------
  532|  7.74M|#endif
  533|       |
  534|  7.74M|    {
  535|  7.74M|      guint class = ((gsize) address) % G_N_ELEMENTS (g_bit_lock_contended);
  ------------------
  |  |  840|  7.74M|#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
  ------------------
  536|  7.74M|      if (g_atomic_int_get (&g_bit_lock_contended[class]))
  ------------------
  |  |   96|  7.74M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  7.74M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  |  Branch (96:3): [True: 0, False: 7.74M]
  |  |  ------------------
  |  |   97|  7.74M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  7.74M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  7.74M|    gint gaig_temp;                                                          \
  |  |   99|  7.74M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 7.74M]
  |  |  ------------------
  |  |  100|  7.74M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  7.74M|    (gint) gaig_temp;                                                        \
  |  |  102|  7.74M|  }))
  ------------------
  537|      0|        g_futex_wake (g_futex_int_address (address));
  538|  7.74M|    }
  539|  7.74M|  }
  540|  7.74M|}

gsignal.c:g_bsearch_array_create:
  123|    746|{
  124|    746|  GBSearchArray *barray;
  125|    746|  guint size;
  126|       |
  127|    746|  g_return_val_if_fail (bconfig != NULL, NULL);
  ------------------
  |  |  643|    746|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    746|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    746|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    746|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    746| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    746|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    746|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    746|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 746, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    746|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    746|   else                                         \
  |  |  |  |  |  | 1021|    746|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    746|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    746|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 746, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    746|      { } \
  |  |  646|    746|    else \
  |  |  647|    746|      { \
  |  |  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|    746|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    746|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 746]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  128|       |
  129|    746|  size = sizeof (GBSearchArray) + bconfig->sizeof_node;
  130|    746|  if (bconfig->flags & G_BSEARCH_ARRAY_ALIGN_POWER2)
  ------------------
  |  Branch (130:7): [True: 2, False: 744]
  ------------------
  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|    746|  barray = (GBSearchArray *) g_malloc (size);
  133|    746|  memset (barray, 0, sizeof (GBSearchArray));
  134|       |
  135|    746|  return barray;
  136|    746|}
gsignal.c:g_bsearch_array_lookup_fuzzy:
  147|  25.4k|{
  148|  25.4k|  GBSearchCompareFunc cmp_nodes = bconfig->cmp_nodes;
  149|  25.4k|  guint8 *check = NULL, *nodes = G_BSEARCH_ARRAY_NODES (barray);
  ------------------
  |  |  120|  25.4k|#define G_BSEARCH_ARRAY_NODES(barray)    (((guint8*) (barray)) + sizeof (GBSearchArray))
  ------------------
  150|  25.4k|  guint n_nodes = barray->n_nodes, offs = 0;
  151|  25.4k|  guint sizeof_node = bconfig->sizeof_node;
  152|  25.4k|  gint cmp = 0;
  153|       |
  154|  61.0k|  while (offs < n_nodes)
  ------------------
  |  Branch (154:10): [True: 50.6k, False: 10.3k]
  ------------------
  155|  50.6k|    {
  156|  50.6k|      guint i = (offs + n_nodes) >> 1;
  157|       |
  158|  50.6k|      check = nodes + i * sizeof_node;
  159|  50.6k|      cmp = cmp_nodes (key_node, check);
  160|  50.6k|      if (cmp == 0)
  ------------------
  |  Branch (160:11): [True: 15.1k, False: 35.5k]
  ------------------
  161|  15.1k|        return sibling_or_after > 1 ? NULL : check;
  ------------------
  |  Branch (161:16): [True: 2.22k, False: 12.8k]
  ------------------
  162|  35.5k|      else if (cmp < 0)
  ------------------
  |  Branch (162:16): [True: 20.7k, False: 14.8k]
  ------------------
  163|  20.7k|        n_nodes = i;
  164|  14.8k|      else /* (cmp > 0) */
  165|  14.8k|        offs = i + 1;
  166|  50.6k|    }
  167|       |
  168|       |  /* check is last mismatch, cmp > 0 indicates greater key */
  169|  10.3k|  return G_LIKELY (!sibling_or_after) ? NULL : (sibling_or_after > 1 && cmp > 0) ? check + sizeof_node : check;
  ------------------
  |  | 1024|  10.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  10.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  10.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  10.3k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  10.3k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 10.3k, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1019|  10.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  10.3k|   else                                         \
  |  |  |  | 1021|  10.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  10.3k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  10.3k|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 10.3k, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (169:49): [True: 4, False: 0]
  |  Branch (169:73): [True: 4, False: 0]
  ------------------
  170|  25.4k|}
gsignal.c:g_bsearch_array_get_nth:
  175|  2.00k|{
  176|  2.00k|  return (G_LIKELY (nth < barray->n_nodes) ?
  ------------------
  |  | 1024|  2.00k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  2.00k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  2.00k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  2.00k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  2.00k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 2.00k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  2.00k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  2.00k|   else                                         \
  |  |  |  | 1021|  2.00k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  2.00k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  2.00k|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 2.00k, False: 0]
  |  |  ------------------
  ------------------
  177|  2.00k|          G_BSEARCH_ARRAY_NODES (barray) + nth * bconfig->sizeof_node :
  ------------------
  |  |  120|  2.00k|#define G_BSEARCH_ARRAY_NODES(barray)    (((guint8*) (barray)) + sizeof (GBSearchArray))
  ------------------
  178|       |          NULL);
  179|  2.00k|}
gsignal.c:g_bsearch_array_insert:
  222|  2.96k|{
  223|  2.96k|  guint8 *node;
  224|       |
  225|  2.96k|  if (G_UNLIKELY (!barray->n_nodes))
  ------------------
  |  | 1025|  2.96k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  2.96k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  2.96k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  2.96k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 745, False: 2.22k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  2.96k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  2.96k|   else                                         \
  |  |  |  | 1021|  2.96k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  2.96k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  2.96k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 745, False: 2.22k]
  |  |  ------------------
  ------------------
  226|    745|    {
  227|    745|      barray = g_bsearch_array_grow (barray, bconfig, 0);
  228|    745|      node = G_BSEARCH_ARRAY_NODES (barray);
  ------------------
  |  |  120|    745|#define G_BSEARCH_ARRAY_NODES(barray)    (((guint8*) (barray)) + sizeof (GBSearchArray))
  ------------------
  229|    745|    }
  230|  2.22k|  else
  231|  2.22k|    {
  232|  2.22k|      node = (guint8 *) g_bsearch_array_lookup_insertion (barray, bconfig, key_node);
  ------------------
  |  |  114|  2.22k|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 2)
  ------------------
  233|  2.22k|      if (G_LIKELY (node))
  ------------------
  |  | 1024|  2.22k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  2.22k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  2.22k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  2.22k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  2.22k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 4, False: 2.22k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  2.22k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  2.22k|   else                                         \
  |  |  |  | 1021|  2.22k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  2.22k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  2.22k|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 4, False: 2.22k]
  |  |  ------------------
  ------------------
  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.22k|      else /* no insertion needed, node already there */
  242|  2.22k|        return barray;
  243|  2.22k|    }
  244|    749|  memcpy (node, key_node, bconfig->sizeof_node);
  245|    749|  return barray;
  246|  2.96k|}
gsignal.c:g_bsearch_array_grow:
  197|    749|{
  198|    749|  guint old_size = barray->n_nodes * bconfig->sizeof_node;
  199|    749|  guint new_size = old_size + bconfig->sizeof_node;
  200|    749|  guint8 *node;
  201|       |
  202|    749|  g_return_val_if_fail (index_ <= barray->n_nodes, NULL);
  ------------------
  |  |  643|    749|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    749|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    749|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    749|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    749| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    749|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    749|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    749|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 749, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    749|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    749|   else                                         \
  |  |  |  |  |  | 1021|    749|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    749|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    749|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 749, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    749|      { } \
  |  |  646|    749|    else \
  |  |  647|    749|      { \
  |  |  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|    749|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    749|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 749]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  203|       |
  204|    749|  if (G_UNLIKELY (bconfig->flags & G_BSEARCH_ARRAY_ALIGN_POWER2))
  ------------------
  |  | 1025|    749|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|    749| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    749|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|    749|   int _g_boolean_var_;                         \
  |  |  |  | 1018|    749|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 5, False: 744]
  |  |  |  |  ------------------
  |  |  |  | 1019|    749|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|    749|   else                                         \
  |  |  |  | 1021|    749|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|    749|   _g_boolean_var_;                             \
  |  |  |  | 1023|    749|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 5, False: 744]
  |  |  ------------------
  ------------------
  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|    744|  else
  212|    744|    barray = (GBSearchArray *) g_realloc (barray, sizeof (GBSearchArray) + new_size);
  213|    749|  node = G_BSEARCH_ARRAY_NODES (barray) + index_ * bconfig->sizeof_node;
  ------------------
  |  |  120|    749|#define G_BSEARCH_ARRAY_NODES(barray)    (((guint8*) (barray)) + sizeof (GBSearchArray))
  ------------------
  214|    749|  memmove (node + bconfig->sizeof_node, node, (barray->n_nodes - index_) * bconfig->sizeof_node);
  215|    749|  barray->n_nodes += 1;
  216|    749|  return barray;
  217|    749|}
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|    740|{
  292|    740|  g_return_if_fail (barray != NULL);
  ------------------
  |  |  630|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    740|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    740|      { } \
  |  |  633|    740|    else \
  |  |  634|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  293|       |
  294|    740|  g_free (barray);
  295|    740|}
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|   344k|{
   96|   344k|  g_return_val_if_fail (data != NULL || size == 0, NULL);
  ------------------
  |  |  643|   344k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   344k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   344k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   344k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   344k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   344k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   344k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.03M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.87k, False: 342k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 342k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   344k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   344k|   else                                         \
  |  |  |  |  |  | 1021|   344k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   344k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   344k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 344k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   344k|      { } \
  |  |  646|   344k|    else \
  |  |  647|   344k|      { \
  |  |  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|   344k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   344k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 344k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   97|       |
   98|   344k|  return g_bytes_new_take (g_memdup2 (data, size), size);
   99|   344k|}
g_bytes_new_take:
  127|   447k|{
  128|   447k|  return g_bytes_new_with_free_func (data, size, g_free, data);
  129|   447k|}
g_bytes_new_static:
  150|    740|{
  151|    740|  return g_bytes_new_with_free_func (data, size, NULL, NULL);
  152|    740|}
g_bytes_new_with_free_func:
  181|   448k|{
  182|   448k|  GBytes *bytes;
  183|       |
  184|   448k|  g_return_val_if_fail (data != NULL || size == 0, NULL);
  ------------------
  |  |  643|   448k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   448k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   448k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   448k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   448k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   448k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   448k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.23M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 105k, False: 342k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 342k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   448k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   448k|   else                                         \
  |  |  |  |  |  | 1021|   448k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   448k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   448k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 448k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   448k|      { } \
  |  |  646|   448k|    else \
  |  |  647|   448k|      { \
  |  |  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|   448k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   448k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 448k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  185|       |
  186|   448k|  bytes = g_slice_new (GBytes);
  ------------------
  |  |   46|   448k|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  ------------------
  187|   448k|  bytes->data = data;
  188|   448k|  bytes->size = size;
  189|   448k|  bytes->free_func = free_func;
  190|   448k|  bytes->user_data = user_data;
  191|   448k|  g_atomic_ref_count_init (&bytes->ref_count);
  192|       |
  193|   448k|  return (GBytes *)bytes;
  194|   448k|}
g_bytes_get_data:
  272|  1.00M|{
  273|  1.00M|  g_return_val_if_fail (bytes != NULL, NULL);
  ------------------
  |  |  643|  1.00M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.00M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.00M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.00M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.00M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.00M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.00M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.00M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.00M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.00M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.00M|   else                                         \
  |  |  |  |  |  | 1021|  1.00M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.00M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.00M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.00M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.00M|      { } \
  |  |  646|  1.00M|    else \
  |  |  647|  1.00M|      { \
  |  |  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.00M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.00M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.00M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  274|  1.00M|  if (size)
  ------------------
  |  Branch (274:7): [True: 1.00M, False: 0]
  ------------------
  275|  1.00M|    *size = bytes->size;
  276|  1.00M|  return bytes->data;
  277|  1.00M|}
g_bytes_get_size:
  293|  1.68M|{
  294|  1.68M|  g_return_val_if_fail (bytes != NULL, 0);
  ------------------
  |  |  643|  1.68M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.68M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.68M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.68M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.68M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.68M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.68M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.68M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.68M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.68M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.68M|   else                                         \
  |  |  |  |  |  | 1021|  1.68M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.68M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.68M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.68M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.68M|      { } \
  |  |  646|  1.68M|    else \
  |  |  647|  1.68M|      { \
  |  |  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.68M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.68M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.68M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  295|  1.68M|  return bytes->size;
  296|  1.68M|}
g_bytes_ref:
  311|   445k|{
  312|   445k|  g_return_val_if_fail (bytes != NULL, NULL);
  ------------------
  |  |  643|   445k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   445k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   445k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   445k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   445k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   445k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   445k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   445k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 445k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   445k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   445k|   else                                         \
  |  |  |  |  |  | 1021|   445k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   445k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   445k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 445k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   445k|      { } \
  |  |  646|   445k|    else \
  |  |  647|   445k|      { \
  |  |  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|   445k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   445k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 445k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  313|       |
  314|   445k|  g_atomic_ref_count_inc (&bytes->ref_count);
  315|       |
  316|   445k|  return bytes;
  317|   445k|}
g_bytes_unref:
  330|   894k|{
  331|   894k|  if (bytes == NULL)
  ------------------
  |  Branch (331:7): [True: 0, False: 894k]
  ------------------
  332|      0|    return;
  333|       |
  334|   894k|  if (g_atomic_ref_count_dec (&bytes->ref_count))
  ------------------
  |  Branch (334:7): [True: 448k, False: 445k]
  ------------------
  335|   448k|    {
  336|   448k|      if (bytes->free_func != NULL)
  ------------------
  |  Branch (336:11): [True: 447k, False: 740]
  ------------------
  337|   447k|        bytes->free_func (bytes->user_data);
  338|   448k|      g_slice_free (GBytes, bytes);
  ------------------
  |  |   79|   448k|#define g_slice_free(type, mem)                                 \
  |  |  ------------------
  |  |  |  |  874|   448k|#define G_STMT_START  do
  |  |  ------------------
  |  |   80|   448k|G_STMT_START {                                                  \
  |  |   81|   448k|  if (1) g_slice_free1 (sizeof (type), (mem));			\
  |  |  ------------------
  |  |  |  Branch (81:7): [True: 448k, Folded]
  |  |  ------------------
  |  |   82|   448k|  else   (void) ((type*) 0 == (mem)); 				\
  |  |   83|   448k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   448k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 448k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  339|   448k|    }
  340|   894k|}

g_datalist_clear:
  255|  1.02M|{
  256|  1.02M|  GData *data;
  257|  1.02M|  guint i;
  258|       |
  259|  1.02M|  g_return_if_fail (datalist != NULL);
  ------------------
  |  |  630|  1.02M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.02M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.02M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.02M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.02M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.02M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.02M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.02M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.02M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.02M|   else                                         \
  |  |  |  |  |  | 1021|  1.02M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.02M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.02M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.02M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.02M|      { } \
  |  |  633|  1.02M|    else \
  |  |  634|  1.02M|      { \
  |  |  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.02M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.02M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.02M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  260|       |
  261|  1.02M|  g_datalist_lock (datalist);
  262|       |
  263|  1.02M|  data = G_DATALIST_GET_POINTER (datalist);
  ------------------
  |  |  142|  1.02M|  ((GData*) ((gsize) g_atomic_pointer_get (datalist) & ~(gsize) G_DATALIST_FLAGS_MASK_INTERNAL))
  |  |  ------------------
  |  |  |  |  113|  1.02M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  1.02M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.02M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  1.02M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  1.02M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  1.02M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  1.02M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  1.02M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  1.02M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  1.02M|  }))
  |  |  ------------------
  |  |                 ((GData*) ((gsize) g_atomic_pointer_get (datalist) & ~(gsize) G_DATALIST_FLAGS_MASK_INTERNAL))
  |  |  ------------------
  |  |  |  |  138|  1.02M|#define G_DATALIST_FLAGS_MASK_INTERNAL 0x7
  |  |  ------------------
  ------------------
  264|  1.02M|  G_DATALIST_SET_POINTER (datalist, NULL);
  ------------------
  |  |  144|  1.02M|#define G_DATALIST_SET_POINTER(datalist, pointer)       G_STMT_START {                  \
  |  |  ------------------
  |  |  |  |  874|  1.02M|#define G_STMT_START  do
  |  |  ------------------
  |  |  145|  1.02M|  gpointer _oldv, _newv;                                                                \
  |  |  146|  1.02M|  do {                                                                                  \
  |  |  147|  1.02M|    _oldv = g_atomic_pointer_get (datalist);                                            \
  |  |  ------------------
  |  |  |  |  113|  1.02M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  1.02M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.02M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  1.02M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  1.02M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  1.02M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  1.02M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  1.02M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  1.02M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  1.02M|  }))
  |  |  ------------------
  |  |  148|  1.02M|    _newv = (gpointer) (((gsize) _oldv & G_DATALIST_FLAGS_MASK_INTERNAL) | (gsize) pointer);     \
  |  |  ------------------
  |  |  |  |  138|  1.02M|#define G_DATALIST_FLAGS_MASK_INTERNAL 0x7
  |  |  ------------------
  |  |  149|  1.02M|  } while (!g_atomic_pointer_compare_and_exchange ((void**) datalist, _oldv, _newv));   \
  |  |  ------------------
  |  |  |  |  210|  1.02M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  211|  1.02M|    G_STATIC_ASSERT (sizeof (oldval) == sizeof (gpointer));                  \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.02M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  212|  1.02M|    gpointer gapcae_oldval = (gpointer)(oldval);                             \
  |  |  |  |  213|  1.02M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.02M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  214|  1.02M|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:13): [Folded, False: 1.02M]
  |  |  |  |  ------------------
  |  |  |  |  215|  1.02M|    __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  1.02M|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|  1.02M|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  1.02M|#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.02M, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  216|  1.02M|  }))
  |  |  ------------------
  |  |  |  Branch (149:12): [True: 0, False: 1.02M]
  |  |  ------------------
  |  |  150|  1.02M|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.02M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.02M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  265|       |
  266|  1.02M|  g_datalist_unlock (datalist);
  267|       |
  268|  1.02M|  if (data)
  ------------------
  |  Branch (268:7): [True: 0, False: 1.02M]
  ------------------
  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.02M|}
g_datalist_id_set_data_full:
  658|  4.89M|{
  659|  4.89M|  g_return_if_fail (datalist != NULL);
  ------------------
  |  |  630|  4.89M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  4.89M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  4.89M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  4.89M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  4.89M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  4.89M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  4.89M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  4.89M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4.89M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  4.89M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  4.89M|   else                                         \
  |  |  |  |  |  | 1021|  4.89M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  4.89M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  4.89M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4.89M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  4.89M|      { } \
  |  |  633|  4.89M|    else \
  |  |  634|  4.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|  4.89M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  4.89M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4.89M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  660|  4.89M|  if (!data)
  ------------------
  |  Branch (660:7): [True: 4.44M, False: 446k]
  ------------------
  661|  4.89M|    g_return_if_fail (destroy_func == NULL);
  ------------------
  |  |  630|  4.44M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  4.44M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  4.44M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  4.44M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  4.44M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  4.44M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  4.44M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  4.44M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4.44M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  4.44M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  4.44M|   else                                         \
  |  |  |  |  |  | 1021|  4.44M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  4.44M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  4.44M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4.44M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  4.44M|      { } \
  |  |  633|  4.44M|    else \
  |  |  634|  4.44M|      { \
  |  |  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.44M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  4.44M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4.44M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  662|  4.89M|  if (!key_id)
  ------------------
  |  Branch (662:7): [True: 0, False: 4.89M]
  ------------------
  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|  4.89M|  g_data_set_internal (datalist, key_id, data, destroy_func, NULL);
  671|  4.89M|}
g_datalist_id_remove_no_notify:
  734|   103k|{
  735|   103k|  gpointer ret_data = NULL;
  736|       |
  737|   103k|  g_return_val_if_fail (datalist != NULL, NULL);
  ------------------
  |  |  643|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   103k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   103k|      { } \
  |  |  646|   103k|    else \
  |  |  647|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  738|       |
  739|   103k|  if (key_id)
  ------------------
  |  Branch (739:7): [True: 103k, False: 0]
  ------------------
  740|   103k|    ret_data = g_data_set_internal (datalist, key_id, NULL, (GDestroyNotify) 42, NULL);
  741|       |
  742|   103k|  return ret_data;
  743|   103k|}
g_datalist_id_get_data:
  800|  1.71M|{
  801|  1.71M|  return g_datalist_id_dup_data (datalist, key_id, NULL, NULL);
  802|  1.71M|}
g_datalist_id_dup_data:
  850|  1.71M|{
  851|  1.71M|  gpointer val = NULL;
  852|  1.71M|  gpointer retval = NULL;
  853|  1.71M|  GData *d;
  854|  1.71M|  GDataElt *data, *data_end;
  855|       |
  856|  1.71M|  g_datalist_lock (datalist);
  857|       |
  858|  1.71M|  d = G_DATALIST_GET_POINTER (datalist);
  ------------------
  |  |  142|  1.71M|  ((GData*) ((gsize) g_atomic_pointer_get (datalist) & ~(gsize) G_DATALIST_FLAGS_MASK_INTERNAL))
  |  |  ------------------
  |  |  |  |  113|  1.71M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.71M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  1.71M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.71M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  1.71M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  1.71M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  1.71M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  1.71M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  1.71M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  1.71M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  1.71M|  }))
  |  |  ------------------
  |  |                 ((GData*) ((gsize) g_atomic_pointer_get (datalist) & ~(gsize) G_DATALIST_FLAGS_MASK_INTERNAL))
  |  |  ------------------
  |  |  |  |  138|  1.71M|#define G_DATALIST_FLAGS_MASK_INTERNAL 0x7
  |  |  ------------------
  ------------------
  859|  1.71M|  if (d)
  ------------------
  |  Branch (859:7): [True: 361k, False: 1.35M]
  ------------------
  860|   361k|    {
  861|   361k|      data = d->data;
  862|   361k|      data_end = data + d->len;
  863|   361k|      do
  864|   361k|        {
  865|   361k|          if (data->key == key_id)
  ------------------
  |  Branch (865:15): [True: 344k, False: 16.2k]
  ------------------
  866|   344k|            {
  867|   344k|              val = data->data;
  868|   344k|              break;
  869|   344k|            }
  870|  16.2k|          data++;
  871|  16.2k|        }
  872|   361k|      while (data < data_end);
  ------------------
  |  Branch (872:14): [True: 0, False: 16.2k]
  ------------------
  873|   361k|    }
  874|       |
  875|  1.71M|  if (dup_func)
  ------------------
  |  Branch (875:7): [True: 0, False: 1.71M]
  ------------------
  876|      0|    retval = dup_func (val, user_data);
  877|  1.71M|  else
  878|  1.71M|    retval = val;
  879|       |
  880|  1.71M|  g_datalist_unlock (datalist);
  881|       |
  882|  1.71M|  return retval;
  883|  1.71M|}
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.46M|{
 1238|  1.46M|  g_return_val_if_fail (datalist != NULL, 0);
  ------------------
  |  |  643|  1.46M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.46M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.46M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.46M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.46M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.46M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.46M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.46M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.46M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.46M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.46M|   else                                         \
  |  |  |  |  |  | 1021|  1.46M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.46M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.46M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.46M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.46M|      { } \
  |  |  646|  1.46M|    else \
  |  |  647|  1.46M|      { \
  |  |  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.46M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.46M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.46M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1239|       |  
 1240|  1.46M|  return G_DATALIST_GET_FLAGS (datalist); /* atomic macro */
  ------------------
  |  |   37|  1.46M|  ((gsize) g_atomic_pointer_get (datalist) & G_DATALIST_FLAGS_MASK)
  |  |  ------------------
  |  |  |  |  113|  1.46M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.46M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  1.46M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.46M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  1.46M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  1.46M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  1.46M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  1.46M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  1.46M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  1.46M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  1.46M|  }))
  |  |  ------------------
  |  |                 ((gsize) g_atomic_pointer_get (datalist) & G_DATALIST_FLAGS_MASK)
  |  |  ------------------
  |  |  |  |   87|  1.46M|#define G_DATALIST_FLAGS_MASK 0x3
  |  |  ------------------
  ------------------
 1241|  1.46M|}
gdataset.c:g_datalist_lock:
  208|  7.74M|{
  209|  7.74M|  g_pointer_bit_lock ((void **)datalist, DATALIST_LOCK_BIT);
  ------------------
  |  |   55|  7.74M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  7.74M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   56|  7.74M|    G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer));                \
  |  |  ------------------
  |  |  |  |  765|  7.74M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   57|  7.74M|    g_pointer_bit_lock ((address), (lock_bit));                              \
  |  |   58|  7.74M|  }))
  ------------------
  210|  7.74M|}
gdataset.c:g_datalist_unlock:
  214|  7.74M|{
  215|  7.74M|  g_pointer_bit_unlock ((void **)datalist, DATALIST_LOCK_BIT);
  ------------------
  |  |   67|  7.74M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  7.74M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   68|  7.74M|    G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer));                \
  |  |  ------------------
  |  |  |  |  765|  7.74M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   69|  7.74M|    g_pointer_bit_unlock ((address), (lock_bit));                            \
  |  |   70|  7.74M|  }))
  ------------------
  216|  7.74M|}
gdataset.c:g_data_set_internal:
  350|  4.99M|{
  351|  4.99M|  GData *d, *old_d;
  352|  4.99M|  GDataElt old, *data, *data_last, *data_end;
  353|       |
  354|  4.99M|  g_datalist_lock (datalist);
  355|       |
  356|  4.99M|  d = G_DATALIST_GET_POINTER (datalist);
  ------------------
  |  |  142|  4.99M|  ((GData*) ((gsize) g_atomic_pointer_get (datalist) & ~(gsize) G_DATALIST_FLAGS_MASK_INTERNAL))
  |  |  ------------------
  |  |  |  |  113|  4.99M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.99M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  4.99M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  4.99M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  4.99M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  4.99M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  4.99M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  4.99M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  4.99M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  4.99M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  4.99M|  }))
  |  |  ------------------
  |  |                 ((GData*) ((gsize) g_atomic_pointer_get (datalist) & ~(gsize) G_DATALIST_FLAGS_MASK_INTERNAL))
  |  |  ------------------
  |  |  |  |  138|  4.99M|#define G_DATALIST_FLAGS_MASK_INTERNAL 0x7
  |  |  ------------------
  ------------------
  357|       |
  358|  4.99M|  if (new_data == NULL) /* remove */
  ------------------
  |  Branch (358:7): [True: 4.55M, False: 446k]
  ------------------
  359|  4.55M|    {
  360|  4.55M|      if (d)
  ------------------
  |  Branch (360:11): [True: 462k, False: 4.08M]
  ------------------
  361|   462k|	{
  362|   462k|	  data = d->data;
  363|   462k|	  data_last = data + d->len - 1;
  364|   478k|	  while (data <= data_last)
  ------------------
  |  Branch (364:11): [True: 462k, False: 16.2k]
  ------------------
  365|   462k|	    {
  366|   462k|	      if (data->key == key_id)
  ------------------
  |  Branch (366:12): [True: 446k, False: 16.2k]
  ------------------
  367|   446k|		{
  368|   446k|		  old = *data;
  369|   446k|		  if (data != data_last)
  ------------------
  |  Branch (369:9): [True: 0, False: 446k]
  ------------------
  370|      0|		    *data = *data_last;
  371|   446k|		  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|   446k|		  if (d->len == 0)
  ------------------
  |  Branch (376:9): [True: 446k, False: 0]
  ------------------
  377|   446k|		    {
  378|   446k|		      G_DATALIST_SET_POINTER (datalist, NULL);
  ------------------
  |  |  144|   446k|#define G_DATALIST_SET_POINTER(datalist, pointer)       G_STMT_START {                  \
  |  |  ------------------
  |  |  |  |  874|   446k|#define G_STMT_START  do
  |  |  ------------------
  |  |  145|   446k|  gpointer _oldv, _newv;                                                                \
  |  |  146|   446k|  do {                                                                                  \
  |  |  147|   446k|    _oldv = g_atomic_pointer_get (datalist);                                            \
  |  |  ------------------
  |  |  |  |  113|   446k|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   446k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|   446k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   446k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|   446k|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   446k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|   446k|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   446k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|   446k|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|   446k|    gapg_temp_newval;                                                      \
  |  |  |  |  119|   446k|  }))
  |  |  ------------------
  |  |  148|   446k|    _newv = (gpointer) (((gsize) _oldv & G_DATALIST_FLAGS_MASK_INTERNAL) | (gsize) pointer);     \
  |  |  ------------------
  |  |  |  |  138|   446k|#define G_DATALIST_FLAGS_MASK_INTERNAL 0x7
  |  |  ------------------
  |  |  149|   446k|  } while (!g_atomic_pointer_compare_and_exchange ((void**) datalist, _oldv, _newv));   \
  |  |  ------------------
  |  |  |  |  210|   446k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   446k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  211|   446k|    G_STATIC_ASSERT (sizeof (oldval) == sizeof (gpointer));                  \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   446k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  212|   446k|    gpointer gapcae_oldval = (gpointer)(oldval);                             \
  |  |  |  |  213|   446k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   446k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  214|   446k|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:13): [Folded, False: 446k]
  |  |  |  |  ------------------
  |  |  |  |  215|   446k|    __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|   446k|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|   446k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|   446k|#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: 446k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  216|   446k|  }))
  |  |  ------------------
  |  |  |  Branch (149:12): [True: 0, False: 446k]
  |  |  ------------------
  |  |  150|   446k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   446k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 446k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  379|   446k|		      g_free (d);
  380|       |		      /* datalist may be situated in dataset, so must not be
  381|       |		       * unlocked after we free it
  382|       |		       */
  383|   446k|		      g_datalist_unlock (datalist);
  384|       |
  385|       |		      /* the dataset destruction *must* be done
  386|       |		       * prior to invocation of the data destroy function
  387|       |		       */
  388|   446k|		      if (dataset)
  ------------------
  |  Branch (388:13): [True: 0, False: 446k]
  ------------------
  389|      0|			g_dataset_destroy_internal (dataset);
  390|   446k|		    }
  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|   446k|		  if (old.destroy && !new_destroy_func)
  ------------------
  |  Branch (403:9): [True: 446k, False: 0]
  |  Branch (403:24): [True: 359k, False: 86.8k]
  ------------------
  404|   359k|		    {
  405|   359k|		      if (dataset)
  ------------------
  |  Branch (405:13): [True: 0, False: 359k]
  ------------------
  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|   359k|		      old.destroy (old.data);
  408|   359k|		      if (dataset)
  ------------------
  |  Branch (408:13): [True: 0, False: 359k]
  ------------------
  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|   359k|		      old.data = NULL;
  411|   359k|		    }
  412|       |
  413|   446k|		  return old.data;
  414|   446k|		}
  415|  16.2k|	      data++;
  416|  16.2k|	    }
  417|   462k|	}
  418|  4.55M|    }
  419|   446k|  else
  420|   446k|    {
  421|   446k|      old.data = NULL;
  422|   446k|      if (d)
  ------------------
  |  Branch (422:11): [True: 0, False: 446k]
  ------------------
  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|   446k|      old_d = d;
  462|   446k|      if (d == NULL)
  ------------------
  |  Branch (462:11): [True: 446k, False: 0]
  ------------------
  463|   446k|	{
  464|   446k|	  d = g_malloc (sizeof (GData));
  465|   446k|	  d->len = 0;
  466|   446k|	  d->alloc = 1;
  467|   446k|	}
  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|   446k|      if (old_d != d)
  ------------------
  |  Branch (473:11): [True: 446k, False: 0]
  ------------------
  474|   446k|	G_DATALIST_SET_POINTER (datalist, d);
  ------------------
  |  |  144|   446k|#define G_DATALIST_SET_POINTER(datalist, pointer)       G_STMT_START {                  \
  |  |  ------------------
  |  |  |  |  874|   446k|#define G_STMT_START  do
  |  |  ------------------
  |  |  145|   446k|  gpointer _oldv, _newv;                                                                \
  |  |  146|   446k|  do {                                                                                  \
  |  |  147|   446k|    _oldv = g_atomic_pointer_get (datalist);                                            \
  |  |  ------------------
  |  |  |  |  113|   446k|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   446k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|   446k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   446k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|   446k|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   446k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|   446k|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   446k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|   446k|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|   446k|    gapg_temp_newval;                                                      \
  |  |  |  |  119|   446k|  }))
  |  |  ------------------
  |  |  148|   446k|    _newv = (gpointer) (((gsize) _oldv & G_DATALIST_FLAGS_MASK_INTERNAL) | (gsize) pointer);     \
  |  |  ------------------
  |  |  |  |  138|   446k|#define G_DATALIST_FLAGS_MASK_INTERNAL 0x7
  |  |  ------------------
  |  |  149|   446k|  } while (!g_atomic_pointer_compare_and_exchange ((void**) datalist, _oldv, _newv));   \
  |  |  ------------------
  |  |  |  |  210|   446k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   446k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  211|   446k|    G_STATIC_ASSERT (sizeof (oldval) == sizeof (gpointer));                  \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   446k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  212|   446k|    gpointer gapcae_oldval = (gpointer)(oldval);                             \
  |  |  |  |  213|   446k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   446k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  214|   446k|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:13): [Folded, False: 446k]
  |  |  |  |  ------------------
  |  |  |  |  215|   446k|    __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|   446k|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|   446k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|   446k|#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: 446k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  216|   446k|  }))
  |  |  ------------------
  |  |  |  Branch (149:12): [True: 0, False: 446k]
  |  |  ------------------
  |  |  150|   446k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   446k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 446k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  475|       |
  476|   446k|      d->data[d->len].key = key_id;
  477|   446k|      d->data[d->len].data = new_data;
  478|   446k|      d->data[d->len].destroy = new_destroy_func;
  479|   446k|      d->len++;
  480|   446k|    }
  481|       |
  482|  4.55M|  g_datalist_unlock (datalist);
  483|       |
  484|  4.55M|  return NULL;
  485|       |
  486|  4.99M|}

g_getenv:
  252|  1.13M|{
  253|  1.13M|  g_return_val_if_fail (variable != NULL, NULL);
  ------------------
  |  |  643|  1.13M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.13M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.13M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.13M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.13M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.13M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.13M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.13M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.13M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.13M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.13M|   else                                         \
  |  |  |  |  |  | 1021|  1.13M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.13M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.13M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.13M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.13M|      { } \
  |  |  646|  1.13M|    else \
  |  |  647|  1.13M|      { \
  |  |  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.13M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.13M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.13M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  254|       |
  255|  1.13M|  return getenv (variable);
  256|  1.13M|}
g_setenv:
  293|  1.48k|{
  294|  1.48k|  gint result;
  295|       |#ifndef HAVE_SETENV
  296|       |  gchar *string;
  297|       |#endif
  298|       |
  299|  1.48k|  g_return_val_if_fail (variable != NULL, FALSE);
  ------------------
  |  |  643|  1.48k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.48k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.48k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.48k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.48k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.48k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.48k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.48k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.48k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.48k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.48k|   else                                         \
  |  |  |  |  |  | 1021|  1.48k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.48k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.48k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.48k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.48k|      { } \
  |  |  646|  1.48k|    else \
  |  |  647|  1.48k|      { \
  |  |  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.48k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.48k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.48k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  300|  1.48k|  g_return_val_if_fail (strchr (variable, '=') == NULL, FALSE);
  ------------------
  |  |  643|  1.48k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.48k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.48k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.48k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.48k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.48k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.48k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.48k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.48k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.48k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.48k|   else                                         \
  |  |  |  |  |  | 1021|  1.48k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.48k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.48k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.48k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.48k|      { } \
  |  |  646|  1.48k|    else \
  |  |  647|  1.48k|      { \
  |  |  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.48k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.48k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.48k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  301|  1.48k|  g_return_val_if_fail (value != NULL, FALSE);
  ------------------
  |  |  643|  1.48k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.48k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.48k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.48k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.48k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.48k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.48k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.48k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.48k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.48k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.48k|   else                                         \
  |  |  |  |  |  | 1021|  1.48k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.48k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.48k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.48k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.48k|      { } \
  |  |  646|  1.48k|    else \
  |  |  647|  1.48k|      { \
  |  |  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.48k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.48k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.48k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  302|       |
  303|  1.48k|#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.48k|  if (g_thread_n_created () > 0)
  ------------------
  |  Branch (306:7): [True: 0, False: 1.48k]
  ------------------
  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.48k|#endif
  309|       |
  310|  1.48k|#ifdef HAVE_SETENV
  311|  1.48k|  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.48k|  return result == 0;
  324|  1.48k|}

g_error_init:
  516|      2|{
  517|      2|  error_domain_ht = g_hash_table_new (NULL, NULL);
  518|      2|}
g_error_new_valist:
  749|     78|{
  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|     78|  g_warn_if_fail (domain != 0);
  ------------------
  |  |  541|     78|  do { \
  |  |  542|     78|    if G_LIKELY (expr) ; \
  |  |  ------------------
  |  |  |  | 1024|     78|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     78| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     78|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     78|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     78|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 78, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     78|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     78|   else                                         \
  |  |  |  |  |  | 1021|     78|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     78|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     78|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 78, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  543|     78|    else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, #expr); \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  544|     78|  } while (0)
  |  |  ------------------
  |  |  |  Branch (544:12): [Folded, False: 78]
  |  |  ------------------
  ------------------
  756|     78|  g_warn_if_fail (format != NULL);
  ------------------
  |  |  541|     78|  do { \
  |  |  542|     78|    if G_LIKELY (expr) ; \
  |  |  ------------------
  |  |  |  | 1024|     78|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     78| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     78|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     78|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     78|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 78, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     78|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     78|   else                                         \
  |  |  |  |  |  | 1021|     78|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     78|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     78|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 78, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  543|     78|    else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, #expr); \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  544|     78|  } while (0)
  |  |  ------------------
  |  |  |  Branch (544:12): [Folded, False: 78]
  |  |  ------------------
  ------------------
  757|       |
  758|       |  return g_error_new_steal (domain, code, g_strdup_vprintf (format, args), NULL);
  759|     78|}
g_error_free:
  824|     78|{
  825|     78|  gsize private_size;
  826|     78|  ErrorDomainInfo *info;
  827|     78|  guint8 *allocated;
  828|       |
  829|     78|  g_return_if_fail (error != NULL);
  ------------------
  |  |  630|     78|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     78|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     78|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     78|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     78| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     78|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     78|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     78|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 78, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     78|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     78|   else                                         \
  |  |  |  |  |  | 1021|     78|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     78|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     78|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 78, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     78|      { } \
  |  |  633|     78|    else \
  |  |  634|     78|      { \
  |  |  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|     78|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     78|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 78]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  830|       |
  831|     78|  g_rw_lock_reader_lock (&error_domain_global);
  832|     78|  info = error_domain_lookup (error->domain);
  833|     78|  if (info != NULL)
  ------------------
  |  Branch (833:7): [True: 0, False: 78]
  ------------------
  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|     78|  else
  842|     78|    {
  843|     78|      g_rw_lock_reader_unlock (&error_domain_global);
  844|     78|      private_size = 0;
  845|     78|    }
  846|       |
  847|     78|  g_free (error->message);
  848|     78|  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|     78|#ifdef ENABLE_VALGRIND
  853|     78|  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: 78]
  ------------------
  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|     78|  else
  863|     78|#endif
  864|     78|  g_slice_free1 (private_size + sizeof (GError), allocated);
  865|     78|}
g_error_matches:
  919|    156|{
  920|    156|  return error &&
  ------------------
  |  Branch (920:10): [True: 156, False: 0]
  ------------------
  921|    156|    error->domain == domain &&
  ------------------
  |  Branch (921:5): [True: 156, False: 0]
  ------------------
  922|    156|    error->code == code;
  ------------------
  |  Branch (922:5): [True: 0, False: 156]
  ------------------
  923|    156|}
g_set_error:
  946|    470|{
  947|    470|  GError *new;
  948|       |
  949|    470|  va_list args;
  950|       |
  951|    470|  if (err == NULL)
  ------------------
  |  Branch (951:7): [True: 392, False: 78]
  ------------------
  952|    392|    return;
  953|       |
  954|    470|  va_start (args, format);
  955|     78|  new = g_error_new_valist (domain, code, format, args);
  956|     78|  va_end (args);
  957|       |
  958|     78|  if (*err == NULL)
  ------------------
  |  Branch (958:7): [True: 78, False: 0]
  ------------------
  959|     78|    *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|     78|}
g_set_error_literal:
  987|     73|{
  988|     73|  if (err == NULL)
  ------------------
  |  Branch (988:7): [True: 73, False: 0]
  ------------------
  989|     73|    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|     78|{
 1015|     78|  g_return_if_fail (src != NULL);
  ------------------
  |  |  630|     78|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     78|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     78|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     78|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     78| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     78|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     78|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     78|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 78, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     78|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     78|   else                                         \
  |  |  |  |  |  | 1021|     78|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     78|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     78|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 78, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     78|      { } \
  |  |  633|     78|    else \
  |  |  634|     78|      { \
  |  |  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|     78|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     78|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 78]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1016|       | 
 1017|     78|  if (dest == NULL)
  ------------------
  |  Branch (1017:7): [True: 78, False: 0]
  ------------------
 1018|     78|    {
 1019|     78|      g_error_free (src);
 1020|     78|      return;
 1021|     78|    }
 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|     78|}
g_prefix_error:
 1086|     93|{
 1087|     93|  if (err && *err)
  ------------------
  |  Branch (1087:7): [True: 78, False: 15]
  |  Branch (1087:14): [True: 78, False: 0]
  ------------------
 1088|     78|    {
 1089|     78|      va_list ap;
 1090|       |
 1091|     78|      va_start (ap, format);
 1092|     78|      g_error_add_prefix (&(*err)->message, format, ap);
 1093|       |      va_end (ap);
 1094|     78|    }
 1095|     93|}
gerror.c:g_error_new_steal:
  714|     78|{
  715|     78|  ErrorDomainInfo info;
  716|     78|  GError *error = g_error_allocate (domain, &info);
  717|       |
  718|     78|  error->domain = domain;
  719|     78|  error->code = code;
  720|     78|  error->message = message;
  721|       |
  722|     78|  if (info.init != NULL)
  ------------------
  |  Branch (722:7): [True: 0, False: 78]
  ------------------
  723|      0|    info.init (error);
  724|     78|  if (out_info != NULL)
  ------------------
  |  Branch (724:7): [True: 0, False: 78]
  ------------------
  725|      0|    *out_info = info;
  726|       |
  727|     78|  return error;
  728|     78|}
gerror.c:g_error_allocate:
  666|     78|{
  667|     78|  guint8 *allocated;
  668|     78|  GError *error;
  669|     78|  ErrorDomainInfo *info;
  670|     78|  gsize private_size;
  671|       |
  672|     78|  g_rw_lock_reader_lock (&error_domain_global);
  673|     78|  info = error_domain_lookup (domain);
  674|     78|  if (info != NULL)
  ------------------
  |  Branch (674:7): [True: 0, False: 78]
  ------------------
  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|     78|  else
  682|     78|    {
  683|     78|      g_rw_lock_reader_unlock (&error_domain_global);
  684|     78|      if (out_info != NULL)
  ------------------
  |  Branch (684:11): [True: 78, False: 0]
  ------------------
  685|     78|        memset (out_info, 0, sizeof (*out_info));
  686|     78|      private_size = 0;
  687|     78|    }
  688|       |  /* See comments in g_type_create_instance in gtype.c to see what
  689|       |   * this magic is about.
  690|       |   */
  691|     78|#ifdef ENABLE_VALGRIND
  692|     78|  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: 78]
  ------------------
  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|     78|  else
  701|     78|#endif
  702|     78|    allocated = g_slice_alloc0 (private_size + sizeof (GError));
  703|       |
  704|     78|  error = (GError *) (allocated + private_size);
  705|     78|  return error;
  706|     78|}
gerror.c:error_domain_lookup:
  533|    156|{
  534|    156|  return g_hash_table_lookup (error_domain_ht,
  535|    156|                              GUINT_TO_POINTER (domain));
  ------------------
  |  |  102|    156|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  536|    156|}
gerror.c:g_error_add_prefix:
 1056|     78|{
 1057|     78|  gchar *oldstring;
 1058|     78|  gchar *prefix;
 1059|       |
 1060|     78|  prefix = g_strdup_vprintf (format, ap);
 1061|     78|  oldstring = *string;
 1062|       |  *string = g_strconcat (prefix, oldstring, NULL);
 1063|     78|  g_free (oldstring);
 1064|     78|  g_free (prefix);
 1065|     78|}

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.41k|{
 1069|  1.41k|  GHashTable *hash_table;
 1070|       |
 1071|  1.41k|  hash_table = g_slice_new (GHashTable);
  ------------------
  |  |   46|  1.41k|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  ------------------
 1072|  1.41k|  g_atomic_ref_count_init (&hash_table->ref_count);
 1073|  1.41k|  hash_table->nnodes             = 0;
 1074|  1.41k|  hash_table->noccupied          = 0;
 1075|  1.41k|  hash_table->hash_func          = hash_func ? hash_func : g_direct_hash;
  ------------------
  |  Branch (1075:36): [True: 1.41k, False: 2]
  ------------------
 1076|  1.41k|  hash_table->key_equal_func     = key_equal_func;
 1077|  1.41k|#ifndef G_DISABLE_ASSERT
 1078|  1.41k|  hash_table->version            = 0;
 1079|  1.41k|#endif
 1080|  1.41k|  hash_table->key_destroy_func   = key_destroy_func;
 1081|  1.41k|  hash_table->value_destroy_func = value_destroy_func;
 1082|       |
 1083|  1.41k|  g_hash_table_setup_storage (hash_table);
 1084|       |
 1085|  1.41k|  return hash_table;
 1086|  1.41k|}
g_hash_table_unref:
 1456|  1.40k|{
 1457|  1.40k|  g_return_if_fail (hash_table != NULL);
  ------------------
  |  |  630|  1.40k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.40k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.40k|      { } \
  |  |  633|  1.40k|    else \
  |  |  634|  1.40k|      { \
  |  |  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.40k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.40k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.40k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1458|       |
 1459|  1.40k|  if (g_atomic_ref_count_dec (&hash_table->ref_count))
  ------------------
  |  Branch (1459:7): [True: 1.40k, False: 0]
  ------------------
 1460|  1.40k|    {
 1461|  1.40k|      g_hash_table_remove_all_nodes (hash_table, TRUE, TRUE);
  ------------------
  |  |  818|  1.40k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.40k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                    g_hash_table_remove_all_nodes (hash_table, TRUE, TRUE);
  ------------------
  |  |  818|  1.40k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.40k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1462|  1.40k|      if (hash_table->keys != hash_table->values)
  ------------------
  |  Branch (1462:11): [True: 0, False: 1.40k]
  ------------------
 1463|      0|        g_free (hash_table->values);
 1464|  1.40k|      g_free (hash_table->keys);
 1465|  1.40k|      g_free (hash_table->hashes);
 1466|  1.40k|      g_slice_free (GHashTable, hash_table);
  ------------------
  |  |   79|  1.40k|#define g_slice_free(type, mem)                                 \
  |  |  ------------------
  |  |  |  |  874|  1.40k|#define G_STMT_START  do
  |  |  ------------------
  |  |   80|  1.40k|G_STMT_START {                                                  \
  |  |   81|  1.40k|  if (1) g_slice_free1 (sizeof (type), (mem));			\
  |  |  ------------------
  |  |  |  Branch (81:7): [True: 1.40k, Folded]
  |  |  ------------------
  |  |   82|  1.40k|  else   (void) ((type*) 0 == (mem)); 				\
  |  |   83|  1.40k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.40k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.40k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1467|  1.40k|    }
 1468|  1.40k|}
g_hash_table_lookup:
 1505|  2.07M|{
 1506|  2.07M|  guint node_index;
 1507|  2.07M|  guint node_hash;
 1508|       |
 1509|  2.07M|  g_return_val_if_fail (hash_table != NULL, NULL);
  ------------------
  |  |  643|  2.07M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.07M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.07M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.07M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.07M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.07M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.07M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.07M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.07M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.07M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.07M|   else                                         \
  |  |  |  |  |  | 1021|  2.07M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.07M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.07M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.07M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.07M|      { } \
  |  |  646|  2.07M|    else \
  |  |  647|  2.07M|      { \
  |  |  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.07M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.07M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.07M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1510|       |
 1511|  2.07M|  node_index = g_hash_table_lookup_node (hash_table, key, &node_hash);
 1512|       |
 1513|  2.07M|  return HASH_IS_REAL (hash_table->hashes[node_index])
  ------------------
  |  |  242|  2.07M|#define HASH_IS_REAL(h_) ((h_) >= 2)
  |  |  ------------------
  |  |  |  Branch (242:26): [True: 18.7k, False: 2.05M]
  |  |  ------------------
  ------------------
 1514|  2.07M|    ? g_hash_table_fetch_key_or_value (hash_table->values, node_index, hash_table->have_big_values)
 1515|       |    : NULL;
 1516|  2.07M|}
g_hash_table_insert:
 1628|  3.65k|{
 1629|  3.65k|  return g_hash_table_insert_internal (hash_table, key, value, FALSE);
  ------------------
  |  |  814|  3.65k|#define	FALSE	(0)
  ------------------
 1630|  3.65k|}
g_hash_table_add:
 1688|  2.99k|{
 1689|  2.99k|  return g_hash_table_insert_internal (hash_table, key, key, TRUE);
  ------------------
  |  |  818|  2.99k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  2.99k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1690|  2.99k|}
g_hash_table_remove:
 1772|  3.70k|{
 1773|  3.70k|  return g_hash_table_remove_internal (hash_table, key, TRUE);
  ------------------
  |  |  818|  3.70k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  3.70k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1774|  3.70k|}
g_hash_table_foreach:
 2045|      9|{
 2046|      9|  gsize i;
 2047|      9|#ifndef G_DISABLE_ASSERT
 2048|      9|  gint version;
 2049|      9|#endif
 2050|       |
 2051|      9|  g_return_if_fail (hash_table != NULL);
  ------------------
  |  |  630|      9|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      9|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      9|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      9|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      9| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      9|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      9|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      9|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      9|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      9|   else                                         \
  |  |  |  |  |  | 1021|      9|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      9|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      9|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      9|      { } \
  |  |  633|      9|    else \
  |  |  634|      9|      { \
  |  |  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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      9|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2052|      9|  g_return_if_fail (func != NULL);
  ------------------
  |  |  630|      9|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      9|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      9|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      9|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      9| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      9|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      9|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      9|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      9|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      9|   else                                         \
  |  |  |  |  |  | 1021|      9|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      9|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      9|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      9|      { } \
  |  |  633|      9|    else \
  |  |  634|      9|      { \
  |  |  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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      9|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2053|       |
 2054|      9|#ifndef G_DISABLE_ASSERT
 2055|      9|  version = hash_table->version;
 2056|      9|#endif
 2057|       |
 2058|    537|  for (i = 0; i < hash_table->size; i++)
  ------------------
  |  Branch (2058:15): [True: 528, False: 9]
  ------------------
 2059|    528|    {
 2060|    528|      guint node_hash = hash_table->hashes[i];
 2061|    528|      gpointer node_key = g_hash_table_fetch_key_or_value (hash_table->keys, i, hash_table->have_big_keys);
 2062|    528|      gpointer node_value = g_hash_table_fetch_key_or_value (hash_table->values, i, hash_table->have_big_values);
 2063|       |
 2064|    528|      if (HASH_IS_REAL (node_hash))
  ------------------
  |  |  242|    528|#define HASH_IS_REAL(h_) ((h_) >= 2)
  |  |  ------------------
  |  |  |  Branch (242:26): [True: 293, False: 235]
  |  |  ------------------
  ------------------
 2065|    293|        (* func) (node_key, node_value, user_data);
 2066|       |
 2067|    528|#ifndef G_DISABLE_ASSERT
 2068|    528|      g_return_if_fail (version == hash_table->version);
  ------------------
  |  |  630|    528|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    528|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    528|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    528|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    528| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    528|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    528|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    528|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 528, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    528|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    528|   else                                         \
  |  |  |  |  |  | 1021|    528|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    528|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    528|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 528, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    528|      { } \
  |  |  633|    528|    else \
  |  |  634|    528|      { \
  |  |  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|    528|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    528|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 528]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2069|    528|#endif
 2070|    528|    }
 2071|      9|}
g_str_equal:
 2299|  6.08k|{
 2300|  6.08k|  const gchar *string1 = v1;
 2301|  6.08k|  const gchar *string2 = v2;
 2302|       |
 2303|  6.08k|  return strcmp (string1, string2) == 0;
 2304|  6.08k|}
g_str_hash:
 2329|  9.40k|{
 2330|  9.40k|  const signed char *p;
 2331|  9.40k|  guint32 h = 5381;
 2332|       |
 2333|  55.1k|  for (p = v; *p != '\0'; p++)
  ------------------
  |  Branch (2333:15): [True: 45.7k, False: 9.40k]
  ------------------
 2334|  45.7k|    h = (h << 5) + h + *p;
 2335|       |
 2336|  9.40k|  return h;
 2337|  9.40k|}
g_direct_hash:
 2355|  2.06M|{
 2356|  2.06M|  return GPOINTER_TO_UINT (v);
  ------------------
  |  |   99|  2.06M|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 2357|  2.06M|}
g_int_hash:
 2421|     44|{
 2422|     44|  return *(const gint*) v;
 2423|     44|}
ghash.c:g_hash_table_setup_storage:
  567|  1.41k|{
  568|  1.41k|  gboolean small = FALSE;
  ------------------
  |  |  814|  1.41k|#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.41k|#ifdef USE_SMALL_ARRAYS
  576|  1.41k|  small = TRUE;
  ------------------
  |  |  818|  1.41k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.41k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  577|       |
  578|  1.41k|# ifdef ENABLE_VALGRIND
  579|  1.41k|  if (RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|  1.41k|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|  1.41k|    __extension__                                                 \
  |  |  |  |  414|  1.41k|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|  1.41k|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|  1.41k|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|  1.41k|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|  1.41k|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|  1.41k|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|  1.41k|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|  1.41k|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|  1.41k|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|  1.41k|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|  1.41k|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|  1.41k|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|  1.41k|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|  1.41k|                     : "cc", "memory"                             \
  |  |  |  |  428|  1.41k|                    );                                            \
  |  |  |  |  429|  1.41k|    _zzq_result;                                                  \
  |  |  |  |  430|  1.41k|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 1.41k]
  |  |  ------------------
  |  | 6216|  1.41k|                                    VG_USERREQ__RUNNING_ON_VALGRIND,  \
  |  | 6217|  1.41k|                                    0, 0, 0, 0, 0)                    \
  ------------------
  580|      0|    small = FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  581|  1.41k|# endif
  582|  1.41k|#endif
  583|       |
  584|  1.41k|  g_hash_table_set_shift (hash_table, HASH_TABLE_MIN_SHIFT);
  ------------------
  |  |  236|  1.41k|#define HASH_TABLE_MIN_SHIFT 3  /* 1 << 3 == 8 buckets */
  ------------------
  585|       |
  586|  1.41k|  hash_table->have_big_keys = !small;
  587|  1.41k|  hash_table->have_big_values = !small;
  588|       |
  589|  1.41k|  hash_table->keys   = g_hash_table_realloc_key_or_value_array (NULL, hash_table->size, hash_table->have_big_keys);
  590|  1.41k|  hash_table->values = hash_table->keys;
  591|       |  hash_table->hashes = g_new0 (guint, hash_table->size);
  ------------------
  |  |  307|  1.41k|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|  1.41k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.41k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|  1.41k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|  1.41k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|  1.41k|	  gpointer __p;						\
  |  |  |  |  239|  1.41k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 1.41k]
  |  |  |  |  ------------------
  |  |  |  |  240|  1.41k|	    __p = g_##func (__n);				\
  |  |  |  |  241|  1.41k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 1.41k]
  |  |  |  |  ------------------
  |  |  |  |  242|  1.41k|	           (__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.41k|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|  1.41k|	  else							\
  |  |  |  |  245|  1.41k|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|  1.41k|	  __p;							\
  |  |  |  |  247|  1.41k|	}))
  |  |  ------------------
  ------------------
  592|  1.41k|}
ghash.c:g_hash_table_set_shift:
  342|  1.43k|{
  343|  1.43k|  hash_table->size = 1 << shift;
  344|  1.43k|  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.43k|  g_assert ((hash_table->size & (hash_table->size - 1)) == 0);
  ------------------
  |  |  231|  1.43k|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.43k|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|  1.43k|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|  1.43k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.43k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.43k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.43k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.43k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.43k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.43k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.43k|   else                                         \
  |  |  |  |  |  | 1021|  1.43k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.43k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.43k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 1.43k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|  1.43k|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|  1.43k|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.43k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.43k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  351|  1.43k|  hash_table->mask = hash_table->size - 1;
  352|  1.43k|}
ghash.c:g_hash_table_realloc_key_or_value_array:
  378|  1.45k|{
  379|  1.45k|#ifdef USE_SMALL_ARRAYS
  380|  1.45k|  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.42k|#define SMALL_ENTRY_SIZE (SIZEOF_INT)
  |  |  ------------------
  |  |  |  |  380|  1.42k|#define SIZEOF_INT 4
  |  |  ------------------
  ------------------
  |  Branch (380:32): [True: 31, False: 1.42k]
  ------------------
  381|       |#else
  382|       |  return g_renew (gpointer, a, size);
  383|       |#endif
  384|  1.45k|}
ghash.c:g_hash_table_fetch_key_or_value:
  388|  54.6k|{
  389|       |#ifndef USE_SMALL_ARRAYS
  390|       |  is_big = TRUE;
  391|       |#endif
  392|  54.6k|  return is_big ? *(((gpointer *) a) + index) : GUINT_TO_POINTER (*(((guint *) a) + index));
  ------------------
  |  |  102|  6.08k|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  |  Branch (392:10): [True: 48.6k, False: 6.08k]
  ------------------
  393|  54.6k|}
ghash.c:g_hash_table_insert_node:
 1272|  6.65k|{
 1273|  6.65k|  gboolean already_exists;
 1274|  6.65k|  guint old_hash;
 1275|  6.65k|  gpointer key_to_free = NULL;
 1276|  6.65k|  gpointer key_to_keep = NULL;
 1277|  6.65k|  gpointer value_to_free = NULL;
 1278|       |
 1279|  6.65k|  old_hash = hash_table->hashes[node_index];
 1280|  6.65k|  already_exists = HASH_IS_REAL (old_hash);
  ------------------
  |  |  242|  6.65k|#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|  6.65k|  if (already_exists)
  ------------------
  |  Branch (1300:7): [True: 0, False: 6.65k]
  ------------------
 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|  6.65k|  else
 1320|  6.65k|    {
 1321|  6.65k|      hash_table->hashes[node_index] = key_hash;
 1322|  6.65k|      key_to_keep = new_key;
 1323|  6.65k|    }
 1324|       |
 1325|       |  /* Resize key/value arrays and split table as necessary */
 1326|  6.65k|  g_hash_table_ensure_keyval_fits (hash_table, key_to_keep, new_value);
 1327|  6.65k|  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|  6.65k|  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|  6.65k|  if (!already_exists)
  ------------------
  |  Branch (1333:7): [True: 6.65k, False: 0]
  ------------------
 1334|  6.65k|    {
 1335|  6.65k|      hash_table->nnodes++;
 1336|       |
 1337|  6.65k|      if (HASH_IS_UNUSED (old_hash))
  ------------------
  |  |  240|  6.65k|#define HASH_IS_UNUSED(h_) ((h_) == UNUSED_HASH_VALUE)
  |  |  ------------------
  |  |  |  |  238|  6.65k|#define UNUSED_HASH_VALUE 0
  |  |  ------------------
  |  |  |  Branch (240:28): [True: 2.96k, False: 3.68k]
  |  |  ------------------
  ------------------
 1338|  2.96k|        {
 1339|       |          /* We replaced an empty node, and not a tombstone */
 1340|  2.96k|          hash_table->noccupied++;
 1341|  2.96k|          g_hash_table_maybe_resize (hash_table);
 1342|  2.96k|        }
 1343|       |
 1344|  6.65k|#ifndef G_DISABLE_ASSERT
 1345|  6.65k|      hash_table->version++;
 1346|  6.65k|#endif
 1347|  6.65k|    }
 1348|       |
 1349|  6.65k|  if (already_exists)
  ------------------
  |  Branch (1349:7): [True: 0, False: 6.65k]
  ------------------
 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|  6.65k|  return !already_exists;
 1358|  6.65k|}
ghash.c:g_hash_table_ensure_keyval_fits:
  954|  6.65k|{
  955|  6.65k|  gboolean is_a_set = (hash_table->keys == hash_table->values);
  956|       |
  957|  6.65k|#ifdef USE_SMALL_ARRAYS
  958|       |
  959|       |  /* Convert from set to map? */
  960|  6.65k|  if (is_a_set)
  ------------------
  |  Branch (960:7): [True: 3.68k, False: 2.96k]
  ------------------
  961|  3.68k|    {
  962|  3.68k|      if (hash_table->have_big_keys)
  ------------------
  |  Branch (962:11): [True: 3.01k, False: 673]
  ------------------
  963|  3.01k|        {
  964|  3.01k|          if (key != value)
  ------------------
  |  Branch (964:15): [True: 0, False: 3.01k]
  ------------------
  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.01k|          return;
  968|  3.01k|        }
  969|    673|      else
  970|    673|        {
  971|    673|          if (key != value)
  ------------------
  |  Branch (971:15): [True: 670, False: 3]
  ------------------
  972|    670|            {
  973|    670|              hash_table->values = g_memdup2 (hash_table->keys, sizeof (guint) * hash_table->size);
  974|    670|              is_a_set = FALSE;
  ------------------
  |  |  814|    670|#define	FALSE	(0)
  ------------------
  975|    670|            }
  976|    673|        }
  977|  3.68k|    }
  978|       |
  979|       |  /* Make keys big? */
  980|  3.63k|  if (!hash_table->have_big_keys)
  ------------------
  |  Branch (980:7): [True: 673, False: 2.96k]
  ------------------
  981|    673|    {
  982|    673|      hash_table->have_big_keys = g_hash_table_maybe_make_big_keys_or_values (&hash_table->keys, key, hash_table->size);
  983|       |
  984|    673|      if (is_a_set)
  ------------------
  |  Branch (984:11): [True: 3, False: 670]
  ------------------
  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|    673|    }
  990|       |
  991|       |  /* Make values big? */
  992|  3.63k|  if (!is_a_set && !hash_table->have_big_values)
  ------------------
  |  Branch (992:7): [True: 3.63k, False: 3]
  |  Branch (992:20): [True: 904, False: 2.72k]
  ------------------
  993|    904|    {
  994|    904|      hash_table->have_big_values = g_hash_table_maybe_make_big_keys_or_values (&hash_table->values, value, hash_table->size);
  995|    904|    }
  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.63k|}
ghash.c:g_hash_table_maybe_make_big_keys_or_values:
  928|  1.57k|{
  929|  1.57k|  if (entry_is_big (v))
  ------------------
  |  Branch (929:7): [True: 1.34k, False: 236]
  ------------------
  930|  1.34k|    {
  931|  1.34k|      guint *a = (guint *) *a_p;
  932|  1.34k|      gpointer *a_new;
  933|  1.34k|      gint i;
  934|       |
  935|  1.34k|      a_new = g_new (gpointer, ht_size);
  ------------------
  |  |  290|  1.34k|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|  1.34k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.34k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|  1.34k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|  1.34k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|  1.34k|	  gpointer __p;						\
  |  |  |  |  239|  1.34k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 1.34k]
  |  |  |  |  ------------------
  |  |  |  |  240|  1.34k|	    __p = g_##func (__n);				\
  |  |  |  |  241|  1.34k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 1.34k]
  |  |  |  |  ------------------
  |  |  |  |  242|  1.34k|	           (__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.34k|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|  1.34k|	  else							\
  |  |  |  |  245|  1.34k|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|  1.34k|	  __p;							\
  |  |  |  |  247|  1.34k|	}))
  |  |  ------------------
  ------------------
  936|       |
  937|  12.0k|      for (i = 0; i < ht_size; i++)
  ------------------
  |  Branch (937:19): [True: 10.7k, False: 1.34k]
  ------------------
  938|  10.7k|        {
  939|  10.7k|          a_new[i] = GUINT_TO_POINTER (a[i]);
  ------------------
  |  |  102|  10.7k|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  940|  10.7k|        }
  941|       |
  942|  1.34k|      g_free (a);
  943|  1.34k|      *a_p = a_new;
  944|  1.34k|      return TRUE;
  ------------------
  |  |  818|  1.34k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.34k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  945|  1.34k|    }
  946|       |
  947|    236|  return FALSE;
  ------------------
  |  |  814|    236|#define	FALSE	(0)
  ------------------
  948|  1.57k|}
ghash.c:entry_is_big:
  922|  1.57k|{
  923|  1.57k|  return (((guintptr) v) >> ((BIG_ENTRY_SIZE - SMALL_ENTRY_SIZE) * 8)) != 0;
  ------------------
  |  |  249|  1.57k|#define BIG_ENTRY_SIZE (SIZEOF_VOID_P)
  |  |  ------------------
  |  |  |  |  392|  1.57k|#define SIZEOF_VOID_P 8
  |  |  ------------------
  ------------------
                return (((guintptr) v) >> ((BIG_ENTRY_SIZE - SMALL_ENTRY_SIZE) * 8)) != 0;
  ------------------
  |  |  250|  1.57k|#define SMALL_ENTRY_SIZE (SIZEOF_INT)
  |  |  ------------------
  |  |  |  |  380|  1.57k|#define SIZEOF_INT 4
  |  |  ------------------
  ------------------
  924|  1.57k|}
ghash.c:g_hash_table_remove_all_nodes:
  616|  1.40k|{
  617|  1.40k|  int i;
  618|  1.40k|  gpointer key;
  619|  1.40k|  gpointer value;
  620|  1.40k|  gint old_size;
  621|  1.40k|  gpointer *old_keys;
  622|  1.40k|  gpointer *old_values;
  623|  1.40k|  guint    *old_hashes;
  624|  1.40k|  gboolean  old_have_big_keys;
  625|  1.40k|  gboolean  old_have_big_values;
  626|       |
  627|       |  /* If the hash table is already empty, there is nothing to be done. */
  628|  1.40k|  if (hash_table->nnodes == 0)
  ------------------
  |  Branch (628:7): [True: 740, False: 664]
  ------------------
  629|    740|    return;
  630|       |
  631|    664|  hash_table->nnodes = 0;
  632|    664|  hash_table->noccupied = 0;
  633|       |
  634|       |  /* Easy case: no callbacks, so we just zero out the arrays */
  635|    664|  if (!notify ||
  ------------------
  |  Branch (635:7): [True: 0, False: 664]
  ------------------
  636|    664|      (hash_table->key_destroy_func == NULL &&
  ------------------
  |  Branch (636:8): [True: 0, False: 664]
  ------------------
  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|    664|  old_size = hash_table->size;
  676|    664|  old_have_big_keys = hash_table->have_big_keys;
  677|    664|  old_have_big_values = hash_table->have_big_values;
  678|    664|  old_keys   = g_steal_pointer (&hash_table->keys);
  ------------------
  |  |  222|    664|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  679|    664|  old_values = g_steal_pointer (&hash_table->values);
  ------------------
  |  |  222|    664|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  680|    664|  old_hashes = g_steal_pointer (&hash_table->hashes);
  ------------------
  |  |  222|    664|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  681|       |
  682|    664|  if (!destruction)
  ------------------
  |  Branch (682:7): [True: 0, False: 664]
  ------------------
  683|       |    /* Any accesses will see an empty table */
  684|      0|    g_hash_table_setup_storage (hash_table);
  685|    664|  else
  686|       |    /* Will cause a quick crash on any attempted access */
  687|    664|    hash_table->size = hash_table->mod = hash_table->mask = 0;
  688|       |
  689|       |  /* Now do the actual destroy notifies */
  690|  5.97k|  for (i = 0; i < old_size; i++)
  ------------------
  |  Branch (690:15): [True: 5.31k, False: 664]
  ------------------
  691|  5.31k|    {
  692|  5.31k|      if (HASH_IS_REAL (old_hashes[i]))
  ------------------
  |  |  242|  5.31k|#define HASH_IS_REAL(h_) ((h_) >= 2)
  |  |  ------------------
  |  |  |  Branch (242:26): [True: 2.52k, False: 2.79k]
  |  |  ------------------
  ------------------
  693|  2.52k|        {
  694|  2.52k|          key = g_hash_table_fetch_key_or_value (old_keys, i, old_have_big_keys);
  695|  2.52k|          value = g_hash_table_fetch_key_or_value (old_values, i, old_have_big_values);
  696|       |
  697|  2.52k|          old_hashes[i] = UNUSED_HASH_VALUE;
  ------------------
  |  |  238|  2.52k|#define UNUSED_HASH_VALUE 0
  ------------------
  698|       |
  699|  2.52k|          g_hash_table_assign_key_or_value (old_keys, i, old_have_big_keys, NULL);
  700|  2.52k|          g_hash_table_assign_key_or_value (old_values, i, old_have_big_values, NULL);
  701|       |
  702|  2.52k|          if (hash_table->key_destroy_func != NULL)
  ------------------
  |  Branch (702:15): [True: 2.52k, False: 0]
  ------------------
  703|  2.52k|            hash_table->key_destroy_func (key);
  704|       |
  705|  2.52k|          if (hash_table->value_destroy_func != NULL)
  ------------------
  |  Branch (705:15): [True: 2.52k, False: 0]
  ------------------
  706|  2.52k|            hash_table->value_destroy_func (value);
  707|  2.52k|        }
  708|  5.31k|    }
  709|       |
  710|       |  /* Destroy old storage space. */
  711|    664|  if (old_keys != old_values)
  ------------------
  |  Branch (711:7): [True: 664, False: 0]
  ------------------
  712|    664|    g_free (old_values);
  713|       |
  714|    664|  g_free (old_keys);
  715|    664|  g_free (old_hashes);
  716|    664|}
ghash.c:g_hash_table_lookup_node:
  464|  2.08M|{
  465|  2.08M|  guint node_index;
  466|  2.08M|  guint node_hash;
  467|  2.08M|  guint hash_value;
  468|  2.08M|  guint first_tombstone = 0;
  469|  2.08M|  gboolean have_tombstone = FALSE;
  ------------------
  |  |  814|  2.08M|#define	FALSE	(0)
  ------------------
  470|  2.08M|  guint step = 0;
  471|       |
  472|  2.08M|  hash_value = hash_table->hash_func (key);
  473|  2.08M|  if (G_UNLIKELY (!HASH_IS_REAL (hash_value)))
  ------------------
  |  | 1025|  2.08M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  2.08M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  2.08M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  2.08M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  2.08M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 2, False: 2.08M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  2.08M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  2.08M|   else                                         \
  |  |  |  | 1021|  2.08M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  2.08M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  2.08M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 2, False: 2.08M]
  |  |  ------------------
  ------------------
  474|      2|    hash_value = 2;
  475|       |
  476|  2.08M|  *hash_return = hash_value;
  477|       |
  478|  2.08M|  node_index = g_hash_table_hash_to_index (hash_table, hash_value);
  479|  2.08M|  node_hash = hash_table->hashes[node_index];
  480|       |
  481|  4.16M|  while (!HASH_IS_UNUSED (node_hash))
  ------------------
  |  |  240|  4.16M|#define HASH_IS_UNUSED(h_) ((h_) == UNUSED_HASH_VALUE)
  |  |  ------------------
  |  |  |  |  238|  4.16M|#define UNUSED_HASH_VALUE 0
  |  |  ------------------
  ------------------
  |  Branch (481:10): [True: 2.10M, False: 2.06M]
  ------------------
  482|  2.10M|    {
  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.10M|      if (node_hash == hash_value)
  ------------------
  |  Branch (487:11): [True: 22.4k, False: 2.07M]
  ------------------
  488|  22.4k|        {
  489|  22.4k|          gpointer node_key = g_hash_table_fetch_key_or_value (hash_table->keys, node_index, hash_table->have_big_keys);
  490|       |
  491|  22.4k|          if (hash_table->key_equal_func)
  ------------------
  |  Branch (491:15): [True: 11.7k, False: 10.6k]
  ------------------
  492|  11.7k|            {
  493|  11.7k|              if (hash_table->key_equal_func (node_key, key))
  ------------------
  |  Branch (493:19): [True: 11.7k, False: 1]
  ------------------
  494|  11.7k|                return node_index;
  495|  11.7k|            }
  496|  10.6k|          else if (node_key == key)
  ------------------
  |  Branch (496:20): [True: 10.6k, False: 0]
  ------------------
  497|  10.6k|            {
  498|  10.6k|              return node_index;
  499|  10.6k|            }
  500|  22.4k|        }
  501|  2.07M|      else if (HASH_IS_TOMBSTONE (node_hash) && !have_tombstone)
  ------------------
  |  |  241|  4.15M|#define HASH_IS_TOMBSTONE(h_) ((h_) == TOMBSTONE_HASH_VALUE)
  |  |  ------------------
  |  |  |  |  239|  2.07M|#define TOMBSTONE_HASH_VALUE 1
  |  |  ------------------
  |  |  |  Branch (241:31): [True: 1.69M, False: 380k]
  |  |  ------------------
  ------------------
  |  Branch (501:49): [True: 1.08M, False: 614k]
  ------------------
  502|  1.08M|        {
  503|  1.08M|          first_tombstone = node_index;
  504|  1.08M|          have_tombstone = TRUE;
  ------------------
  |  |  818|  1.08M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.08M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  505|  1.08M|        }
  506|       |
  507|  2.07M|      step++;
  508|  2.07M|      node_index += step;
  509|  2.07M|      node_index &= hash_table->mask;
  510|  2.07M|      node_hash = hash_table->hashes[node_index];
  511|  2.07M|    }
  512|       |
  513|  2.06M|  if (have_tombstone)
  ------------------
  |  Branch (513:7): [True: 1.08M, False: 981k]
  ------------------
  514|  1.08M|    return first_tombstone;
  515|       |
  516|   981k|  return node_index;
  517|  2.06M|}
ghash.c:g_hash_table_hash_to_index:
  429|  2.08M|{
  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.08M|  return (hash * 11) % hash_table->mod;
  435|  2.08M|}
ghash.c:g_hash_table_insert_internal:
 1592|  6.65k|{
 1593|  6.65k|  guint key_hash;
 1594|  6.65k|  guint node_index;
 1595|       |
 1596|  6.65k|  g_return_val_if_fail (hash_table != NULL, FALSE);
  ------------------
  |  |  643|  6.65k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  6.65k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  6.65k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  6.65k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  6.65k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  6.65k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  6.65k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  6.65k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 6.65k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  6.65k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  6.65k|   else                                         \
  |  |  |  |  |  | 1021|  6.65k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  6.65k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  6.65k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 6.65k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  6.65k|      { } \
  |  |  646|  6.65k|    else \
  |  |  647|  6.65k|      { \
  |  |  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.65k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  6.65k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 6.65k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1597|       |
 1598|  6.65k|  node_index = g_hash_table_lookup_node (hash_table, key, &key_hash);
 1599|       |
 1600|  6.65k|  return g_hash_table_insert_node (hash_table, node_index, key_hash, key, value, keep_new_key, FALSE);
  ------------------
  |  |  814|  6.65k|#define	FALSE	(0)
  ------------------
 1601|  6.65k|}
ghash.c:g_hash_table_remove_internal:
 1734|  3.70k|{
 1735|  3.70k|  guint node_index;
 1736|  3.70k|  guint node_hash;
 1737|       |
 1738|  3.70k|  g_return_val_if_fail (hash_table != NULL, FALSE);
  ------------------
  |  |  643|  3.70k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.70k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.70k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.70k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.70k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.70k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.70k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.70k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.70k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.70k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.70k|   else                                         \
  |  |  |  |  |  | 1021|  3.70k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.70k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.70k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.70k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.70k|      { } \
  |  |  646|  3.70k|    else \
  |  |  647|  3.70k|      { \
  |  |  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.70k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.70k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.70k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1739|       |
 1740|  3.70k|  node_index = g_hash_table_lookup_node (hash_table, key, &node_hash);
 1741|       |
 1742|  3.70k|  if (!HASH_IS_REAL (hash_table->hashes[node_index]))
  ------------------
  |  |  242|  3.70k|#define HASH_IS_REAL(h_) ((h_) >= 2)
  ------------------
  |  Branch (1742:7): [True: 0, False: 3.70k]
  ------------------
 1743|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1744|       |
 1745|  3.70k|  g_hash_table_remove_node (hash_table, node_index, notify);
 1746|  3.70k|  g_hash_table_maybe_resize (hash_table);
 1747|       |
 1748|  3.70k|#ifndef G_DISABLE_ASSERT
 1749|  3.70k|  hash_table->version++;
 1750|  3.70k|#endif
 1751|       |
 1752|  3.70k|  return TRUE;
  ------------------
  |  |  818|  3.70k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  3.70k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1753|  3.70k|}
ghash.c:g_hash_table_assign_key_or_value:
  397|  26.5k|{
  398|       |#ifndef USE_SMALL_ARRAYS
  399|       |  is_big = TRUE;
  400|       |#endif
  401|  26.5k|  if (is_big)
  ------------------
  |  Branch (401:7): [True: 26.0k, False: 454]
  ------------------
  402|  26.0k|    *(((gpointer *) a) + index) = v;
  403|    454|  else
  404|    454|    *(((guint *) a) + index) = GPOINTER_TO_UINT (v);
  ------------------
  |  |   99|    454|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
  405|  26.5k|}
ghash.c:g_hash_table_remove_node:
  535|  3.70k|{
  536|  3.70k|  gpointer key;
  537|  3.70k|  gpointer value;
  538|       |
  539|  3.70k|  key = g_hash_table_fetch_key_or_value (hash_table->keys, i, hash_table->have_big_keys);
  540|  3.70k|  value = g_hash_table_fetch_key_or_value (hash_table->values, i, hash_table->have_big_values);
  541|       |
  542|       |  /* Erect tombstone */
  543|  3.70k|  hash_table->hashes[i] = TOMBSTONE_HASH_VALUE;
  ------------------
  |  |  239|  3.70k|#define TOMBSTONE_HASH_VALUE 1
  ------------------
  544|       |
  545|       |  /* Be GC friendly */
  546|  3.70k|  g_hash_table_assign_key_or_value (hash_table->keys, i, hash_table->have_big_keys, NULL);
  547|  3.70k|  g_hash_table_assign_key_or_value (hash_table->values, i, hash_table->have_big_values, NULL);
  548|       |
  549|  3.70k|  hash_table->nnodes--;
  550|       |
  551|  3.70k|  if (notify && hash_table->key_destroy_func)
  ------------------
  |  Branch (551:7): [True: 3.70k, False: 0]
  |  Branch (551:17): [True: 0, False: 3.70k]
  ------------------
  552|      0|    hash_table->key_destroy_func (key);
  553|       |
  554|  3.70k|  if (notify && hash_table->value_destroy_func)
  ------------------
  |  Branch (554:7): [True: 3.70k, False: 0]
  |  Branch (554:17): [True: 0, False: 3.70k]
  ------------------
  555|      0|    hash_table->value_destroy_func (value);
  556|       |
  557|  3.70k|}
ghash.c:g_hash_table_maybe_resize:
  909|  6.66k|{
  910|  6.66k|  gint noccupied = hash_table->noccupied;
  911|  6.66k|  gint size = hash_table->size;
  912|       |
  913|  6.66k|  if ((size > hash_table->nnodes * 4 && size > 1 << HASH_TABLE_MIN_SHIFT) ||
  ------------------
  |  |  236|  2.89k|#define HASH_TABLE_MIN_SHIFT 3  /* 1 << 3 == 8 buckets */
  ------------------
  |  Branch (913:8): [True: 2.89k, False: 3.76k]
  |  Branch (913:41): [True: 0, False: 2.89k]
  ------------------
  914|  6.66k|      (size <= noccupied + (noccupied / 16)))
  ------------------
  |  Branch (914:7): [True: 22, False: 6.63k]
  ------------------
  915|     22|    g_hash_table_resize (hash_table);
  916|  6.66k|}
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: 21, False: 58]
  ------------------
  773|     79|        continue;                                                       \
  774|     79|                                                                        \
  775|     79|      hash_table->hashes[i] = UNUSED_HASH_VALUE;                        \
  ------------------
  |  |  238|     58|#define UNUSED_HASH_VALUE 0
  ------------------
  776|     58|      EVICT_KEYVAL (hash_table, i, NULL, NULL, key, value);             \
  ------------------
  |  |  828|     58|#define EVICT_KEYVAL(ht, index, key, value, outkey, outvalue) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|     58|#define G_STMT_START  do
  |  |  ------------------
  |  |  829|     58|    (outkey) = g_hash_table_evict_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  830|     58|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     58|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 58]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  777|     58|                                                                        \
  778|     58|      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|    104|          while (get_status_bit (reallocated_buckets_bitmap, hash_val)) \
  ------------------
  |  Branch (786:18): [True: 25, False: 79]
  ------------------
  787|     79|            {                                                           \
  788|     25|              step++;                                                   \
  789|     25|              hash_val += step;                                         \
  790|     25|              hash_val &= hash_table->mask;                             \
  791|     25|            }                                                           \
  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: 58, False: 21]
  ------------------
  798|     79|            {                                                           \
  799|     58|              ASSIGN_KEYVAL (hash_table, hash_val, key, value);         \
  ------------------
  |  |  824|     58|#define ASSIGN_KEYVAL(ht, index, key, value) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|     58|#define G_STMT_START  do
  |  |  ------------------
  |  |  825|     58|    g_hash_table_assign_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  826|     58|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     58|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 58]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  800|     58|              break;                                                    \
  801|     58|            }                                                           \
  802|     79|                                                                        \
  803|     79|          node_hash = replaced_hash;                                    \
  804|     21|          EVICT_KEYVAL (hash_table, hash_val, key, value, key, value);  \
  ------------------
  |  |  828|     21|#define EVICT_KEYVAL(ht, index, key, value, outkey, outvalue) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|     21|#define G_STMT_START  do
  |  |  ------------------
  |  |  829|     21|    (outkey) = g_hash_table_evict_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  830|     21|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     21|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 21]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  805|     21|        }                                                               \
  806|     58|    }                                                                   \
  807|      5|}
ghash.c:get_status_bit:
  740|  1.39k|{
  741|  1.39k|  return (bitmap[index / 32] >> (index % 32)) & 1;
  742|  1.39k|}
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: 15, False: 489]
  ------------------
  765|    504|        {                                                               \
  766|     15|          /* Clear tombstones */                                        \
  767|     15|          hash_table->hashes[i] = UNUSED_HASH_VALUE;                    \
  ------------------
  |  |  238|     15|#define UNUSED_HASH_VALUE 0
  ------------------
  768|     15|          continue;                                                     \
  769|     15|        }                                                               \
  770|    504|                                                                        \
  771|    504|      /* Skip entries relocated through eviction */                     \
  772|    504|      if (get_status_bit (reallocated_buckets_bitmap, i))               \
  ------------------
  |  Branch (772:11): [True: 126, False: 363]
  ------------------
  773|    489|        continue;                                                       \
  774|    489|                                                                        \
  775|    489|      hash_table->hashes[i] = UNUSED_HASH_VALUE;                        \
  ------------------
  |  |  238|    363|#define UNUSED_HASH_VALUE 0
  ------------------
  776|    363|      EVICT_KEYVAL (hash_table, i, NULL, NULL, key, value);             \
  ------------------
  |  |  814|    363|#define EVICT_KEYVAL(ht, index, key, value, outkey, outvalue) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|    363|#define G_STMT_START  do
  |  |  ------------------
  |  |  815|    363|    (outkey) = g_hash_table_evict_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  816|    363|    (outvalue) = g_hash_table_evict_key_or_value ((ht)->values, (index), (ht)->have_big_values, (value)); \
  |  |  817|    363|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    363|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 363]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  777|    363|                                                                        \
  778|    363|      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|    719|          while (get_status_bit (reallocated_buckets_bitmap, hash_val)) \
  ------------------
  |  Branch (786:18): [True: 232, False: 487]
  ------------------
  787|    487|            {                                                           \
  788|    232|              step++;                                                   \
  789|    232|              hash_val += step;                                         \
  790|    232|              hash_val &= hash_table->mask;                             \
  791|    232|            }                                                           \
  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: 363, False: 124]
  ------------------
  798|    487|            {                                                           \
  799|    363|              ASSIGN_KEYVAL (hash_table, hash_val, key, value);         \
  ------------------
  |  |  809|    363|#define ASSIGN_KEYVAL(ht, index, key, value) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|    363|#define G_STMT_START  do
  |  |  ------------------
  |  |  810|    363|    g_hash_table_assign_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  811|    363|    g_hash_table_assign_key_or_value ((ht)->values, (index), (ht)->have_big_values, (value)); \
  |  |  812|    363|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    363|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 363]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  800|    363|              break;                                                    \
  801|    363|            }                                                           \
  802|    487|                                                                        \
  803|    487|          node_hash = replaced_hash;                                    \
  804|    124|          EVICT_KEYVAL (hash_table, hash_val, key, value, key, value);  \
  ------------------
  |  |  814|    124|#define EVICT_KEYVAL(ht, index, key, value, outkey, outvalue) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|    124|#define G_STMT_START  do
  |  |  ------------------
  |  |  815|    124|    (outkey) = g_hash_table_evict_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  816|    124|    (outvalue) = g_hash_table_evict_key_or_value ((ht)->values, (index), (ht)->have_big_values, (value)); \
  |  |  817|    124|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    124|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 124]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  805|    124|        }                                                               \
  806|    363|    }                                                                   \
  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|  6.62k|{
 2821|  6.62k|#ifndef G_OS_WIN32
 2822|  6.62k|  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|  6.62k|  gettimeofday (&r, NULL);
 2827|       |
 2828|  6.62k|  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|  6.62k|}

g_malloc:
  101|   929k|{
  102|   929k|  if (G_LIKELY (n_bytes))
  ------------------
  |  | 1024|   929k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|   929k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   929k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   929k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   929k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 929k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|   929k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   929k|   else                                         \
  |  |  |  | 1021|   929k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   929k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   929k|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 929k, False: 0]
  |  |  ------------------
  ------------------
  103|   929k|    {
  104|   929k|      gpointer mem;
  105|       |
  106|   929k|      mem = malloc (n_bytes);
  107|   929k|      TRACE (GLIB_MEM_ALLOC((void*) mem, (unsigned int) n_bytes, 0, 0));
  108|   929k|      if (mem)
  ------------------
  |  Branch (108:11): [True: 929k, False: 0]
  ------------------
  109|   929k|	return mem;
  110|       |
  111|   929k|      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|   929k|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   929k|#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|   929k|}
g_malloc0:
  131|   903k|{
  132|   903k|  if (G_LIKELY (n_bytes))
  ------------------
  |  | 1024|   903k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|   903k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   903k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   903k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   903k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 903k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|   903k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   903k|   else                                         \
  |  |  |  | 1021|   903k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   903k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   903k|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 903k, False: 0]
  |  |  ------------------
  ------------------
  133|   903k|    {
  134|   903k|      gpointer mem;
  135|       |
  136|   903k|      mem = calloc (1, n_bytes);
  137|   903k|      TRACE (GLIB_MEM_ALLOC((void*) mem, (unsigned int) n_bytes, 1, 0));
  138|   903k|      if (mem)
  ------------------
  |  Branch (138:11): [True: 903k, False: 0]
  ------------------
  139|   903k|	return mem;
  140|       |
  141|   903k|      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|   903k|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   903k|#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|   903k|}
g_realloc:
  166|  1.84M|{
  167|  1.84M|  gpointer newmem;
  168|       |
  169|  1.84M|  if (G_LIKELY (n_bytes))
  ------------------
  |  | 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]
  |  |  ------------------
  ------------------
  170|  1.84M|    {
  171|  1.84M|      newmem = realloc (mem, n_bytes);
  172|  1.84M|      TRACE (GLIB_MEM_REALLOC((void*) newmem, (void*)mem, (unsigned int) n_bytes, 0));
  173|  1.84M|      if (newmem)
  ------------------
  |  Branch (173:11): [True: 1.84M, False: 0]
  ------------------
  174|  1.84M|	return newmem;
  175|       |
  176|  1.84M|      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.84M|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.84M|#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|  1.84M|}
g_free:
  198|  5.00M|{
  199|  5.00M|  free (mem);
  200|  5.00M|  TRACE(GLIB_MEM_FREE((void*) mem));
  201|  5.00M|}
g_malloc_n:
  337|  1.35k|{
  338|  1.35k|  if (SIZE_OVERFLOWS (n_blocks, n_block_bytes))
  ------------------
  |  |  321|  1.35k|#define SIZE_OVERFLOWS(a,b) (G_UNLIKELY ((b) > 0 && (a) > G_MAXSIZE / (b)))
  |  |  ------------------
  |  |  |  | 1025|  1.35k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.35k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.35k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.35k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  4.06k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.35k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.35k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 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 (321:29): [True: 0, False: 1.35k]
  |  |  ------------------
  ------------------
  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.35k|  return g_malloc (n_blocks * n_block_bytes);
  345|  1.35k|}
g_malloc0_n:
  361|  1.45k|{
  362|  1.45k|  if (SIZE_OVERFLOWS (n_blocks, n_block_bytes))
  ------------------
  |  |  321|  1.45k|#define SIZE_OVERFLOWS(a,b) (G_UNLIKELY ((b) > 0 && (a) > G_MAXSIZE / (b)))
  |  |  ------------------
  |  |  |  | 1025|  1.45k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.45k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.45k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.45k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  4.36k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.45k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.45k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.45k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.45k|   else                                         \
  |  |  |  |  |  | 1021|  1.45k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.45k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.45k|})
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (321:29): [True: 0, False: 1.45k]
  |  |  ------------------
  ------------------
  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.45k|  return g_malloc0 (n_blocks * n_block_bytes);
  369|  1.45k|}
g_realloc_n:
  387|    230|{
  388|    230|  if (SIZE_OVERFLOWS (n_blocks, n_block_bytes))
  ------------------
  |  |  321|    230|#define SIZE_OVERFLOWS(a,b) (G_UNLIKELY ((b) > 0 && (a) > G_MAXSIZE / (b)))
  |  |  ------------------
  |  |  |  | 1025|    230|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    230| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    230|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    230|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    690|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 230, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 230]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    230|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    230|   else                                         \
  |  |  |  |  |  | 1021|    230|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    230|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    230|})
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (321:29): [True: 0, False: 230]
  |  |  ------------------
  ------------------
  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|    230|  return g_realloc (mem, n_blocks * n_block_bytes);
  395|    230|}

garray.c:g_steal_pointer:
  210|   406k|{
  211|   406k|  gpointer *ptr = (gpointer *) pp;
  212|   406k|  gpointer ref;
  213|       |
  214|   406k|  ref = *ptr;
  215|   406k|  *ptr = NULL;
  216|       |
  217|   406k|  return ref;
  218|   406k|}
ghash.c:g_steal_pointer:
  210|  1.99k|{
  211|  1.99k|  gpointer *ptr = (gpointer *) pp;
  212|  1.99k|  gpointer ref;
  213|       |
  214|  1.99k|  ref = *ptr;
  215|  1.99k|  *ptr = NULL;
  216|       |
  217|  1.99k|  return ref;
  218|  1.99k|}
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|   234k|{
 1290|   234k|  gboolean was_fatal = (log_level & G_LOG_FLAG_FATAL) != 0;
 1291|   234k|  gboolean was_recursion = (log_level & G_LOG_FLAG_RECURSION) != 0;
 1292|   234k|  gchar buffer[1025], *msg, *msg_alloc = NULL;
 1293|   234k|  gint i;
 1294|       |
 1295|   234k|  log_level &= G_LOG_LEVEL_MASK;
 1296|   234k|  if (!log_level)
  ------------------
  |  Branch (1296:7): [True: 0, False: 234k]
  ------------------
 1297|      0|    return;
 1298|       |
 1299|   234k|  if (log_level & G_LOG_FLAG_RECURSION)
  ------------------
  |  Branch (1299:7): [True: 0, False: 234k]
  ------------------
 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|   234k|  else
 1310|   234k|    msg = msg_alloc = g_strdup_vprintf (format, args);
 1311|       |
 1312|   234k|  if (expected_messages)
  ------------------
  |  Branch (1312:7): [True: 0, False: 234k]
  ------------------
 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|   469k|  for (i = g_bit_nth_msf (log_level, -1); i >= 0; i = g_bit_nth_msf (log_level, i))
  ------------------
  |  |  369|   234k|#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|   234k|#define g_bit_nth_msf(mask, nth_bit) g_bit_nth_msf_impl(mask, nth_bit)
  ------------------
  |  Branch (1344:43): [True: 234k, False: 234k]
  ------------------
 1345|   234k|    {
 1346|   234k|      GLogLevelFlags test_level;
 1347|       |
 1348|   234k|      test_level = 1L << i;
 1349|   234k|      if (log_level & test_level)
  ------------------
  |  Branch (1349:11): [True: 234k, False: 0]
  ------------------
 1350|   234k|	{
 1351|   234k|	  GLogDomain *domain;
 1352|   234k|	  GLogFunc log_func;
 1353|   234k|	  GLogLevelFlags domain_fatal_mask;
 1354|   234k|	  gpointer data = NULL;
 1355|   234k|          gboolean masquerade_fatal = FALSE;
  ------------------
  |  |  814|   234k|#define	FALSE	(0)
  ------------------
 1356|   234k|          guint depth;
 1357|       |
 1358|   234k|	  if (was_fatal)
  ------------------
  |  Branch (1358:8): [True: 0, False: 234k]
  ------------------
 1359|      0|	    test_level |= G_LOG_FLAG_FATAL;
 1360|   234k|	  if (was_recursion)
  ------------------
  |  Branch (1360:8): [True: 0, False: 234k]
  ------------------
 1361|      0|	    test_level |= G_LOG_FLAG_RECURSION;
 1362|       |
 1363|       |	  /* check recursion and lookup handler */
 1364|   234k|	  g_mutex_lock (&g_messages_lock);
 1365|   234k|          depth = GPOINTER_TO_UINT (g_private_get (&g_log_depth));
  ------------------
  |  |   99|   234k|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 1366|   234k|	  domain = g_log_find_domain_L (log_domain ? log_domain : "");
  ------------------
  |  Branch (1366:34): [True: 234k, False: 0]
  ------------------
 1367|   234k|	  if (depth)
  ------------------
  |  Branch (1367:8): [True: 0, False: 234k]
  ------------------
 1368|      0|	    test_level |= G_LOG_FLAG_RECURSION;
 1369|   234k|	  depth++;
 1370|   234k|	  domain_fatal_mask = domain ? domain->fatal_mask : G_LOG_FATAL_MASK;
  ------------------
  |  |   71|   469k|#define G_LOG_FATAL_MASK        (G_LOG_FLAG_RECURSION | G_LOG_LEVEL_ERROR)
  ------------------
  |  Branch (1370:24): [True: 0, False: 234k]
  ------------------
 1371|   234k|	  if ((domain_fatal_mask | g_log_always_fatal) & test_level)
  ------------------
  |  Branch (1371:8): [True: 0, False: 234k]
  ------------------
 1372|      0|	    test_level |= G_LOG_FLAG_FATAL;
 1373|   234k|	  if (test_level & G_LOG_FLAG_RECURSION)
  ------------------
  |  Branch (1373:8): [True: 0, False: 234k]
  ------------------
 1374|      0|	    log_func = _g_log_fallback_handler;
 1375|   234k|	  else
 1376|   234k|	    log_func = g_log_domain_get_handler_L (domain, test_level, &data);
 1377|   234k|	  domain = NULL;
 1378|   234k|	  g_mutex_unlock (&g_messages_lock);
 1379|       |
 1380|   234k|	  g_private_set (&g_log_depth, GUINT_TO_POINTER (depth));
  ------------------
  |  |  102|   234k|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
 1381|       |
 1382|   234k|          log_func (log_domain, test_level, msg, data);
 1383|       |
 1384|   234k|          if ((test_level & G_LOG_FLAG_FATAL)
  ------------------
  |  Branch (1384:15): [True: 0, False: 234k]
  ------------------
 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|   234k|          if ((test_level & G_LOG_FLAG_FATAL) && !masquerade_fatal)
  ------------------
  |  Branch (1391:15): [True: 0, False: 234k]
  |  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|   234k|	  depth--;
 1413|   234k|	  g_private_set (&g_log_depth, GUINT_TO_POINTER (depth));
  ------------------
  |  |  102|   234k|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
 1414|   234k|	}
 1415|   234k|    }
 1416|       |
 1417|   234k|  g_free (msg_alloc);
 1418|   234k|}
g_log:
 1447|   234k|{
 1448|   234k|  va_list args;
 1449|       |  
 1450|   234k|  va_start (args, format);
 1451|   234k|  g_logv (log_domain, log_level, format, args);
 1452|       |  va_end (args);
 1453|   234k|}
g_log_structured_array:
 1940|   234k|{
 1941|   234k|  GLogWriterFunc writer_func;
 1942|   234k|  gpointer writer_user_data;
 1943|   234k|  gboolean recursion;
 1944|   234k|  guint depth;
 1945|       |
 1946|   234k|  if (n_fields == 0)
  ------------------
  |  Branch (1946:7): [True: 0, False: 234k]
  ------------------
 1947|      0|    return;
 1948|       |
 1949|       |  /* Check for recursion and look up the writer function. */
 1950|   234k|  depth = GPOINTER_TO_UINT (g_private_get (&g_log_structured_depth));
  ------------------
  |  |   99|   234k|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 1951|   234k|  recursion = (depth > 0);
 1952|       |
 1953|   234k|  g_mutex_lock (&g_messages_lock);
 1954|       |
 1955|   234k|  writer_func = recursion ? _g_log_writer_fallback : log_writer_func;
  ------------------
  |  Branch (1955:17): [True: 0, False: 234k]
  ------------------
 1956|   234k|  writer_user_data = log_writer_user_data;
 1957|       |
 1958|   234k|  g_mutex_unlock (&g_messages_lock);
 1959|       |
 1960|       |  /* Write the log entry. */
 1961|   234k|  g_private_set (&g_log_structured_depth, GUINT_TO_POINTER (++depth));
  ------------------
  |  |  102|   234k|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
 1962|       |
 1963|   234k|  g_assert (writer_func != NULL);
  ------------------
  |  |  231|   234k|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   234k|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|   234k|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|   234k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   234k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   234k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   234k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   234k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 234k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   234k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   234k|   else                                         \
  |  |  |  |  |  | 1021|   234k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   234k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   234k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 234k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|   234k|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|   234k|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   234k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 234k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1964|   234k|  writer_func (log_level, fields, n_fields, writer_user_data);
 1965|       |
 1966|   234k|  g_private_set (&g_log_structured_depth, GUINT_TO_POINTER (--depth));
  ------------------
  |  |  102|   234k|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
 1967|       |
 1968|       |  /* Abort if the message was fatal. */
 1969|   234k|  if (log_level & G_LOG_FATAL_MASK)
  ------------------
  |  |   71|   234k|#define G_LOG_FATAL_MASK        (G_LOG_FLAG_RECURSION | G_LOG_LEVEL_ERROR)
  ------------------
  |  Branch (1969:7): [True: 0, False: 234k]
  ------------------
 1970|      0|    _g_log_abort (!(log_level & G_LOG_FLAG_RECURSION));
 1971|   234k|}
g_log_writer_default:
 2751|   234k|{
 2752|   234k|  static gsize initialized = 0;
 2753|   234k|  static gboolean stderr_is_journal = FALSE;
  ------------------
  |  |  814|   234k|#define	FALSE	(0)
  ------------------
 2754|       |
 2755|   234k|  g_return_val_if_fail (fields != NULL, G_LOG_WRITER_UNHANDLED);
  ------------------
  |  |  643|   234k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   234k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   234k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   234k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   234k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   234k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   234k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   234k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 234k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   234k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   234k|   else                                         \
  |  |  |  |  |  | 1021|   234k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   234k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   234k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 234k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   234k|      { } \
  |  |  646|   234k|    else \
  |  |  647|   234k|      { \
  |  |  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|   234k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   234k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 234k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2756|   234k|  g_return_val_if_fail (n_fields > 0, G_LOG_WRITER_UNHANDLED);
  ------------------
  |  |  643|   234k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   234k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   234k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   234k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   234k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   234k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   234k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   234k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 234k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   234k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   234k|   else                                         \
  |  |  |  |  |  | 1021|   234k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   234k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   234k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 234k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   234k|      { } \
  |  |  646|   234k|    else \
  |  |  647|   234k|      { \
  |  |  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|   234k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   234k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 234k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2757|       |
 2758|   234k|  if (should_drop_message (log_level, NULL, fields, n_fields))
  ------------------
  |  Branch (2758:7): [True: 234k, False: 0]
  ------------------
 2759|   234k|    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|   234k|{
 3198|   234k|  GLogField fields[4];
 3199|   234k|  int n_fields = 0;
 3200|       |
 3201|       |  /* we can be called externally with recursion for whatever reason */
 3202|   234k|  if (log_level & G_LOG_FLAG_RECURSION)
  ------------------
  |  Branch (3202:7): [True: 0, False: 234k]
  ------------------
 3203|      0|    {
 3204|      0|      _g_log_fallback_handler (log_domain, log_level, message, unused_data);
 3205|      0|      return;
 3206|      0|    }
 3207|       |
 3208|   234k|  fields[0].key = "GLIB_OLD_LOG_API";
 3209|   234k|  fields[0].value = "1";
 3210|   234k|  fields[0].length = -1;
 3211|   234k|  n_fields++;
 3212|       |
 3213|   234k|  fields[1].key = "MESSAGE";
 3214|   234k|  fields[1].value = message;
 3215|   234k|  fields[1].length = -1;
 3216|   234k|  n_fields++;
 3217|       |
 3218|   234k|  fields[2].key = "PRIORITY";
 3219|   234k|  fields[2].value = log_level_to_priority (log_level);
 3220|   234k|  fields[2].length = -1;
 3221|   234k|  n_fields++;
 3222|       |
 3223|   234k|  if (log_domain)
  ------------------
  |  Branch (3223:7): [True: 234k, False: 0]
  ------------------
 3224|   234k|    {
 3225|   234k|      fields[3].key = "GLIB_DOMAIN";
 3226|   234k|      fields[3].value = log_domain;
 3227|   234k|      fields[3].length = -1;
 3228|   234k|      n_fields++;
 3229|   234k|    }
 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|   234k|  g_log_structured_array (log_level & ~G_LOG_FLAG_FATAL, fields, n_fields);
 3237|   234k|}
gmessages.c:g_log_find_domain_L:
  614|   234k|{
  615|   234k|  GLogDomain *domain;
  616|       |  
  617|   234k|  domain = g_log_domains;
  618|   234k|  while (domain)
  ------------------
  |  Branch (618:10): [True: 0, False: 234k]
  ------------------
  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|   234k|  return NULL;
  625|   234k|}
gmessages.c:g_log_domain_get_handler_L:
  676|   234k|{
  677|   234k|  if (domain && log_level)
  ------------------
  |  Branch (677:7): [True: 0, False: 234k]
  |  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|   234k|  *data = default_log_data;
  694|   234k|  return default_log_func;
  695|   234k|}
gmessages.c:log_level_to_priority:
 1460|   234k|{
 1461|   234k|  if (log_level & G_LOG_LEVEL_ERROR)
  ------------------
  |  Branch (1461:7): [True: 0, False: 234k]
  ------------------
 1462|      0|    return "3";
 1463|   234k|  else if (log_level & G_LOG_LEVEL_CRITICAL)
  ------------------
  |  Branch (1463:12): [True: 0, False: 234k]
  ------------------
 1464|      0|    return "4";
 1465|   234k|  else if (log_level & G_LOG_LEVEL_WARNING)
  ------------------
  |  Branch (1465:12): [True: 0, False: 234k]
  ------------------
 1466|      0|    return "4";
 1467|   234k|  else if (log_level & G_LOG_LEVEL_MESSAGE)
  ------------------
  |  Branch (1467:12): [True: 0, False: 234k]
  ------------------
 1468|      0|    return "5";
 1469|   234k|  else if (log_level & G_LOG_LEVEL_INFO)
  ------------------
  |  Branch (1469:12): [True: 0, False: 234k]
  ------------------
 1470|      0|    return "6";
 1471|   234k|  else if (log_level & G_LOG_LEVEL_DEBUG)
  ------------------
  |  Branch (1471:12): [True: 234k, False: 0]
  ------------------
 1472|   234k|    return "7";
 1473|       |
 1474|       |  /* Default to LOG_NOTICE for custom log levels. */
 1475|      0|  return "5";
 1476|   234k|}
gmessages.c:should_drop_message:
 2636|   234k|{
 2637|       |  /* Disable debug message output unless specified in G_MESSAGES_DEBUG. */
 2638|   234k|  if (!(log_level & DEFAULT_LEVELS) && !(log_level >> G_LOG_LEVEL_USER_SHIFT))
  ------------------
  |  | 1157|   234k|#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|   234k|#define G_LOG_LEVEL_USER_SHIFT  (8)
  ------------------
  |  Branch (2638:7): [True: 234k, False: 0]
  |  Branch (2638:40): [True: 234k, False: 0]
  ------------------
 2639|   234k|    {
 2640|   234k|      const gchar *domains;
 2641|   234k|      gsize i;
 2642|       |
 2643|   234k|      domains = g_getenv ("G_MESSAGES_DEBUG");
 2644|       |
 2645|   234k|      if ((log_level & INFO_LEVELS) == 0 ||
  ------------------
  |  | 1159|   234k|#define INFO_LEVELS (G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG)
  ------------------
  |  Branch (2645:11): [True: 0, False: 234k]
  ------------------
 2646|   234k|          domains == NULL)
  ------------------
  |  Branch (2646:11): [True: 234k, False: 0]
  ------------------
 2647|   234k|        return TRUE;
  ------------------
  |  |  818|   234k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   234k|#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|   234k|}

_g_gnulib_printf_fetchargs:
   39|   237k|{
   40|   237k|  size_t i;
   41|   237k|  argument *ap;
   42|       |
   43|   693k|  for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++)
  ------------------
  |  Branch (43:32): [True: 456k, False: 237k]
  ------------------
   44|   456k|    switch (ap->type)
   45|   456k|      {
   46|      0|      case TYPE_SCHAR:
  ------------------
  |  Branch (46:7): [True: 0, False: 456k]
  ------------------
   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: 456k]
  ------------------
   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: 456k]
  ------------------
   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: 456k]
  ------------------
   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: 456k]
  ------------------
   59|      0|        ap->a.a_int = va_arg (args, int);
   60|      0|        break;
   61|   236k|      case TYPE_UINT:
  ------------------
  |  Branch (61:7): [True: 236k, False: 219k]
  ------------------
   62|   236k|        ap->a.a_uint = va_arg (args, unsigned int);
   63|   236k|        break;
   64|      0|      case TYPE_LONGINT:
  ------------------
  |  Branch (64:7): [True: 0, False: 456k]
  ------------------
   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: 456k]
  ------------------
   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: 456k]
  ------------------
   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: 456k]
  ------------------
   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: 456k]
  ------------------
   79|      0|        ap->a.a_double = va_arg (args, double);
   80|      0|        break;
   81|      0|      case TYPE_LONGDOUBLE:
  ------------------
  |  Branch (81:7): [True: 0, False: 456k]
  ------------------
   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: 456k]
  ------------------
   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: 456k]
  ------------------
   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|   219k|      case TYPE_STRING:
  ------------------
  |  Branch (98:7): [True: 219k, False: 236k]
  ------------------
   99|   219k|        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|   219k|        if (ap->a.a_string == NULL)
  ------------------
  |  Branch (103:13): [True: 0, False: 219k]
  ------------------
  104|      0|          ap->a.a_string = "(NULL)";
  105|   219k|        break;
  106|      0|#if HAVE_WCHAR_T
  107|      0|      case TYPE_WIDE_STRING:
  ------------------
  |  Branch (107:7): [True: 0, False: 456k]
  ------------------
  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: 456k]
  ------------------
  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: 456k]
  ------------------
  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: 456k]
  ------------------
  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: 456k]
  ------------------
  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: 456k]
  ------------------
  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: 456k]
  ------------------
  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: 456k]
  ------------------
  185|       |        /* Unknown type.  */
  186|      0|        return -1;
  187|   456k|      }
  188|   237k|  return 0;
  189|   237k|}

_g_gnulib_printf_parse:
   86|   237k|{
   87|   237k|  const CHAR_T *cp = format;    /* pointer into format */
   88|   237k|  size_t arg_posn = 0;          /* number of regular arguments consumed */
   89|   237k|  size_t d_allocated;           /* allocated elements of d->dir */
   90|   237k|  size_t a_allocated;           /* allocated elements of a->arg */
   91|   237k|  size_t max_width_length = 0;
   92|   237k|  size_t max_precision_length = 0;
   93|       |
   94|   237k|  d->count = 0;
   95|   237k|  d_allocated = N_DIRECT_ALLOC_DIRECTIVES;
  ------------------
  |  |   50|   237k|#define N_DIRECT_ALLOC_DIRECTIVES 7
  ------------------
   96|   237k|  d->dir = d->direct_alloc_dir;
   97|       |
   98|   237k|  a->count = 0;
   99|   237k|  a_allocated = N_DIRECT_ALLOC_ARGUMENTS;
  ------------------
  |  |  139|   237k|#define N_DIRECT_ALLOC_ARGUMENTS 7
  ------------------
  100|   237k|  a->arg = a->direct_alloc_arg;
  101|       |
  102|   237k|#define REGISTER_ARG(_index_,_type_) \
  103|   237k|  {                                                                     \
  104|   237k|    size_t n = (_index_);                                               \
  105|   237k|    if (n >= a_allocated)                                               \
  106|   237k|      {                                                                 \
  107|   237k|        size_t memory_size;                                             \
  108|   237k|        argument *memory;                                               \
  109|   237k|                                                                        \
  110|   237k|        a_allocated = xtimes (a_allocated, 2);                          \
  111|   237k|        if (a_allocated <= n)                                           \
  112|   237k|          a_allocated = xsum (n, 1);                                    \
  113|   237k|        memory_size = xtimes (a_allocated, sizeof (argument));          \
  114|   237k|        if (size_overflow_p (memory_size))                              \
  115|       |          /* Overflow, would lead to out of memory.  */                 \
  116|   237k|          goto out_of_memory;                                           \
  117|   237k|        memory = (argument *) (a->arg != a->direct_alloc_arg            \
  118|   237k|                               ? realloc (a->arg, memory_size)          \
  119|   237k|                               : malloc (memory_size));                 \
  120|   237k|        if (memory == NULL)                                             \
  121|       |          /* Out of memory.  */                                         \
  122|   237k|          goto out_of_memory;                                           \
  123|   237k|        if (a->arg == a->direct_alloc_arg)                              \
  124|   237k|          memcpy (memory, a->arg, a->count * sizeof (argument));        \
  125|   237k|        a->arg = memory;                                                \
  126|   237k|      }                                                                 \
  127|   237k|    while (a->count <= n)                                               \
  128|   237k|      a->arg[a->count++].type = TYPE_NONE;                              \
  129|   237k|    if (a->arg[n].type == TYPE_NONE)                                    \
  130|   237k|      a->arg[n].type = (_type_);                                        \
  131|   237k|    else if (a->arg[n].type != (_type_))                                \
  132|       |      /* Ambiguous type for positional argument.  */                    \
  133|   237k|      goto error;                                                       \
  134|   237k|  }
  135|       |
  136|  9.94M|  while (*cp != '\0')
  ------------------
  |  Branch (136:10): [True: 9.71M, False: 237k]
  ------------------
  137|  9.71M|    {
  138|  9.71M|      CHAR_T c = *cp++;
  ------------------
  |  |   44|  9.71M|# define CHAR_T char
  ------------------
  139|  9.71M|      if (c == '%')
  ------------------
  |  Branch (139:11): [True: 456k, False: 9.25M]
  ------------------
  140|   456k|        {
  141|   456k|          size_t arg_index = ARG_NONE;
  ------------------
  |  |   44|   456k|#define ARG_NONE        (~(size_t)0)
  ------------------
  142|   456k|          DIRECTIVE *dp = &d->dir[d->count]; /* pointer to next directive */
  ------------------
  |  |   45|   456k|# define DIRECTIVE char_directive
  ------------------
  143|       |
  144|       |          /* Initialize the next directive.  */
  145|   456k|          dp->dir_start = cp - 1;
  146|   456k|          dp->flags = 0;
  147|   456k|          dp->width_start = NULL;
  148|   456k|          dp->width_end = NULL;
  149|   456k|          dp->width_arg_index = ARG_NONE;
  ------------------
  |  |   44|   456k|#define ARG_NONE        (~(size_t)0)
  ------------------
  150|   456k|          dp->precision_start = NULL;
  151|   456k|          dp->precision_end = NULL;
  152|   456k|          dp->precision_arg_index = ARG_NONE;
  ------------------
  |  |   44|   456k|#define ARG_NONE        (~(size_t)0)
  ------------------
  153|   456k|          dp->arg_index = ARG_NONE;
  ------------------
  |  |   44|   456k|#define ARG_NONE        (~(size_t)0)
  ------------------
  154|       |
  155|       |          /* Test for positional argument.  */
  156|   456k|          if (*cp >= '0' && *cp <= '9')
  ------------------
  |  Branch (156:15): [True: 456k, False: 0]
  |  Branch (156:29): [True: 2.75k, False: 453k]
  ------------------
  157|  2.75k|            {
  158|  2.75k|              const CHAR_T *np;
  159|       |
  160|  8.26k|              for (np = cp; *np >= '0' && *np <= '9'; np++)
  ------------------
  |  Branch (160:29): [True: 8.26k, False: 0]
  |  Branch (160:43): [True: 5.50k, False: 2.75k]
  ------------------
  161|  5.50k|                ;
  162|  2.75k|              if (*np == '$')
  ------------------
  |  Branch (162:19): [True: 0, False: 2.75k]
  ------------------
  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|  2.75k|            }
  178|       |
  179|       |          /* Read the flags.  */
  180|   456k|          for (;;)
  181|   458k|            {
  182|   458k|              if (*cp == '\'')
  ------------------
  |  Branch (182:19): [True: 0, False: 458k]
  ------------------
  183|      0|                {
  184|      0|                  dp->flags |= FLAG_GROUP;
  ------------------
  |  |   33|      0|#define FLAG_GROUP       1      /* ' flag */
  ------------------
  185|      0|                  cp++;
  186|      0|                }
  187|   458k|              else if (*cp == '-')
  ------------------
  |  Branch (187:24): [True: 0, False: 458k]
  ------------------
  188|      0|                {
  189|      0|                  dp->flags |= FLAG_LEFT;
  ------------------
  |  |   34|      0|#define FLAG_LEFT        2      /* - flag */
  ------------------
  190|      0|                  cp++;
  191|      0|                }
  192|   458k|              else if (*cp == '+')
  ------------------
  |  Branch (192:24): [True: 0, False: 458k]
  ------------------
  193|      0|                {
  194|      0|                  dp->flags |= FLAG_SHOWSIGN;
  ------------------
  |  |   35|      0|#define FLAG_SHOWSIGN    4      /* + flag */
  ------------------
  195|      0|                  cp++;
  196|      0|                }
  197|   458k|              else if (*cp == ' ')
  ------------------
  |  Branch (197:24): [True: 0, False: 458k]
  ------------------
  198|      0|                {
  199|      0|                  dp->flags |= FLAG_SPACE;
  ------------------
  |  |   36|      0|#define FLAG_SPACE       8      /* space flag */
  ------------------
  200|      0|                  cp++;
  201|      0|                }
  202|   458k|              else if (*cp == '#')
  ------------------
  |  Branch (202:24): [True: 0, False: 458k]
  ------------------
  203|      0|                {
  204|      0|                  dp->flags |= FLAG_ALT;
  ------------------
  |  |   37|      0|#define FLAG_ALT        16      /* # flag */
  ------------------
  205|      0|                  cp++;
  206|      0|                }
  207|   458k|              else if (*cp == '0')
  ------------------
  |  Branch (207:24): [True: 2.75k, False: 456k]
  ------------------
  208|  2.75k|                {
  209|  2.75k|                  dp->flags |= FLAG_ZERO;
  ------------------
  |  |   38|  2.75k|#define FLAG_ZERO       32
  ------------------
  210|  2.75k|                  cp++;
  211|  2.75k|                }
  212|   456k|#if __GLIBC__ >= 2 && !defined __UCLIBC__
  213|   456k|              else if (*cp == 'I')
  ------------------
  |  Branch (213:24): [True: 0, False: 456k]
  ------------------
  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|   456k|#endif
  219|   456k|              else
  220|   456k|                break;
  221|   458k|            }
  222|       |
  223|       |          /* Parse the field width.  */
  224|   456k|          if (*cp == '*')
  ------------------
  |  Branch (224:15): [True: 0, False: 456k]
  ------------------
  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|   456k|          else if (*cp >= '0' && *cp <= '9')
  ------------------
  |  Branch (264:20): [True: 456k, False: 0]
  |  Branch (264:34): [True: 2.75k, False: 453k]
  ------------------
  265|  2.75k|            {
  266|  2.75k|              size_t width_length;
  267|       |
  268|  2.75k|              dp->width_start = cp;
  269|  5.50k|              for (; *cp >= '0' && *cp <= '9'; cp++)
  ------------------
  |  Branch (269:22): [True: 5.50k, False: 0]
  |  Branch (269:36): [True: 2.75k, False: 2.75k]
  ------------------
  270|  2.75k|                ;
  271|  2.75k|              dp->width_end = cp;
  272|  2.75k|              width_length = dp->width_end - dp->width_start;
  273|  2.75k|              if (max_width_length < width_length)
  ------------------
  |  Branch (273:19): [True: 2.59k, False: 156]
  ------------------
  274|  2.59k|                max_width_length = width_length;
  275|  2.75k|            }
  276|       |
  277|       |          /* Parse the precision.  */
  278|   456k|          if (*cp == '.')
  ------------------
  |  Branch (278:15): [True: 0, False: 456k]
  ------------------
  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|   456k|          {
  337|   456k|            arg_type type;
  338|       |
  339|       |            /* Parse argument type/size specifiers.  */
  340|   456k|            {
  341|   456k|              int flags = 0;
  342|       |
  343|   456k|              for (;;)
  344|   456k|                {
  345|   456k|                  if (*cp == 'h')
  ------------------
  |  Branch (345:23): [True: 0, False: 456k]
  ------------------
  346|      0|                    {
  347|      0|                      flags |= (1 << (flags & 1));
  348|      0|                      cp++;
  349|      0|                    }
  350|   456k|                  else if (*cp == 'L')
  ------------------
  |  Branch (350:28): [True: 0, False: 456k]
  ------------------
  351|      0|                    {
  352|      0|                      flags |= 4;
  353|      0|                      cp++;
  354|      0|                    }
  355|   456k|                  else if (*cp == 'l')
  ------------------
  |  Branch (355:28): [True: 0, False: 456k]
  ------------------
  356|      0|                    {
  357|      0|                      flags += 8;
  358|      0|                      cp++;
  359|      0|                    }
  360|   456k|                  else if (*cp == 'j')
  ------------------
  |  Branch (360:28): [True: 0, False: 456k]
  ------------------
  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|   456k|                  else if (*cp == 'z' || *cp == 'Z')
  ------------------
  |  Branch (374:28): [True: 0, False: 456k]
  |  Branch (374:42): [True: 0, False: 456k]
  ------------------
  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|   456k|                  else if (*cp == 't')
  ------------------
  |  Branch (391:28): [True: 0, False: 456k]
  ------------------
  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|   456k|                  else
  444|   456k|                    break;
  445|   456k|                }
  446|       |
  447|       |              /* Read the conversion character.  */
  448|   456k|              c = *cp++;
  449|   456k|              switch (c)
  450|   456k|                {
  451|      0|                case 'd': case 'i':
  ------------------
  |  Branch (451:17): [True: 0, False: 456k]
  |  Branch (451:27): [True: 0, False: 456k]
  ------------------
  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|   236k|                case 'o': case 'u': case 'x': case 'X':
  ------------------
  |  Branch (469:17): [True: 0, False: 456k]
  |  Branch (469:27): [True: 0, False: 456k]
  |  Branch (469:37): [True: 234k, False: 221k]
  |  Branch (469:47): [True: 2.52k, False: 453k]
  ------------------
  470|   236k|#if HAVE_LONG_LONG
  471|       |                  /* If 'long long' exists and is larger than 'long':  */
  472|   236k|                  if (flags >= 16 || (flags & 4))
  ------------------
  |  Branch (472:23): [True: 0, False: 236k]
  |  Branch (472:38): [True: 0, False: 236k]
  ------------------
  473|      0|                    type = TYPE_ULONGLONGINT;
  474|   236k|                  else
  475|   236k|#endif
  476|       |                  /* If 'unsigned long long' exists and is the same as
  477|       |                     'unsigned long', we parse "llu" into TYPE_ULONGINT.  */
  478|   236k|                  if (flags >= 8)
  ------------------
  |  Branch (478:23): [True: 0, False: 236k]
  ------------------
  479|      0|                    type = TYPE_ULONGINT;
  480|   236k|                  else if (flags & 2)
  ------------------
  |  Branch (480:28): [True: 0, False: 236k]
  ------------------
  481|      0|                    type = TYPE_UCHAR;
  482|   236k|                  else if (flags & 1)
  ------------------
  |  Branch (482:28): [True: 0, False: 236k]
  ------------------
  483|      0|                    type = TYPE_USHORT;
  484|   236k|                  else
  485|   236k|                    type = TYPE_UINT;
  486|   236k|                  break;
  487|      0|                case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
  ------------------
  |  Branch (487:17): [True: 0, False: 456k]
  |  Branch (487:27): [True: 0, False: 456k]
  |  Branch (487:37): [True: 0, False: 456k]
  |  Branch (487:47): [True: 0, False: 456k]
  |  Branch (487:57): [True: 0, False: 456k]
  |  Branch (487:67): [True: 0, False: 456k]
  ------------------
  488|      0|                case 'a': case 'A':
  ------------------
  |  Branch (488:17): [True: 0, False: 456k]
  |  Branch (488:27): [True: 0, False: 456k]
  ------------------
  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: 456k]
  ------------------
  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: 456k]
  ------------------
  506|      0|                  type = TYPE_WIDE_CHAR;
  507|      0|                  c = 'c';
  508|      0|                  break;
  509|      0|#endif
  510|   219k|                case 's':
  ------------------
  |  Branch (510:17): [True: 219k, False: 236k]
  ------------------
  511|   219k|                  if (flags >= 8)
  ------------------
  |  Branch (511:23): [True: 0, False: 219k]
  ------------------
  512|      0|#if HAVE_WCHAR_T
  513|      0|                    type = TYPE_WIDE_STRING;
  514|       |#else
  515|       |                    goto error;
  516|       |#endif
  517|   219k|                  else
  518|   219k|                    type = TYPE_STRING;
  519|   219k|                  break;
  520|      0|#if HAVE_WCHAR_T
  521|      0|                case 'S':
  ------------------
  |  Branch (521:17): [True: 0, False: 456k]
  ------------------
  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: 456k]
  ------------------
  527|      0|                  type = TYPE_POINTER;
  528|      0|                  break;
  529|      0|                case 'n':
  ------------------
  |  Branch (529:17): [True: 0, False: 456k]
  ------------------
  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: 456k]
  ------------------
  559|      0|                  type = TYPE_NONE;
  560|      0|                  break;
  561|      0|                default:
  ------------------
  |  Branch (561:17): [True: 0, False: 456k]
  ------------------
  562|       |                  /* Unknown conversion character.  */
  563|      0|                  goto error;
  564|   456k|                }
  565|   456k|            }
  566|       |
  567|   456k|            if (type != TYPE_NONE)
  ------------------
  |  Branch (567:17): [True: 456k, False: 0]
  ------------------
  568|   456k|              {
  569|   456k|                dp->arg_index = arg_index;
  570|   456k|                if (dp->arg_index == ARG_NONE)
  ------------------
  |  |   44|   456k|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (570:21): [True: 456k, False: 0]
  ------------------
  571|   456k|                  {
  572|   456k|                    dp->arg_index = arg_posn++;
  573|   456k|                    if (dp->arg_index == ARG_NONE)
  ------------------
  |  |   44|   456k|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (573:25): [True: 0, False: 456k]
  ------------------
  574|       |                      /* arg_posn wrapped around.  */
  575|      0|                      goto error;
  576|   456k|                  }
  577|   912k|                REGISTER_ARG (dp->arg_index, type);
  ------------------
  |  |  103|   456k|  {                                                                     \
  |  |  104|   456k|    size_t n = (_index_);                                               \
  |  |  105|   456k|    if (n >= a_allocated)                                               \
  |  |  ------------------
  |  |  |  Branch (105:9): [True: 0, False: 456k]
  |  |  ------------------
  |  |  106|   456k|      {                                                                 \
  |  |  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|   912k|    while (a->count <= n)                                               \
  |  |  ------------------
  |  |  |  Branch (127:12): [True: 456k, False: 456k]
  |  |  ------------------
  |  |  128|   456k|      a->arg[a->count++].type = TYPE_NONE;                              \
  |  |  129|   456k|    if (a->arg[n].type == TYPE_NONE)                                    \
  |  |  ------------------
  |  |  |  Branch (129:9): [True: 456k, False: 0]
  |  |  ------------------
  |  |  130|   456k|      a->arg[n].type = (_type_);                                        \
  |  |  131|   456k|    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|   456k|  }
  ------------------
  578|   456k|              }
  579|   456k|            dp->conversion = c;
  580|   456k|            dp->dir_end = cp;
  581|   456k|          }
  582|       |
  583|      0|          d->count++;
  584|   456k|          if (d->count >= d_allocated)
  ------------------
  |  Branch (584:15): [True: 0, False: 456k]
  ------------------
  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|   456k|        }
  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|  9.71M|    }
  613|   237k|  d->dir[d->count].dir_start = cp;
  614|       |
  615|   237k|  d->max_width_length = max_width_length;
  616|   237k|  d->max_precision_length = max_precision_length;
  617|   237k|  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|   237k|}

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

_g_gnulib_vasnprintf:
 1790|   237k|{
 1791|   237k|  DIRECTIVES d;
  ------------------
  |  |  151|   237k|#  define DIRECTIVES char_directives
  ------------------
 1792|   237k|  arguments a;
 1793|       |
 1794|   237k|  if (PRINTF_PARSE (format, &d, &a) < 0)
  ------------------
  |  |  152|   237k|#  define PRINTF_PARSE printf_parse
  |  |  ------------------
  |  |  |  |   26|   237k|#define printf_parse     _g_gnulib_printf_parse
  |  |  ------------------
  ------------------
  |  Branch (1794:7): [True: 0, False: 237k]
  ------------------
 1795|       |    /* errno is already set.  */
 1796|      0|    return NULL;
 1797|       |
 1798|   237k|#define CLEANUP() \
 1799|   237k|  if (d.dir != d.direct_alloc_dir)                                      \
 1800|   237k|    free (d.dir);                                                       \
 1801|   237k|  if (a.arg != a.direct_alloc_arg)                                      \
 1802|   237k|    free (a.arg);
 1803|       |
 1804|   237k|  if (PRINTF_FETCHARGS (args, &a) < 0)
  ------------------
  |  |   28|   237k|# define PRINTF_FETCHARGS printf_fetchargs
  |  |  ------------------
  |  |  |  |   27|   237k|#define printf_fetchargs _g_gnulib_printf_fetchargs
  |  |  ------------------
  ------------------
  |  Branch (1804:7): [True: 0, False: 237k]
  ------------------
 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|   237k|  {
 1812|   237k|    size_t buf_neededlength;
 1813|   237k|    TCHAR_T *buf;
  ------------------
  |  |  148|   237k|#  define TCHAR_T char
  ------------------
 1814|   237k|    TCHAR_T *buf_malloced;
  ------------------
  |  |  148|   237k|#  define TCHAR_T char
  ------------------
 1815|   237k|    const FCHAR_T *cp;
 1816|   237k|    size_t i;
 1817|   237k|    DIRECTIVE *dp;
  ------------------
  |  |  150|   237k|#  define DIRECTIVE char_directive
  ------------------
 1818|       |    /* Output string accumulator.  */
 1819|   237k|    DCHAR_T *result;
  ------------------
  |  |  147|   237k|#  define DCHAR_T char
  ------------------
 1820|   237k|    size_t allocated;
 1821|   237k|    size_t length;
 1822|       |
 1823|       |    /* Allocate a small buffer that will hold a directive passed to
 1824|       |       sprintf or snprintf.  */
 1825|   237k|    buf_neededlength =
 1826|   237k|      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|   237k|      {
 1836|   237k|        size_t buf_memsize = xtimes (buf_neededlength, sizeof (TCHAR_T));
  ------------------
  |  |  108|   237k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|   237k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|   237k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|   237k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|   237k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 237k, False: 0]
  |  |  ------------------
  ------------------
 1837|   237k|        if (size_overflow_p (buf_memsize))
  ------------------
  |  |  112|   237k|  ((SIZE) == G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|   237k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|   237k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (112:3): [True: 0, False: 237k]
  |  |  ------------------
  ------------------
 1838|      0|          goto out_of_memory_1;
 1839|   237k|        buf = (TCHAR_T *) malloc (buf_memsize);
  ------------------
  |  |   33|   237k|#define malloc  g_malloc
  ------------------
 1840|   237k|        if (buf == NULL)
  ------------------
  |  Branch (1840:13): [True: 0, False: 237k]
  ------------------
 1841|      0|          goto out_of_memory_1;
 1842|   237k|        buf_malloced = buf;
 1843|   237k|      }
 1844|       |
 1845|   237k|    if (resultbuf != NULL)
  ------------------
  |  Branch (1845:9): [True: 0, False: 237k]
  ------------------
 1846|      0|      {
 1847|      0|        result = resultbuf;
 1848|      0|        allocated = *lengthp;
 1849|      0|      }
 1850|   237k|    else
 1851|   237k|      {
 1852|   237k|        result = NULL;
 1853|   237k|        allocated = 0;
 1854|   237k|      }
 1855|   237k|    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|   237k|#define ENSURE_ALLOCATION(needed) \
 1863|   237k|    if ((needed) > allocated)                                                \
 1864|   237k|      {                                                                      \
 1865|   237k|        size_t memory_size;                                                  \
 1866|   237k|        DCHAR_T *memory;                                                     \
 1867|   237k|                                                                             \
 1868|   237k|        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
 1869|   237k|        if ((needed) > allocated)                                            \
 1870|   237k|          allocated = (needed);                                              \
 1871|   237k|        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
 1872|   237k|        if (size_overflow_p (memory_size))                                   \
 1873|   237k|          goto out_of_memory;                                                \
 1874|   237k|        if (result == resultbuf || result == NULL)                           \
 1875|   237k|          memory = (DCHAR_T *) malloc (memory_size);                         \
 1876|   237k|        else                                                                 \
 1877|   237k|          memory = (DCHAR_T *) realloc (result, memory_size);                \
 1878|   237k|        if (memory == NULL)                                                  \
 1879|   237k|          goto out_of_memory;                                                \
 1880|   237k|        if (result == resultbuf && length > 0)                               \
 1881|   237k|          DCHAR_CPY (memory, result, length);                                \
 1882|   237k|        result = memory;                                                     \
 1883|   237k|      }
 1884|       |
 1885|   456k|    for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++)
 1886|   693k|      {
 1887|   693k|        if (cp != dp->dir_start)
  ------------------
  |  Branch (1887:13): [True: 688k, False: 5.11k]
  ------------------
 1888|   688k|          {
 1889|   688k|            size_t n = dp->dir_start - cp;
 1890|   688k|            size_t augmented_length = xsum (length, n);
 1891|       |
 1892|   688k|            ENSURE_ALLOCATION (augmented_length);
  ------------------
  |  | 1863|   688k|    if ((needed) > allocated)                                                \
  |  |  ------------------
  |  |  |  Branch (1863:9): [True: 467k, False: 220k]
  |  |  ------------------
  |  | 1864|   688k|      {                                                                      \
  |  | 1865|   467k|        size_t memory_size;                                                  \
  |  | 1866|   467k|        DCHAR_T *memory;                                                     \
  |  |  ------------------
  |  |  |  |  147|   467k|#  define DCHAR_T char
  |  |  ------------------
  |  | 1867|   467k|                                                                             \
  |  | 1868|   467k|        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
  |  |  ------------------
  |  |  |  |  108|   233k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   233k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   233k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   233k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   233k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 233k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1868:22): [True: 233k, False: 234k]
  |  |  ------------------
  |  | 1869|   467k|        if ((needed) > allocated)                                            \
  |  |  ------------------
  |  |  |  Branch (1869:13): [True: 234k, False: 233k]
  |  |  ------------------
  |  | 1870|   467k|          allocated = (needed);                                              \
  |  | 1871|   467k|        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
  |  |  ------------------
  |  |  |  |  108|   467k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   467k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   467k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   467k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   467k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 467k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1872|   467k|        if (size_overflow_p (memory_size))                                   \
  |  |  ------------------
  |  |  |  |  112|   467k|  ((SIZE) == G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   467k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   467k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:3): [True: 0, False: 467k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1873|   467k|          goto out_of_memory;                                                \
  |  | 1874|   467k|        if (result == resultbuf || result == NULL)                           \
  |  |  ------------------
  |  |  |  Branch (1874:13): [True: 234k, False: 233k]
  |  |  |  Branch (1874:36): [True: 0, False: 233k]
  |  |  ------------------
  |  | 1875|   467k|          memory = (DCHAR_T *) malloc (memory_size);                         \
  |  |  ------------------
  |  |  |  |   33|   234k|#define malloc  g_malloc
  |  |  ------------------
  |  | 1876|   467k|        else                                                                 \
  |  | 1877|   467k|          memory = (DCHAR_T *) realloc (result, memory_size);                \
  |  |  ------------------
  |  |  |  |   34|   233k|#define realloc g_realloc
  |  |  ------------------
  |  | 1878|   467k|        if (memory == NULL)                                                  \
  |  |  ------------------
  |  |  |  Branch (1878:13): [True: 0, False: 467k]
  |  |  ------------------
  |  | 1879|   467k|          goto out_of_memory;                                                \
  |  | 1880|   467k|        if (result == resultbuf && length > 0)                               \
  |  |  ------------------
  |  |  |  Branch (1880:13): [True: 234k, False: 233k]
  |  |  |  Branch (1880:36): [True: 0, False: 234k]
  |  |  ------------------
  |  | 1881|   467k|          DCHAR_CPY (memory, result, length);                                \
  |  |  ------------------
  |  |  |  |  153|      0|#  define DCHAR_CPY memcpy
  |  |  ------------------
  |  | 1882|   467k|        result = memory;                                                     \
  |  | 1883|   467k|      }
  ------------------
 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|   688k|            if (sizeof (FCHAR_T) == sizeof (DCHAR_T))
  ------------------
  |  Branch (1896:17): [True: 688k, Folded]
  ------------------
 1897|   688k|              {
 1898|   688k|                DCHAR_CPY (result + length, (const DCHAR_T *) cp, n);
  ------------------
  |  |  153|   688k|#  define DCHAR_CPY memcpy
  ------------------
 1899|   688k|                length = augmented_length;
 1900|   688k|              }
 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|   688k|          }
 1908|   693k|        if (i == d.count)
  ------------------
  |  Branch (1908:13): [True: 237k, False: 456k]
  ------------------
 1909|   237k|          break;
 1910|       |
 1911|       |        /* Execute a single directive.  */
 1912|   456k|        if (dp->conversion == '%')
  ------------------
  |  Branch (1912:13): [True: 0, False: 456k]
  ------------------
 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|   456k|        else
 1924|   456k|          {
 1925|   456k|            if (!(dp->arg_index != ARG_NONE))
  ------------------
  |  |   44|   456k|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (1925:17): [True: 0, False: 456k]
  ------------------
 1926|      0|              abort ();
 1927|       |
 1928|   456k|            if (dp->conversion == 'n')
  ------------------
  |  Branch (1928:17): [True: 0, False: 456k]
  ------------------
 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|   456k|#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && HAVE_WCHAR_T
 2411|   456k|            else if (dp->conversion == 's'
  ------------------
  |  Branch (2411:22): [True: 219k, False: 236k]
  ------------------
 2412|       |# if WIDE_CHAR_VERSION
 2413|       |                     && a.arg[dp->arg_index].type != TYPE_WIDE_STRING
 2414|       |# else
 2415|   219k|                     && a.arg[dp->arg_index].type == TYPE_WIDE_STRING
  ------------------
  |  Branch (2415:25): [True: 0, False: 219k]
  ------------------
 2416|   456k|# endif
 2417|   456k|                    )
 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|   456k|#endif
 2929|   456k|#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL
 2930|   456k|            else if ((dp->conversion == 'a' || dp->conversion == 'A')
  ------------------
  |  Branch (2930:23): [True: 0, False: 456k]
  |  Branch (2930:48): [True: 0, False: 456k]
  ------------------
 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|   456k|                    )
 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|   456k|#endif
 3419|   456k|#if (NEED_PRINTF_INFINITE_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
 3420|   456k|            else if ((dp->conversion == 'f' || dp->conversion == 'F'
  ------------------
  |  Branch (3420:23): [True: 0, False: 456k]
  |  Branch (3420:48): [True: 0, False: 456k]
  ------------------
 3421|   456k|                      || dp->conversion == 'e' || dp->conversion == 'E'
  ------------------
  |  Branch (3421:26): [True: 0, False: 456k]
  |  Branch (3421:51): [True: 0, False: 456k]
  ------------------
 3422|   456k|                      || dp->conversion == 'g' || dp->conversion == 'G'
  ------------------
  |  Branch (3422:26): [True: 0, False: 456k]
  |  Branch (3422:51): [True: 0, False: 456k]
  ------------------
 3423|   456k|                      || dp->conversion == 'a' || dp->conversion == 'A')
  ------------------
  |  Branch (3423:26): [True: 0, False: 456k]
  |  Branch (3423:51): [True: 0, False: 456k]
  ------------------
 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|   456k|#endif
 4602|   456k|            else
 4603|   456k|              {
 4604|   456k|                arg_type type = a.arg[dp->arg_index].type;
 4605|   456k|                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|   456k|#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|   456k|                size_t width;
 4611|   456k|#endif
 4612|   456k|#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION
 4613|   456k|                int has_precision;
 4614|   456k|                size_t precision;
 4615|   456k|#endif
 4616|       |#if NEED_PRINTF_UNBOUNDED_PRECISION
 4617|       |                int prec_ourselves;
 4618|       |#else
 4619|   456k|#               define prec_ourselves 0
 4620|   456k|#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|   456k|#               define pad_ourselves 0
 4627|   456k|#endif
 4628|   456k|                TCHAR_T *fbp;
  ------------------
  |  |  148|   456k|#  define TCHAR_T char
  ------------------
 4629|   456k|                unsigned int prefix_count;
 4630|   456k|                int prefixes[2] IF_LINT (= { 0 });
  ------------------
  |  |  212|   456k|# define IF_LINT(Code) Code
  ------------------
 4631|   456k|                int orig_errno;
 4632|   456k|#if !USE_SNPRINTF
 4633|   456k|                size_t tmp_length;
 4634|   456k|                TCHAR_T tmpbuf[700];
  ------------------
  |  |  148|   456k|#  define TCHAR_T char
  ------------------
 4635|   456k|                TCHAR_T *tmp;
  ------------------
  |  |  148|   456k|#  define TCHAR_T char
  ------------------
 4636|   456k|#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|   456k|#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|   456k|                width = 0;
 4643|   456k|                if (dp->width_start != dp->width_end)
  ------------------
  |  Branch (4643:21): [True: 2.75k, False: 453k]
  ------------------
 4644|  2.75k|                  {
 4645|  2.75k|                    if (dp->width_arg_index != ARG_NONE)
  ------------------
  |  |   44|  2.75k|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (4645:25): [True: 0, False: 2.75k]
  ------------------
 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|  2.75k|                    else
 4662|  2.75k|                      {
 4663|  2.75k|                        const FCHAR_T *digitp = dp->width_start;
 4664|       |
 4665|  2.75k|                        do
 4666|  2.75k|                          width = xsum (xtimes (width, 10), *digitp++ - '0');
  ------------------
  |  |  108|  2.75k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|  2.75k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|  2.75k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|  2.75k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|  2.75k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 2.75k, False: 0]
  |  |  ------------------
  ------------------
 4667|  2.75k|                        while (digitp != dp->width_end);
  ------------------
  |  Branch (4667:32): [True: 0, False: 2.75k]
  ------------------
 4668|  2.75k|                      }
 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|  2.75k|                  }
 4673|   456k|#endif
 4674|       |
 4675|   456k|#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION
 4676|   456k|                has_precision = 0;
 4677|   456k|                precision = 6;
 4678|   456k|                if (dp->precision_start != dp->precision_end)
  ------------------
  |  Branch (4678:21): [True: 0, False: 456k]
  ------------------
 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|   456k|#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|   456k|#if !USE_SNPRINTF
 4746|       |                /* Allocate a temporary buffer of sufficient size for calling
 4747|       |                   sprintf.  */
 4748|   456k|                tmp_length =
 4749|   456k|                  MAX_ROOM_NEEDED (&a, dp->arg_index, dp->conversion, type,
  ------------------
  |  | 1543|   456k|#  define MAX_ROOM_NEEDED max_room_needed
  ------------------
 4750|   456k|                                   flags, width, has_precision, precision,
 4751|   456k|                                   pad_ourselves);
  ------------------
  |  | 4626|   456k|#               define pad_ourselves 0
  ------------------
 4752|       |
 4753|   456k|                if (tmp_length <= sizeof (tmpbuf) / sizeof (TCHAR_T))
  ------------------
  |  Branch (4753:21): [True: 456k, False: 0]
  ------------------
 4754|   456k|                  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|   456k|#endif
 4768|       |
 4769|       |                /* Construct the format string for calling snprintf or
 4770|       |                   sprintf.  */
 4771|   456k|                fbp = buf;
 4772|   456k|                *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|   456k|                if (flags & FLAG_GROUP)
  ------------------
  |  |   33|   456k|#define FLAG_GROUP       1      /* ' flag */
  ------------------
  |  Branch (4778:21): [True: 0, False: 456k]
  ------------------
 4779|      0|                  *fbp++ = '\'';
 4780|   456k|#endif
 4781|   456k|                if (flags & FLAG_LEFT)
  ------------------
  |  |   34|   456k|#define FLAG_LEFT        2      /* - flag */
  ------------------
  |  Branch (4781:21): [True: 0, False: 456k]
  ------------------
 4782|      0|                  *fbp++ = '-';
 4783|   456k|                if (flags & FLAG_SHOWSIGN)
  ------------------
  |  |   35|   456k|#define FLAG_SHOWSIGN    4      /* + flag */
  ------------------
  |  Branch (4783:21): [True: 0, False: 456k]
  ------------------
 4784|      0|                  *fbp++ = '+';
 4785|   456k|                if (flags & FLAG_SPACE)
  ------------------
  |  |   36|   456k|#define FLAG_SPACE       8      /* space flag */
  ------------------
  |  Branch (4785:21): [True: 0, False: 456k]
  ------------------
 4786|      0|                  *fbp++ = ' ';
 4787|   456k|                if (flags & FLAG_ALT)
  ------------------
  |  |   37|   456k|#define FLAG_ALT        16      /* # flag */
  ------------------
  |  Branch (4787:21): [True: 0, False: 456k]
  ------------------
 4788|      0|                  *fbp++ = '#';
 4789|   456k|#if __GLIBC__ >= 2 && !defined __UCLIBC__
 4790|   456k|                if (flags & FLAG_LOCALIZED)
  ------------------
  |  |   40|   456k|# define FLAG_LOCALIZED 64      /* I flag, uses localized digits */
  ------------------
  |  Branch (4790:21): [True: 0, False: 456k]
  ------------------
 4791|      0|                  *fbp++ = 'I';
 4792|   456k|#endif
 4793|   456k|                if (!pad_ourselves)
  ------------------
  |  | 4626|   456k|#               define pad_ourselves 0
  ------------------
  |  Branch (4793:21): [True: 456k, Folded]
  ------------------
 4794|   456k|                  {
 4795|   456k|                    if (flags & FLAG_ZERO)
  ------------------
  |  |   38|   456k|#define FLAG_ZERO       32
  ------------------
  |  Branch (4795:25): [True: 2.75k, False: 453k]
  ------------------
 4796|  2.75k|                      *fbp++ = '0';
 4797|   456k|                    if (dp->width_start != dp->width_end)
  ------------------
  |  Branch (4797:25): [True: 2.75k, False: 453k]
  ------------------
 4798|  2.75k|                      {
 4799|  2.75k|                        size_t n = dp->width_end - dp->width_start;
 4800|       |                        /* The width specification is known to consist only
 4801|       |                           of standard ASCII characters.  */
 4802|  2.75k|                        if (sizeof (FCHAR_T) == sizeof (TCHAR_T))
  ------------------
  |  Branch (4802:29): [True: 2.75k, Folded]
  ------------------
 4803|  2.75k|                          {
 4804|  2.75k|                            memcpy (fbp, dp->width_start, n * sizeof (TCHAR_T));
 4805|  2.75k|                            fbp += n;
 4806|  2.75k|                          }
 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|  2.75k|                      }
 4815|   456k|                  }
 4816|   456k|                if (!prec_ourselves)
  ------------------
  |  | 4619|   456k|#               define prec_ourselves 0
  ------------------
  |  Branch (4816:21): [True: 456k, Folded]
  ------------------
 4817|   456k|                  {
 4818|   456k|                    if (dp->precision_start != dp->precision_end)
  ------------------
  |  Branch (4818:25): [True: 0, False: 456k]
  ------------------
 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|   456k|                  }
 4837|       |
 4838|   456k|                switch (type)
 4839|   456k|                  {
 4840|      0|#if HAVE_LONG_LONG
 4841|      0|                  case TYPE_LONGLONGINT:
  ------------------
  |  Branch (4841:19): [True: 0, False: 456k]
  ------------------
 4842|      0|                  case TYPE_ULONGLONGINT:
  ------------------
  |  Branch (4842:19): [True: 0, False: 456k]
  ------------------
 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: 456k]
  ------------------
 4854|      0|                  case TYPE_ULONGINT:
  ------------------
  |  Branch (4854:19): [True: 0, False: 456k]
  ------------------
 4855|      0|#if HAVE_WINT_T
 4856|      0|                  case TYPE_WIDE_CHAR:
  ------------------
  |  Branch (4856:19): [True: 0, False: 456k]
  ------------------
 4857|      0|#endif
 4858|      0|#if HAVE_WCHAR_T
 4859|      0|                  case TYPE_WIDE_STRING:
  ------------------
  |  Branch (4859:19): [True: 0, False: 456k]
  ------------------
 4860|      0|#endif
 4861|      0|                    *fbp++ = 'l';
 4862|      0|                    break;
 4863|      0|                  case TYPE_LONGDOUBLE:
  ------------------
  |  Branch (4863:19): [True: 0, False: 456k]
  ------------------
 4864|      0|                    *fbp++ = 'L';
 4865|      0|                    break;
 4866|   456k|                  default:
  ------------------
  |  Branch (4866:19): [True: 456k, False: 0]
  ------------------
 4867|   456k|                    break;
 4868|   456k|                  }
 4869|       |#if NEED_PRINTF_DIRECTIVE_F
 4870|       |                if (dp->conversion == 'F')
 4871|       |                  *fbp = 'f';
 4872|       |                else
 4873|       |#endif
 4874|   456k|                  *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|   456k|                fbp[1] = '\0';
 4928|   456k|#endif
 4929|       |
 4930|       |                /* Construct the arguments for calling snprintf or sprintf.  */
 4931|   456k|                prefix_count = 0;
 4932|   456k|                if (!pad_ourselves && dp->width_arg_index != ARG_NONE)
  ------------------
  |  | 4626|   912k|#               define pad_ourselves 0
  ------------------
                              if (!pad_ourselves && dp->width_arg_index != ARG_NONE)
  ------------------
  |  |   44|   456k|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (4932:21): [True: 456k, Folded]
  |  Branch (4932:39): [True: 0, False: 456k]
  ------------------
 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|   456k|                if (!prec_ourselves && dp->precision_arg_index != ARG_NONE)
  ------------------
  |  | 4619|   912k|#               define prec_ourselves 0
  ------------------
                              if (!prec_ourselves && dp->precision_arg_index != ARG_NONE)
  ------------------
  |  |   44|   456k|#define ARG_NONE        (~(size_t)0)
  ------------------
  |  Branch (4938:21): [True: 456k, Folded]
  |  Branch (4938:40): [True: 0, False: 456k]
  ------------------
 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|   456k|                orig_errno = errno;
 4963|       |
 4964|   456k|                for (;;)
 4965|   456k|                  {
 4966|   456k|                    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|   456k|# define SNPRINTF_BUF(arg) \
 5000|   456k|                    switch (prefix_count)                                   \
 5001|   456k|                      {                                                     \
 5002|   456k|                      case 0:                                               \
 5003|   456k|                        count = sprintf (tmp, buf, arg);                    \
 5004|   456k|                        break;                                              \
 5005|   456k|                      case 1:                                               \
 5006|   456k|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
 5007|   456k|                        break;                                              \
 5008|   456k|                      case 2:                                               \
 5009|   456k|                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
 5010|   456k|                                         arg);                              \
 5011|   456k|                        break;                                              \
 5012|   456k|                      default:                                              \
 5013|   456k|                        abort ();                                           \
 5014|   456k|                      }
 5015|   456k|#endif
 5016|       |
 5017|   456k|                    errno = 0;
 5018|   456k|                    switch (type)
 5019|   456k|                      {
 5020|      0|                      case TYPE_SCHAR:
  ------------------
  |  Branch (5020:23): [True: 0, False: 456k]
  ------------------
 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: 456k]
  ------------------
 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: 456k]
  ------------------
 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: 456k]
  ------------------
 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: 456k]
  ------------------
 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|   236k|                      case TYPE_UINT:
  ------------------
  |  Branch (5050:23): [True: 236k, False: 219k]
  ------------------
 5051|   236k|                        {
 5052|   236k|                          unsigned int arg = a.arg[dp->arg_index].a.a_uint;
 5053|   236k|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|   236k|                    switch (prefix_count)                                   \
  |  | 5001|   236k|                      {                                                     \
  |  | 5002|   236k|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 236k, False: 0]
  |  |  ------------------
  |  | 5003|   236k|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|   236k|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 236k]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 236k]
  |  |  ------------------
  |  | 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: 236k]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|   236k|                      }
  ------------------
 5054|   236k|                        }
 5055|      0|                        break;
 5056|      0|                      case TYPE_LONGINT:
  ------------------
  |  Branch (5056:23): [True: 0, False: 456k]
  ------------------
 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: 456k]
  ------------------
 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: 456k]
  ------------------
 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: 456k]
  ------------------
 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: 456k]
  ------------------
 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: 456k]
  ------------------
 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: 456k]
  ------------------
 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: 456k]
  ------------------
 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|   219k|                      case TYPE_STRING:
  ------------------
  |  Branch (5108:23): [True: 219k, False: 236k]
  ------------------
 5109|   219k|                        {
 5110|   219k|                          const char *arg = a.arg[dp->arg_index].a.a_string;
 5111|   219k|                          SNPRINTF_BUF (arg);
  ------------------
  |  | 5000|   219k|                    switch (prefix_count)                                   \
  |  | 5001|   219k|                      {                                                     \
  |  | 5002|   219k|                      case 0:                                               \
  |  |  ------------------
  |  |  |  Branch (5002:23): [True: 219k, False: 0]
  |  |  ------------------
  |  | 5003|   219k|                        count = sprintf (tmp, buf, arg);                    \
  |  | 5004|   219k|                        break;                                              \
  |  | 5005|      0|                      case 1:                                               \
  |  |  ------------------
  |  |  |  Branch (5005:23): [True: 0, False: 219k]
  |  |  ------------------
  |  | 5006|      0|                        count = sprintf (tmp, buf, prefixes[0], arg);       \
  |  | 5007|      0|                        break;                                              \
  |  | 5008|      0|                      case 2:                                               \
  |  |  ------------------
  |  |  |  Branch (5008:23): [True: 0, False: 219k]
  |  |  ------------------
  |  | 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: 219k]
  |  |  ------------------
  |  | 5013|      0|                        abort ();                                           \
  |  | 5014|   219k|                      }
  ------------------
 5112|   219k|                        }
 5113|      0|                        break;
 5114|      0|#if HAVE_WCHAR_T
 5115|      0|                      case TYPE_WIDE_STRING:
  ------------------
  |  Branch (5115:23): [True: 0, False: 456k]
  ------------------
 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: 456k]
  ------------------
 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: 456k]
  ------------------
 5129|      0|                        abort ();
 5130|   456k|                      }
 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|   456k|                    if (count < 0)
  ------------------
  |  Branch (5211:25): [True: 0, False: 456k]
  ------------------
 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|   456k|#if !USE_SNPRINTF
 5335|   456k|                    if (count >= tmp_length)
  ------------------
  |  Branch (5335:25): [True: 0, False: 456k]
  ------------------
 5336|       |                      /* tmp_length was incorrectly calculated - fix the
 5337|       |                         code above!  */
 5338|      0|                      abort ();
 5339|   456k|#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|   456k|#if DCHAR_IS_TCHAR && !USE_SNPRINTF
 5425|       |                    /* Make room for the result.  */
 5426|   456k|                    if (count > allocated - length)
  ------------------
  |  Branch (5426:25): [True: 222k, False: 233k]
  ------------------
 5427|   222k|                      {
 5428|       |                        /* Need at least count elements.  But allocate
 5429|       |                           proportionally.  */
 5430|   222k|                        size_t n =
 5431|   222k|                          xmax (xsum (length, count), xtimes (allocated, 2));
  ------------------
  |  |  108|   222k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|   222k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|   222k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  ------------------
  |  |  |  |   84|   222k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|   222k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (108:4): [True: 222k, False: 0]
  |  |  ------------------
  ------------------
 5432|       |
 5433|   222k|                        ENSURE_ALLOCATION (n);
  ------------------
  |  | 1863|   222k|    if ((needed) > allocated)                                                \
  |  |  ------------------
  |  |  |  Branch (1863:9): [True: 222k, False: 0]
  |  |  ------------------
  |  | 1864|   222k|      {                                                                      \
  |  | 1865|   222k|        size_t memory_size;                                                  \
  |  | 1866|   222k|        DCHAR_T *memory;                                                     \
  |  |  ------------------
  |  |  |  |  147|   222k|#  define DCHAR_T char
  |  |  ------------------
  |  | 1867|   222k|                                                                             \
  |  | 1868|   222k|        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
  |  |  ------------------
  |  |  |  |  108|   219k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   219k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   219k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   219k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   219k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 219k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1868:22): [True: 219k, False: 2.52k]
  |  |  ------------------
  |  | 1869|   222k|        if ((needed) > allocated)                                            \
  |  |  ------------------
  |  |  |  Branch (1869:13): [True: 0, False: 222k]
  |  |  ------------------
  |  | 1870|   222k|          allocated = (needed);                                              \
  |  | 1871|   222k|        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
  |  |  ------------------
  |  |  |  |  108|   222k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   222k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   222k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   222k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   222k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 222k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1872|   222k|        if (size_overflow_p (memory_size))                                   \
  |  |  ------------------
  |  |  |  |  112|   222k|  ((SIZE) == G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   222k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   222k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:3): [True: 0, False: 222k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1873|   222k|          goto out_of_memory;                                                \
  |  | 1874|   222k|        if (result == resultbuf || result == NULL)                           \
  |  |  ------------------
  |  |  |  Branch (1874:13): [True: 2.52k, False: 219k]
  |  |  |  Branch (1874:36): [True: 0, False: 219k]
  |  |  ------------------
  |  | 1875|   222k|          memory = (DCHAR_T *) malloc (memory_size);                         \
  |  |  ------------------
  |  |  |  |   33|  2.52k|#define malloc  g_malloc
  |  |  ------------------
  |  | 1876|   222k|        else                                                                 \
  |  | 1877|   222k|          memory = (DCHAR_T *) realloc (result, memory_size);                \
  |  |  ------------------
  |  |  |  |   34|   219k|#define realloc g_realloc
  |  |  ------------------
  |  | 1878|   222k|        if (memory == NULL)                                                  \
  |  |  ------------------
  |  |  |  Branch (1878:13): [True: 0, False: 222k]
  |  |  ------------------
  |  | 1879|   222k|          goto out_of_memory;                                                \
  |  | 1880|   222k|        if (result == resultbuf && length > 0)                               \
  |  |  ------------------
  |  |  |  Branch (1880:13): [True: 2.52k, False: 219k]
  |  |  |  Branch (1880:36): [True: 0, False: 2.52k]
  |  |  ------------------
  |  | 1881|   222k|          DCHAR_CPY (memory, result, length);                                \
  |  |  ------------------
  |  |  |  |  153|      0|#  define DCHAR_CPY memcpy
  |  |  ------------------
  |  | 1882|   222k|        result = memory;                                                     \
  |  | 1883|   222k|      }
  ------------------
 5434|   222k|                      }
 5435|   456k|#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|   456k|                    memcpy (result + length, tmp, count * sizeof (DCHAR_T));
 5544|   456k|#endif
 5545|   456k|#if !USE_SNPRINTF
 5546|   456k|                    if (tmp != tmpbuf)
  ------------------
  |  Branch (5546:25): [True: 0, False: 456k]
  ------------------
 5547|      0|                      free (tmp);
  ------------------
  |  |   35|      0|#define free    g_free
  ------------------
 5548|   456k|#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|   456k|                    length += count;
 5563|   456k|                    break;
 5564|   456k|                  }
 5565|   456k|                errno = orig_errno;
 5566|   456k|#undef pad_ourselves
 5567|   456k|#undef prec_ourselves
 5568|   456k|              }
 5569|   456k|          }
 5570|   456k|      }
 5571|       |
 5572|       |    /* Add the final NUL.  */
 5573|   237k|    ENSURE_ALLOCATION (xsum (length, 1));
  ------------------
  |  | 1863|   237k|    if ((needed) > allocated)                                                \
  |  |  ------------------
  |  |  |  Branch (1863:9): [True: 15.8k, False: 221k]
  |  |  ------------------
  |  | 1864|   237k|      {                                                                      \
  |  | 1865|  15.8k|        size_t memory_size;                                                  \
  |  | 1866|  15.8k|        DCHAR_T *memory;                                                     \
  |  |  ------------------
  |  |  |  |  147|  15.8k|#  define DCHAR_T char
  |  |  ------------------
  |  | 1867|  15.8k|                                                                             \
  |  | 1868|  15.8k|        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
  |  |  ------------------
  |  |  |  |  108|  15.8k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  15.8k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  15.8k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  15.8k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  15.8k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 15.8k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1868:22): [True: 15.8k, False: 0]
  |  |  ------------------
  |  | 1869|  15.8k|        if ((needed) > allocated)                                            \
  |  |  ------------------
  |  |  |  Branch (1869:13): [True: 0, False: 15.8k]
  |  |  ------------------
  |  | 1870|  15.8k|          allocated = (needed);                                              \
  |  | 1871|  15.8k|        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
  |  |  ------------------
  |  |  |  |  108|  15.8k|  ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  15.8k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  15.8k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  15.8k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  15.8k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:4): [True: 15.8k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1872|  15.8k|        if (size_overflow_p (memory_size))                                   \
  |  |  ------------------
  |  |  |  |  112|  15.8k|  ((SIZE) == G_MAXSIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  15.8k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  15.8k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:3): [True: 0, False: 15.8k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1873|  15.8k|          goto out_of_memory;                                                \
  |  | 1874|  15.8k|        if (result == resultbuf || result == NULL)                           \
  |  |  ------------------
  |  |  |  Branch (1874:13): [True: 0, False: 15.8k]
  |  |  |  Branch (1874:36): [True: 0, False: 15.8k]
  |  |  ------------------
  |  | 1875|  15.8k|          memory = (DCHAR_T *) malloc (memory_size);                         \
  |  |  ------------------
  |  |  |  |   33|      0|#define malloc  g_malloc
  |  |  ------------------
  |  | 1876|  15.8k|        else                                                                 \
  |  | 1877|  15.8k|          memory = (DCHAR_T *) realloc (result, memory_size);                \
  |  |  ------------------
  |  |  |  |   34|  15.8k|#define realloc g_realloc
  |  |  ------------------
  |  | 1878|  15.8k|        if (memory == NULL)                                                  \
  |  |  ------------------
  |  |  |  Branch (1878:13): [True: 0, False: 15.8k]
  |  |  ------------------
  |  | 1879|  15.8k|          goto out_of_memory;                                                \
  |  | 1880|  15.8k|        if (result == resultbuf && length > 0)                               \
  |  |  ------------------
  |  |  |  Branch (1880:13): [True: 0, False: 15.8k]
  |  |  |  Branch (1880:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 1881|  15.8k|          DCHAR_CPY (memory, result, length);                                \
  |  |  ------------------
  |  |  |  |  153|      0|#  define DCHAR_CPY memcpy
  |  |  ------------------
  |  | 1882|  15.8k|        result = memory;                                                     \
  |  | 1883|  15.8k|      }
  ------------------
 5574|   237k|    result[length] = '\0';
 5575|       |
 5576|   237k|    if (result != resultbuf && length + 1 < allocated)
  ------------------
  |  Branch (5576:9): [True: 237k, False: 0]
  |  Branch (5576:32): [True: 237k, False: 269]
  ------------------
 5577|   237k|      {
 5578|       |        /* Shrink the allocated memory if possible.  */
 5579|   237k|        DCHAR_T *memory;
  ------------------
  |  |  147|   237k|#  define DCHAR_T char
  ------------------
 5580|       |
 5581|   237k|        memory = (DCHAR_T *) realloc (result, (length + 1) * sizeof (DCHAR_T));
  ------------------
  |  |   34|   237k|#define realloc g_realloc
  ------------------
 5582|   237k|        if (memory != NULL)
  ------------------
  |  Branch (5582:13): [True: 237k, False: 0]
  ------------------
 5583|   237k|          result = memory;
 5584|   237k|      }
 5585|       |
 5586|   237k|    if (buf_malloced != NULL)
  ------------------
  |  Branch (5586:9): [True: 237k, False: 0]
  ------------------
 5587|   237k|      free (buf_malloced);
  ------------------
  |  |   35|   237k|#define free    g_free
  ------------------
 5588|   237k|    CLEANUP ();
  ------------------
  |  | 1799|   237k|  if (d.dir != d.direct_alloc_dir)                                      \
  |  |  ------------------
  |  |  |  Branch (1799:7): [True: 0, False: 237k]
  |  |  ------------------
  |  | 1800|   237k|    free (d.dir);                                                       \
  |  |  ------------------
  |  |  |  |   35|      0|#define free    g_free
  |  |  ------------------
  |  | 1801|   237k|  if (a.arg != a.direct_alloc_arg)                                      \
  |  |  ------------------
  |  |  |  Branch (1801:7): [True: 0, False: 237k]
  |  |  ------------------
  |  | 1802|   237k|    free (a.arg);
  |  |  ------------------
  |  |  |  |   35|      0|#define free    g_free
  |  |  ------------------
  ------------------
 5589|   237k|    *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|   237k|    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|   456k|{
 1553|   456k|  size_t tmp_length;
 1554|       |
 1555|   456k|  switch (conversion)
 1556|   456k|    {
 1557|      0|    case 'd': case 'i': case 'u':
  ------------------
  |  Branch (1557:5): [True: 0, False: 456k]
  |  Branch (1557:15): [True: 0, False: 456k]
  |  Branch (1557:25): [True: 0, False: 456k]
  ------------------
 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: 456k]
  ------------------
 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|   236k|    case 'x': case 'X':
  ------------------
  |  Branch (1615:5): [True: 234k, False: 221k]
  |  Branch (1615:15): [True: 2.52k, False: 453k]
  ------------------
 1616|   236k|# if HAVE_LONG_LONG
 1617|   236k|      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
  ------------------
  |  Branch (1617:11): [True: 0, False: 236k]
  |  Branch (1617:39): [True: 0, False: 236k]
  ------------------
 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|   236k|      else
 1624|   236k|# endif
 1625|   236k|      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
  ------------------
  |  Branch (1625:11): [True: 0, False: 236k]
  |  Branch (1625:35): [True: 0, False: 236k]
  ------------------
 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|   236k|      else
 1632|   236k|        tmp_length =
 1633|   236k|          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
 1634|   236k|                          * 0.25 /* binary -> hexadecimal */
 1635|   236k|                         )
 1636|   236k|          + 1; /* turn floor into ceil */
 1637|   236k|      if (tmp_length < precision)
  ------------------
  |  Branch (1637:11): [True: 0, False: 236k]
  ------------------
 1638|      0|        tmp_length = precision;
 1639|       |      /* Add 2, to account for a leading sign or alternate form.  */
 1640|   236k|      tmp_length = xsum (tmp_length, 2);
 1641|   236k|      break;
 1642|       |
 1643|      0|    case 'f': case 'F':
  ------------------
  |  Branch (1643:5): [True: 0, False: 456k]
  |  Branch (1643:15): [True: 0, False: 456k]
  ------------------
 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: 456k]
  |  Branch (1663:15): [True: 0, False: 456k]
  |  Branch (1663:25): [True: 0, False: 456k]
  |  Branch (1663:35): [True: 0, False: 456k]
  ------------------
 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: 456k]
  |  Branch (1669:15): [True: 0, False: 456k]
  ------------------
 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: 456k]
  ------------------
 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|   219k|    case 's':
  ------------------
  |  Branch (1697:5): [True: 219k, False: 236k]
  ------------------
 1698|   219k|# if HAVE_WCHAR_T
 1699|   219k|      if (type == TYPE_WIDE_STRING)
  ------------------
  |  Branch (1699:11): [True: 0, False: 219k]
  ------------------
 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|   219k|      else
 1726|   219k|# endif
 1727|   219k|        {
 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|   219k|          const char *arg = ap->arg[arg_index].a.a_string;
 1742|       |
 1743|   219k|          if (has_precision)
  ------------------
  |  Branch (1743:15): [True: 0, False: 219k]
  ------------------
 1744|      0|            tmp_length = local_strnlen (arg, precision);
  ------------------
  |  |  226|      0|#  define local_strnlen strnlen
  ------------------
 1745|   219k|          else
 1746|   219k|            tmp_length = strlen (arg);
 1747|   219k|# endif
 1748|   219k|        }
 1749|   219k|      break;
 1750|       |
 1751|   219k|    case 'p':
  ------------------
  |  Branch (1751:5): [True: 0, False: 456k]
  ------------------
 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: 456k]
  ------------------
 1761|      0|      abort ();
 1762|   456k|    }
 1763|       |
 1764|   456k|  if (!pad_ourselves)
  ------------------
  |  Branch (1764:7): [True: 456k, False: 0]
  ------------------
 1765|   456k|    {
 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|   456k|      if (tmp_length < width)
  ------------------
  |  Branch (1775:11): [True: 0, False: 456k]
  ------------------
 1776|      0|        tmp_length = width;
 1777|   456k|# endif
 1778|   456k|    }
 1779|       |
 1780|   456k|  tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
 1781|       |
 1782|   456k|  return tmp_length;
 1783|   456k|}

xsum4:
   87|   237k|{
   88|   237k|  return xsum (xsum (xsum (size1, size2), size3), size4);
   89|   237k|}
xsum:
   66|  2.57M|{
   67|  2.57M|  size_t sum = size1 + size2;
   68|  2.57M|  return (sum >= size1 ? sum : G_MAXSIZE);
  ------------------
  |  |   84|  2.57M|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|  2.57M|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  |  Branch (68:11): [True: 2.57M, False: 0]
  ------------------
   69|  2.57M|}
xmax:
   97|   222k|{
   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|   222k|  return (size1 >= size2 ? size1 : size2);
  ------------------
  |  Branch (100:11): [True: 2.52k, False: 219k]
  ------------------
  101|   222k|}

g_vasprintf:
  323|   237k|{
  324|   237k|  gint len;
  325|   237k|  g_return_val_if_fail (string != NULL, -1);
  ------------------
  |  |  643|   237k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   237k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   237k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   237k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   237k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   237k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   237k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   237k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 237k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   237k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   237k|   else                                         \
  |  |  |  |  |  | 1021|   237k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   237k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   237k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 237k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   237k|      { } \
  |  |  646|   237k|    else \
  |  |  647|   237k|      { \
  |  |  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|   237k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   237k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 237k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  326|       |
  327|   237k|#if !defined(USE_SYSTEM_PRINTF)
  328|       |
  329|   237k|  len = _g_gnulib_vasprintf (string, format, args);
  330|   237k|  if (len < 0)
  ------------------
  |  Branch (330:7): [True: 0, False: 237k]
  ------------------
  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|   237k|  return len;
  363|   237k|}

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|  2.96k|{
  138|  2.96k|  GQuark quark = 0;
  139|       |
  140|  2.96k|  if (string == NULL)
  ------------------
  |  Branch (140:7): [True: 0, False: 2.96k]
  ------------------
  141|      0|    return 0;
  142|       |
  143|  2.96k|  G_LOCK (quark_global);
  ------------------
  |  |  135|  2.96k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  2.96k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  144|  2.96k|  quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string));
  ------------------
  |  |   99|  2.96k|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
  145|  2.96k|  G_UNLOCK (quark_global);
  ------------------
  |  |  136|  2.96k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  2.96k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  146|       |
  147|  2.96k|  return quark;
  148|  2.96k|}
g_quark_from_string:
  228|  3.12k|{
  229|  3.12k|  return quark_from_string_locked (string, TRUE);
  ------------------
  |  |  818|  3.12k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  3.12k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  230|  3.12k|}
g_quark_from_static_string:
  257|     75|{
  258|     75|  return quark_from_string_locked (string, FALSE);
  ------------------
  |  |  814|     75|#define	FALSE	(0)
  ------------------
  259|     75|}
g_quark_to_string:
  271|    165|{
  272|    165|  gchar* result = NULL;
  273|    165|  gchar **strings;
  274|    165|  guint seq_id;
  275|       |
  276|    165|  seq_id = (guint) g_atomic_int_get (&quark_seq_id);
  ------------------
  |  |   96|    165|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|    165|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|    165|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|    165|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|    165|    gint gaig_temp;                                                          \
  |  |   99|    165|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 165]
  |  |  ------------------
  |  |  100|    165|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|    165|    (gint) gaig_temp;                                                        \
  |  |  102|    165|  }))
  ------------------
  277|    165|  strings = g_atomic_pointer_get (&quarks);
  ------------------
  |  |  113|    165|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|    165|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|    165|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|    165|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|    165|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|    165|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|    165|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|    165|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|    165|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|    165|    gapg_temp_newval;                                                      \
  |  |  119|    165|  }))
  ------------------
  278|       |
  279|    165|  if (quark < seq_id)
  ------------------
  |  Branch (279:7): [True: 165, False: 0]
  ------------------
  280|    165|    result = strings[quark];
  281|       |
  282|    165|  return result;
  283|    165|}
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|    155|{
  373|    155|  return quark_intern_string_locked (string, FALSE);
  ------------------
  |  |  814|    155|#define	FALSE	(0)
  ------------------
  374|    155|}
gquark.c:quark_from_string_locked:
  199|  3.19k|{
  200|  3.19k|  GQuark quark = 0;
  201|       |
  202|  3.19k|  if (!string)
  ------------------
  |  Branch (202:7): [True: 0, False: 3.19k]
  ------------------
  203|      0|    return 0;
  204|       |
  205|  3.19k|  G_LOCK (quark_global);
  ------------------
  |  |  135|  3.19k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  3.19k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  206|  3.19k|  quark = quark_from_string (string, duplicate);
  207|  3.19k|  G_UNLOCK (quark_global);
  ------------------
  |  |  136|  3.19k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  3.19k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  208|       |
  209|  3.19k|  return quark;
  210|  3.19k|}
gquark.c:quark_from_string:
  182|  3.35k|{
  183|  3.35k|  GQuark quark = 0;
  184|       |
  185|  3.35k|  quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string));
  ------------------
  |  |   99|  3.35k|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
  186|       |
  187|  3.35k|  if (!quark)
  ------------------
  |  Branch (187:7): [True: 232, False: 3.12k]
  ------------------
  188|    232|    {
  189|    232|      quark = quark_new (duplicate ? quark_strdup (string) : (gchar *)string);
  ------------------
  |  Branch (189:26): [True: 4, False: 228]
  ------------------
  190|    232|      TRACE(GLIB_QUARK_NEW(string, quark));
  191|    232|    }
  192|       |
  193|  3.35k|  return quark;
  194|  3.35k|}
gquark.c:quark_new:
  288|    232|{
  289|    232|  GQuark quark;
  290|    232|  gchar **quarks_new;
  291|       |
  292|    232|  if (quark_seq_id % QUARK_BLOCK_SIZE == 0)
  ------------------
  |  |   45|    232|#define QUARK_BLOCK_SIZE         2048
  ------------------
  |  Branch (292:7): [True: 0, False: 232]
  ------------------
  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|    232|  quark = quark_seq_id;
  306|    232|  g_atomic_pointer_set (&quarks[quark], string);
  ------------------
  |  |  121|    232|  (G_GNUC_EXTENSION ({                                                      \
  |  |  ------------------
  |  |  |  |   54|    232|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  122|    232|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                \
  |  |  ------------------
  |  |  |  |  765|    232|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  123|    232|    glib_typeof ((atomic)) gaps_temp_atomic = (atomic);                     \
  |  |  ------------------
  |  |  |  |  238|    232|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  124|    232|    glib_typeof (*(atomic)) gaps_temp_newval = (newval);                    \
  |  |  ------------------
  |  |  |  |  238|    232|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  125|    232|    (void) (0 ? (gpointer) * (atomic) : NULL);                              \
  |  |  ------------------
  |  |  |  Branch (125:13): [Folded, False: 232]
  |  |  ------------------
  |  |  126|    232|    __atomic_store (gaps_temp_atomic, &gaps_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  127|    232|  }))
  ------------------
  307|    232|  g_hash_table_insert (quark_ht, string, GUINT_TO_POINTER (quark));
  ------------------
  |  |  102|    232|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  308|    232|  g_atomic_int_inc (&quark_seq_id);
  ------------------
  |  |  148|    232|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|    232|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|    232|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|    232|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|    232|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 232]
  |  |  ------------------
  |  |  151|    232|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|    232|  }))
  ------------------
  309|       |
  310|    232|  return quark;
  311|    232|}
gquark.c:quark_strdup:
  153|      4|{
  154|      4|  gchar *copy;
  155|      4|  gsize len;
  156|       |
  157|      4|  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|      4|  if (len > QUARK_STRING_BLOCK_SIZE / 2)
  ------------------
  |  |   46|      4|#define QUARK_STRING_BLOCK_SIZE (4096 - sizeof (gsize))
  ------------------
  |  Branch (161:7): [True: 0, False: 4]
  ------------------
  162|      0|    return g_strdup (string);
  163|       |
  164|      4|  if (quark_block == NULL ||
  ------------------
  |  Branch (164:7): [True: 1, False: 3]
  ------------------
  165|      3|      QUARK_STRING_BLOCK_SIZE - quark_block_offset < len)
  ------------------
  |  |   46|      3|#define QUARK_STRING_BLOCK_SIZE (4096 - sizeof (gsize))
  ------------------
  |  Branch (165:7): [True: 0, False: 3]
  ------------------
  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|      4|  copy = quark_block + quark_block_offset;
  172|      4|  memcpy (copy, string, len);
  173|      4|  quark_block_offset += len;
  174|       |
  175|      4|  return copy;
  176|      4|}
gquark.c:quark_intern_string_locked:
  316|    160|{
  317|    160|  const gchar *result;
  318|    160|  GQuark quark;
  319|       |
  320|    160|  if (!string)
  ------------------
  |  Branch (320:7): [True: 0, False: 160]
  ------------------
  321|      0|    return NULL;
  322|       |
  323|    160|  G_LOCK (quark_global);
  ------------------
  |  |  135|    160|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|    160|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  324|    160|  quark = quark_from_string (string, duplicate);
  325|    160|  result = quarks[quark];
  326|    160|  G_UNLOCK (quark_global);
  ------------------
  |  |  136|    160|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|    160|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  327|       |
  328|    160|  return result;
  329|    160|}

g_atomic_ref_count_init:
  208|  1.86M|{
  209|  1.86M|  g_return_if_fail (arc != NULL);
  ------------------
  |  |  630|  1.86M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.86M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.86M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.86M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.86M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.86M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.86M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.86M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.86M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.86M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.86M|   else                                         \
  |  |  |  |  |  | 1021|  1.86M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.86M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.86M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.86M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.86M|      { } \
  |  |  633|  1.86M|    else \
  |  |  634|  1.86M|      { \
  |  |  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.86M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.86M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.86M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  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.86M|  *arc = 1;
  221|  1.86M|}
g_atomic_ref_count_inc:
  233|   445k|{
  234|   445k|  g_return_if_fail (arc != NULL);
  ------------------
  |  |  630|   445k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   445k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   445k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   445k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   445k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   445k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   445k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   445k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 445k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   445k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   445k|   else                                         \
  |  |  |  |  |  | 1021|   445k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   445k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   445k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 445k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   445k|      { } \
  |  |  633|   445k|    else \
  |  |  634|   445k|      { \
  |  |  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|   445k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   445k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 445k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  235|   445k|  g_return_if_fail (g_atomic_int_get (arc) > 0);
  ------------------
  |  |  630|   445k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   445k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   445k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   445k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   445k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   445k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   445k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.33M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 445k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 445k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   445k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   445k|   else                                         \
  |  |  |  |  |  | 1021|   445k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   445k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   445k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 445k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   445k|      { } \
  |  |  633|   445k|    else \
  |  |  634|   445k|      { \
  |  |  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|   445k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   445k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 445k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  236|       |
  237|   445k|  if (g_atomic_int_get (arc) == G_MAXINT)
  ------------------
  |  |   96|   445k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|   445k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|   445k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|   445k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|   445k|    gint gaig_temp;                                                          \
  |  |   99|   445k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 445k]
  |  |  ------------------
  |  |  100|   445k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|   445k|    (gint) gaig_temp;                                                        \
  |  |  102|   445k|  }))
  ------------------
                if (g_atomic_int_get (arc) == G_MAXINT)
  ------------------
  |  |   34|   445k|#define G_MAXINT	INT_MAX
  ------------------
  |  Branch (237:7): [True: 0, False: 445k]
  ------------------
  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|   445k|  g_atomic_int_inc (arc);
  ------------------
  |  |  148|   445k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|   445k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|   445k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|   445k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|   445k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 445k]
  |  |  ------------------
  |  |  151|   445k|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|   445k|  }))
  ------------------
  244|   445k|}
g_atomic_ref_count_dec:
  258|  2.30M|{
  259|  2.30M|  g_return_val_if_fail (arc != NULL, FALSE);
  ------------------
  |  |  643|  2.30M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.30M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.30M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.30M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.30M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.30M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.30M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.30M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.30M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.30M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.30M|   else                                         \
  |  |  |  |  |  | 1021|  2.30M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.30M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.30M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.30M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.30M|      { } \
  |  |  646|  2.30M|    else \
  |  |  647|  2.30M|      { \
  |  |  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.30M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.30M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.30M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  260|  2.30M|  g_return_val_if_fail (g_atomic_int_get (arc) > 0, FALSE);
  ------------------
  |  |  643|  2.30M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.30M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.30M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.30M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.30M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.30M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.30M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  6.91M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 2.30M]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.30M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.30M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.30M|   else                                         \
  |  |  |  |  |  | 1021|  2.30M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.30M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.30M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.30M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.30M|      { } \
  |  |  646|  2.30M|    else \
  |  |  647|  2.30M|      { \
  |  |  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.30M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.30M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.30M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  261|       |
  262|  2.30M|  return g_atomic_int_dec_and_test (arc);
  ------------------
  |  |  154|  2.30M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  2.30M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  155|  2.30M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  2.30M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  156|  2.30M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (156:13): [Folded, False: 2.30M]
  |  |  ------------------
  |  |  157|  2.30M|    __atomic_fetch_sub ((atomic), 1, __ATOMIC_SEQ_CST) == 1;                 \
  |  |  158|  2.30M|  }))
  ------------------
  263|  2.30M|}

g_slice_alloc:
 1035|  3.57M|{
 1036|  3.57M|  ThreadMemory *tmem;
 1037|  3.57M|  gsize chunk_size;
 1038|  3.57M|  gpointer mem;
 1039|  3.57M|  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|  3.57M|  tmem = thread_memory_from_self ();
 1048|       |
 1049|  3.57M|  chunk_size = P2ALIGN (mem_size);
  ------------------
  |  |  207|  3.57M|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  ------------------
 1050|  3.57M|  acat = allocator_categorize (chunk_size);
 1051|  3.57M|  if (G_LIKELY (acat == 1))     /* allocate through magazine layer */
  ------------------
  |  | 1024|  3.57M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  3.57M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.57M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.57M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.57M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 3.57M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.57M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.57M|   else                                         \
  |  |  |  | 1021|  3.57M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.57M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.57M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 3.57M, False: 0]
  |  |  ------------------
  ------------------
 1052|  3.57M|    {
 1053|  3.57M|      guint ix = SLAB_INDEX (allocator, chunk_size);
  ------------------
  |  |  199|  3.57M|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  ------------------
  |  |  |  |  190|  3.57M|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1054|  3.57M|      if (G_UNLIKELY (thread_memory_magazine1_is_empty (tmem, ix)))
  ------------------
  |  | 1025|  3.57M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.57M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.57M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.57M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.57M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 183k, False: 3.39M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.57M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.57M|   else                                         \
  |  |  |  | 1021|  3.57M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.57M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.57M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 183k, False: 3.39M]
  |  |  ------------------
  ------------------
 1055|   183k|        {
 1056|   183k|          thread_memory_swap_magazines (tmem, ix);
 1057|   183k|          if (G_UNLIKELY (thread_memory_magazine1_is_empty (tmem, ix)))
  ------------------
  |  | 1025|   183k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   183k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   183k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   183k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   183k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 52.9k, False: 130k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   183k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   183k|   else                                         \
  |  |  |  | 1021|   183k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   183k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   183k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 52.9k, False: 130k]
  |  |  ------------------
  ------------------
 1058|  52.9k|            thread_memory_magazine1_reload (tmem, ix);
 1059|   183k|        }
 1060|  3.57M|      mem = thread_memory_magazine1_alloc (tmem, ix);
 1061|  3.57M|    }
 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|  3.57M|  if (G_UNLIKELY (allocator->config.debug_blocks))
  ------------------
  |  | 1025|  3.57M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.57M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.57M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.57M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.57M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.57M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.57M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.57M|   else                                         \
  |  |  |  | 1021|  3.57M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.57M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.57M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 3.57M]
  |  |  ------------------
  ------------------
 1071|      0|    smc_notify_alloc (mem, mem_size);
 1072|       |
 1073|  3.57M|  TRACE (GLIB_SLICE_ALLOC((void*)mem, mem_size));
 1074|       |
 1075|  3.57M|  return mem;
 1076|  3.57M|}
g_slice_alloc0:
 1094|  1.02M|{
 1095|  1.02M|  gpointer mem = g_slice_alloc (mem_size);
 1096|  1.02M|  if (mem)
  ------------------
  |  Branch (1096:7): [True: 1.02M, False: 0]
  ------------------
 1097|  1.02M|    memset (mem, 0, mem_size);
 1098|  1.02M|  return mem;
 1099|  1.02M|}
g_slice_free1:
 1146|  3.23M|{
 1147|  3.23M|  gsize chunk_size = P2ALIGN (mem_size);
  ------------------
  |  |  207|  3.23M|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  ------------------
 1148|  3.23M|  guint acat = allocator_categorize (chunk_size);
 1149|  3.23M|  if (G_UNLIKELY (!mem_block))
  ------------------
  |  | 1025|  3.23M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.23M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.23M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.23M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.23M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.23M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.23M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.23M|   else                                         \
  |  |  |  | 1021|  3.23M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.23M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.23M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 3.23M]
  |  |  ------------------
  ------------------
 1150|      0|    return;
 1151|  3.23M|  if (G_UNLIKELY (allocator->config.debug_blocks) &&
  ------------------
  |  | 1025|  6.46M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.23M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.23M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.23M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.23M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.23M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.23M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.23M|   else                                         \
  |  |  |  | 1021|  3.23M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.23M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.23M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 3.23M]
  |  |  ------------------
  ------------------
 1152|      0|      !smc_notify_free (mem_block, mem_size))
  ------------------
  |  Branch (1152:7): [True: 0, False: 0]
  ------------------
 1153|      0|    abort();
 1154|  3.23M|  if (G_LIKELY (acat == 1))             /* allocate through magazine layer */
  ------------------
  |  | 1024|  3.23M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  3.23M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.23M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.23M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.23M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 3.23M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.23M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.23M|   else                                         \
  |  |  |  | 1021|  3.23M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.23M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.23M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 3.23M, False: 0]
  |  |  ------------------
  ------------------
 1155|  3.23M|    {
 1156|  3.23M|      ThreadMemory *tmem = thread_memory_from_self();
 1157|  3.23M|      guint ix = SLAB_INDEX (allocator, chunk_size);
  ------------------
  |  |  199|  3.23M|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  ------------------
  |  |  |  |  190|  3.23M|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1158|  3.23M|      if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix)))
  ------------------
  |  | 1025|  3.23M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.23M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.23M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.23M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.23M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 117k, False: 3.11M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.23M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.23M|   else                                         \
  |  |  |  | 1021|  3.23M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.23M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.23M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 117k, False: 3.11M]
  |  |  ------------------
  ------------------
 1159|   117k|        {
 1160|   117k|          thread_memory_swap_magazines (tmem, ix);
 1161|   117k|          if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix)))
  ------------------
  |  | 1025|   117k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   117k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   117k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   117k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   117k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 52.9k, False: 64.5k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   117k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   117k|   else                                         \
  |  |  |  | 1021|   117k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   117k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   117k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 52.9k, False: 64.5k]
  |  |  ------------------
  ------------------
 1162|  52.9k|            thread_memory_magazine2_unload (tmem, ix);
 1163|   117k|        }
 1164|  3.23M|      if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|  3.23M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.23M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.23M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.23M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.23M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.23M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.23M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.23M|   else                                         \
  |  |  |  | 1021|  3.23M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.23M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.23M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 3.23M]
  |  |  ------------------
  ------------------
 1165|      0|        memset (mem_block, 0, chunk_size);
 1166|  3.23M|      thread_memory_magazine2_free (tmem, ix, mem_block);
 1167|  3.23M|    }
 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.23M|  TRACE (GLIB_SLICE_FREE((void*)mem_block, mem_size));
 1183|  3.23M|}
g_slice_free_chain_with_offset:
 1209|   343k|{
 1210|   343k|  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|   343k|  gsize chunk_size = P2ALIGN (mem_size);
  ------------------
  |  |  207|   343k|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  ------------------
 1227|   343k|  guint acat = allocator_categorize (chunk_size);
 1228|   343k|  if (G_LIKELY (acat == 1))             /* allocate through magazine layer */
  ------------------
  |  | 1024|   343k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|   343k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   343k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   343k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   343k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 343k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|   343k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   343k|   else                                         \
  |  |  |  | 1021|   343k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   343k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   343k|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 343k, False: 0]
  |  |  ------------------
  ------------------
 1229|   343k|    {
 1230|   343k|      ThreadMemory *tmem = thread_memory_from_self();
 1231|   343k|      guint ix = SLAB_INDEX (allocator, chunk_size);
  ------------------
  |  |  199|   343k|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  ------------------
  |  |  |  |  190|   343k|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1232|   690k|      while (slice)
  ------------------
  |  Branch (1232:14): [True: 346k, False: 343k]
  ------------------
 1233|   346k|        {
 1234|   346k|          guint8 *current = slice;
 1235|   346k|          slice = *(gpointer*) (current + next_offset);
 1236|   346k|          if (G_UNLIKELY (allocator->config.debug_blocks) &&
  ------------------
  |  | 1025|   693k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   346k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   346k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   346k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 346k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   346k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   346k|   else                                         \
  |  |  |  | 1021|   346k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   346k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   346k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 346k]
  |  |  ------------------
  ------------------
 1237|      0|              !smc_notify_free (current, mem_size))
  ------------------
  |  Branch (1237:15): [True: 0, False: 0]
  ------------------
 1238|      0|            abort();
 1239|   346k|          if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix)))
  ------------------
  |  | 1025|   346k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   346k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   346k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   346k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 346k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   346k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   346k|   else                                         \
  |  |  |  | 1021|   346k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   346k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   346k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 346k]
  |  |  ------------------
  ------------------
 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|   346k|          if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|   346k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   346k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   346k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   346k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 346k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   346k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   346k|   else                                         \
  |  |  |  | 1021|   346k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   346k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   346k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 346k]
  |  |  ------------------
  ------------------
 1246|      0|            memset (current, 0, chunk_size);
 1247|   346k|          thread_memory_magazine2_free (tmem, ix, current);
 1248|   346k|        }
 1249|   343k|    }
 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|   343k|}
gslice.c:allocator_get_magazine_threshold:
  615|  3.70M|{
  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|  3.70M|  gsize chunk_size = SLAB_CHUNK_SIZE (allocator, ix);
  ------------------
  |  |  200|  3.70M|#define SLAB_CHUNK_SIZE(al, ix) (((ix) + 1) * P2ALIGNMENT)
  |  |  ------------------
  |  |  |  |  190|  3.70M|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
  626|  3.70M|  guint threshold = MAX (MIN_MAGAZINE_SIZE, allocator->max_page_size / MAX (5 * chunk_size, 5 * 32));
  ------------------
  |  |  822|  7.40M|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 741, False: 3.70M]
  |  |  |  Branch (822:29): [True: 2.59M, False: 1.10M]
  |  |  |  Branch (822:42): [True: 2.59M, False: 1.10M]
  |  |  ------------------
  ------------------
  627|  3.70M|  guint contention_counter = allocator->contention_counters[ix];
  628|  3.70M|  if (G_UNLIKELY (contention_counter))  /* single CPU bias */
  ------------------
  |  | 1025|  3.70M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.70M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.70M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.70M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.70M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.70M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.70M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.70M|   else                                         \
  |  |  |  | 1021|  3.70M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.70M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.70M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 3.70M]
  |  |  ------------------
  ------------------
  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|  3.70M|  return threshold;
  635|  3.70M|}
gslice.c:thread_memory_from_self:
  551|  7.15M|{
  552|  7.15M|  ThreadMemory *tmem = g_private_get (&private_thread_memory);
  553|  7.15M|  if (G_UNLIKELY (!tmem))
  ------------------
  |  | 1025|  7.15M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  7.15M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  7.15M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  7.15M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  7.15M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 2, False: 7.15M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  7.15M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  7.15M|   else                                         \
  |  |  |  | 1021|  7.15M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  7.15M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  7.15M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 2, False: 7.15M]
  |  |  ------------------
  ------------------
  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|  7.15M|  return tmem;
  569|  7.15M|}
gslice.c:magazine_cache_push_magazine:
  734|  52.9k|{
  735|  52.9k|  ChunkLink *current = magazine_chain_prepare_fields (magazine_chunks);
  736|  52.9k|  ChunkLink *next, *prev;
  737|  52.9k|  g_mutex_lock (&allocator->magazine_mutex);
  738|       |  /* add magazine at head */
  739|  52.9k|  next = allocator->magazines[ix];
  740|  52.9k|  if (next)
  ------------------
  |  Branch (740:7): [True: 52.5k, False: 375]
  ------------------
  741|  52.5k|    prev = magazine_chain_prev (next);
  ------------------
  |  |  672|  52.5k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  742|    375|  else
  743|    375|    next = prev = current;
  744|  52.9k|  magazine_chain_next (prev) = current;
  ------------------
  |  |  675|  52.9k|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  745|  52.9k|  magazine_chain_prev (next) = current;
  ------------------
  |  |  672|  52.9k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  746|  52.9k|  magazine_chain_prev (current) = prev;
  ------------------
  |  |  672|  52.9k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  747|  52.9k|  magazine_chain_next (current) = next;
  ------------------
  |  |  675|  52.9k|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  748|  52.9k|  magazine_chain_count (current) = (gpointer) count;
  ------------------
  |  |  676|  52.9k|#define magazine_chain_count(mc)        ((mc)->next->next->next->data)
  ------------------
  749|       |  /* stamp magazine */
  750|  52.9k|  magazine_cache_update_stamp();
  751|  52.9k|  magazine_chain_stamp (current) = GUINT_TO_POINTER (allocator->last_stamp);
  ------------------
  |  |  673|  52.9k|#define magazine_chain_stamp(mc)        ((mc)->next->data)
  ------------------
                magazine_chain_stamp (current) = GUINT_TO_POINTER (allocator->last_stamp);
  ------------------
  |  |  102|  52.9k|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  752|  52.9k|  allocator->magazines[ix] = current;
  753|       |  /* free old magazines beyond a certain threshold */
  754|  52.9k|  magazine_cache_trim (allocator, ix, allocator->last_stamp);
  755|       |  /* g_mutex_unlock (allocator->mutex); was done by magazine_cache_trim() */
  756|  52.9k|}
gslice.c:magazine_chain_prepare_fields:
  653|  52.9k|{
  654|  52.9k|  ChunkLink *chunk1;
  655|  52.9k|  ChunkLink *chunk2;
  656|  52.9k|  ChunkLink *chunk3;
  657|  52.9k|  ChunkLink *chunk4;
  658|       |  /* checked upon initialization: mem_assert (MIN_MAGAZINE_SIZE >= 4); */
  659|       |  /* ensure a magazine with at least 4 unused data pointers */
  660|  52.9k|  chunk1 = magazine_chain_pop_head (&magazine_chunks);
  661|  52.9k|  chunk2 = magazine_chain_pop_head (&magazine_chunks);
  662|  52.9k|  chunk3 = magazine_chain_pop_head (&magazine_chunks);
  663|  52.9k|  chunk4 = magazine_chain_pop_head (&magazine_chunks);
  664|  52.9k|  chunk4->next = magazine_chunks;
  665|  52.9k|  chunk3->next = chunk4;
  666|  52.9k|  chunk2->next = chunk3;
  667|  52.9k|  chunk1->next = chunk2;
  668|  52.9k|  return chunk1;
  669|  52.9k|}
gslice.c:magazine_cache_update_stamp:
  640|  52.9k|{
  641|  52.9k|  if (allocator->stamp_counter >= MAX_STAMP_COUNTER)
  ------------------
  |  |  196|  52.9k|#define MAX_STAMP_COUNTER       (7)                                             /* distributes the load of gettimeofday() */
  ------------------
  |  Branch (641:7): [True: 6.62k, False: 46.3k]
  ------------------
  642|  6.62k|    {
  643|  6.62k|      gint64 now_us = g_get_real_time ();
  644|  6.62k|      allocator->last_stamp = now_us / 1000; /* milli seconds */
  645|  6.62k|      allocator->stamp_counter = 0;
  646|  6.62k|    }
  647|  46.3k|  else
  648|  46.3k|    allocator->stamp_counter++;
  649|  52.9k|}
gslice.c:magazine_cache_trim:
  682|  52.9k|{
  683|       |  /* g_mutex_lock (allocator->mutex); done by caller */
  684|       |  /* trim magazine cache from tail */
  685|  52.9k|  ChunkLink *current = magazine_chain_prev (allocator->magazines[ix]);
  ------------------
  |  |  672|  52.9k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  686|  52.9k|  ChunkLink *trash = NULL;
  687|  52.9k|  while (!G_APPROX_VALUE(stamp, magazine_chain_uint_stamp (current),
  ------------------
  |  |  834|  52.9k|  (((a) > (b) ? (a) - (b) : (b) - (a)) < (epsilon))
  |  |  ------------------
  |  |  |  Branch (834:5): [True: 50.8k, False: 2.09k]
  |  |  ------------------
  ------------------
  |  Branch (687:10): [True: 0, False: 52.9k]
  ------------------
  688|  52.9k|                         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|  52.9k|  g_mutex_unlock (&allocator->magazine_mutex);
  710|       |  /* free trash */
  711|  52.9k|  if (trash)
  ------------------
  |  Branch (711:7): [True: 0, False: 52.9k]
  ------------------
  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|  52.9k|}
gslice.c:magazine_chain_pop_head:
  573|  3.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|  3.79M|  ChunkLink *chunk = (*magazine_chunks)->data;
  580|  3.79M|  if (G_UNLIKELY (chunk))
  ------------------
  |  | 1025|  3.79M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.79M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.79M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.79M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.79M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.79M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.79M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.79M|   else                                         \
  |  |  |  | 1021|  3.79M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.79M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.79M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 3.79M]
  |  |  ------------------
  ------------------
  581|      0|    {
  582|       |      /* allocating from freed list */
  583|      0|      (*magazine_chunks)->data = chunk->next;
  584|      0|    }
  585|  3.79M|  else
  586|  3.79M|    {
  587|  3.79M|      chunk = *magazine_chunks;
  588|  3.79M|      *magazine_chunks = chunk->next;
  589|  3.79M|    }
  590|  3.79M|  return chunk;
  591|  3.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|  7.15M|{
  504|       |  /* speed up the likely path */
  505|  7.15M|  if (G_LIKELY (aligned_chunk_size && aligned_chunk_size <= allocator->max_slab_chunk_size_for_magazine_cache))
  ------------------
  |  | 1024|  7.15M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  7.15M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  7.15M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  7.15M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  21.4M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 7.15M, False: 0]
  |  |  |  |  |  Branch (1018:8): [True: 7.15M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  7.15M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  7.15M|   else                                         \
  |  |  |  | 1021|  7.15M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  7.15M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  7.15M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 7.15M, False: 0]
  |  |  ------------------
  ------------------
  506|  7.15M|    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|  3.76M|{
  871|       |  return tmem->magazine1[ix].chunks == NULL;
  872|  3.76M|}
gslice.c:thread_memory_swap_magazines:
  861|   301k|{
  862|   301k|  Magazine xmag = tmem->magazine1[ix];
  863|   301k|  tmem->magazine1[ix] = tmem->magazine2[ix];
  864|   301k|  tmem->magazine2[ix] = xmag;
  865|   301k|}
gslice.c:thread_memory_magazine1_reload:
  841|  52.9k|{
  842|  52.9k|  Magazine *mag = &tmem->magazine1[ix];
  843|  52.9k|  mem_assert (mag->chunks == NULL); /* ensure that we may reset mag->count */
  ------------------
  |  |  214|  52.9k|#define mem_assert(cond)    do { if (G_LIKELY (cond)) ; else mem_error ("assertion failed: %s", #cond); } while (0)
  |  |  ------------------
  |  |  |  | 1024|  52.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  52.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  52.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  52.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  52.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 52.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  52.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  52.9k|   else                                         \
  |  |  |  |  |  | 1021|  52.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  52.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  52.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 52.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (214:114): [Folded, False: 52.9k]
  |  |  ------------------
  ------------------
  844|  52.9k|  mag->count = 0;
  845|  52.9k|  mag->chunks = magazine_cache_pop_magazine (ix, &mag->count);
  846|  52.9k|}
gslice.c:magazine_cache_pop_magazine:
  761|  52.9k|{
  762|  52.9k|  g_mutex_lock_a (&allocator->magazine_mutex, &allocator->contention_counters[ix]);
  763|  52.9k|  if (!allocator->magazines[ix])
  ------------------
  |  Branch (763:7): [True: 6.88k, False: 46.0k]
  ------------------
  764|  6.88k|    {
  765|  6.88k|      guint magazine_threshold = allocator_get_magazine_threshold (allocator, ix);
  766|  6.88k|      gsize i, chunk_size = SLAB_CHUNK_SIZE (allocator, ix);
  ------------------
  |  |  200|  6.88k|#define SLAB_CHUNK_SIZE(al, ix) (((ix) + 1) * P2ALIGNMENT)
  |  |  ------------------
  |  |  |  |  190|  6.88k|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
  767|  6.88k|      ChunkLink *chunk, *head;
  768|  6.88k|      g_mutex_unlock (&allocator->magazine_mutex);
  769|  6.88k|      g_mutex_lock (&allocator->slab_mutex);
  770|  6.88k|      head = slab_allocator_alloc_chunk (chunk_size);
  771|  6.88k|      head->data = NULL;
  772|  6.88k|      chunk = head;
  773|   107k|      for (i = 1; i < magazine_threshold; i++)
  ------------------
  |  Branch (773:19): [True: 100k, False: 6.88k]
  ------------------
  774|   100k|        {
  775|   100k|          chunk->next = slab_allocator_alloc_chunk (chunk_size);
  776|   100k|          chunk = chunk->next;
  777|   100k|          chunk->data = NULL;
  778|   100k|        }
  779|  6.88k|      chunk->next = NULL;
  780|  6.88k|      g_mutex_unlock (&allocator->slab_mutex);
  781|  6.88k|      *countp = i;
  782|  6.88k|      return head;
  783|  6.88k|    }
  784|  46.0k|  else
  785|  46.0k|    {
  786|  46.0k|      ChunkLink *current = allocator->magazines[ix];
  787|  46.0k|      ChunkLink *prev = magazine_chain_prev (current);
  ------------------
  |  |  672|  46.0k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  788|  46.0k|      ChunkLink *next = magazine_chain_next (current);
  ------------------
  |  |  675|  46.0k|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  789|       |      /* unlink */
  790|  46.0k|      magazine_chain_next (prev) = next;
  ------------------
  |  |  675|  46.0k|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  791|  46.0k|      magazine_chain_prev (next) = prev;
  ------------------
  |  |  672|  46.0k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  792|  46.0k|      allocator->magazines[ix] = next == current ? NULL : next;
  ------------------
  |  Branch (792:34): [True: 369, False: 45.7k]
  ------------------
  793|  46.0k|      g_mutex_unlock (&allocator->magazine_mutex);
  794|       |      /* clear special fields and hand out */
  795|  46.0k|      *countp = (gsize) magazine_chain_count (current);
  ------------------
  |  |  676|  46.0k|#define magazine_chain_count(mc)        ((mc)->next->next->next->data)
  ------------------
  796|  46.0k|      magazine_chain_prev (current) = NULL;
  ------------------
  |  |  672|  46.0k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  797|  46.0k|      magazine_chain_next (current) = NULL;
  ------------------
  |  |  675|  46.0k|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  798|  46.0k|      magazine_chain_count (current) = NULL;
  ------------------
  |  |  676|  46.0k|#define magazine_chain_count(mc)        ((mc)->next->next->next->data)
  ------------------
  799|  46.0k|      magazine_chain_stamp (current) = NULL;
  ------------------
  |  |  673|  46.0k|#define magazine_chain_stamp(mc)        ((mc)->next->data)
  ------------------
  800|  46.0k|      return current;
  801|  46.0k|    }
  802|  52.9k|}
gslice.c:g_mutex_lock_a:
  522|  52.9k|{
  523|  52.9k|  gboolean contention = FALSE;
  ------------------
  |  |  814|  52.9k|#define	FALSE	(0)
  ------------------
  524|  52.9k|  if (!g_mutex_trylock (mutex))
  ------------------
  |  Branch (524:7): [True: 0, False: 52.9k]
  ------------------
  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|  52.9k|  if (contention)
  ------------------
  |  Branch (529:7): [True: 0, False: 52.9k]
  ------------------
  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|  52.9k|  else /* !contention */
  539|  52.9k|    {
  540|  52.9k|      allocator->mutex_counter--;
  541|  52.9k|      if (allocator->mutex_counter < -11)       /* moderately recover magazine sizes */
  ------------------
  |  Branch (541:11): [True: 4.41k, False: 48.5k]
  ------------------
  542|  4.41k|        {
  543|  4.41k|          allocator->mutex_counter = 0;
  544|  4.41k|          *contention_counter = MAX (*contention_counter, 1) - 1;
  ------------------
  |  |  822|  4.41k|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 0, False: 4.41k]
  |  |  ------------------
  ------------------
  545|  4.41k|        }
  546|  52.9k|    }
  547|  52.9k|}
gslice.c:thread_memory_magazine1_alloc:
  884|  3.57M|{
  885|  3.57M|  Magazine *mag = &tmem->magazine1[ix];
  886|  3.57M|  ChunkLink *chunk = magazine_chain_pop_head (&mag->chunks);
  887|  3.57M|  if (G_LIKELY (mag->count > 0))
  ------------------
  |  | 1024|  3.57M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  3.57M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.57M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.57M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.57M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 3.57M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.57M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.57M|   else                                         \
  |  |  |  | 1021|  3.57M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.57M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.57M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 3.57M, False: 0]
  |  |  ------------------
  ------------------
  888|  3.57M|    mag->count--;
  889|  3.57M|  return chunk;
  890|  3.57M|}
gslice.c:thread_memory_magazine2_is_full:
  877|  3.69M|{
  878|  3.69M|  return tmem->magazine2[ix].count >= allocator_get_magazine_threshold (allocator, ix);
  879|  3.69M|}
gslice.c:thread_memory_magazine2_unload:
  851|  52.9k|{
  852|  52.9k|  Magazine *mag = &tmem->magazine2[ix];
  853|  52.9k|  magazine_cache_push_magazine (ix, mag->chunks, mag->count);
  854|       |  mag->chunks = NULL;
  855|  52.9k|  mag->count = 0;
  856|  52.9k|}
gslice.c:thread_memory_magazine2_free:
  896|  3.57M|{
  897|  3.57M|  Magazine *mag = &tmem->magazine2[ix];
  898|  3.57M|  ChunkLink *chunk = mem;
  899|       |  chunk->data = NULL;
  900|  3.57M|  chunk->next = mag->chunks;
  901|  3.57M|  mag->chunks = chunk;
  902|  3.57M|  mag->count++;
  903|  3.57M|}
gslice.c:slab_allocator_alloc_chunk:
 1369|   107k|{
 1370|   107k|  ChunkLink *chunk;
 1371|   107k|  guint ix = SLAB_INDEX (allocator, chunk_size);
  ------------------
  |  |  199|   107k|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  ------------------
  |  |  |  |  190|   107k|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1372|       |  /* ensure non-empty slab */
 1373|   107k|  if (!allocator->slab_stack[ix] || !allocator->slab_stack[ix]->chunks)
  ------------------
  |  Branch (1373:7): [True: 17, False: 107k]
  |  Branch (1373:37): [True: 10.2k, False: 96.9k]
  ------------------
 1374|  10.2k|    allocator_add_slab (allocator, ix, chunk_size);
 1375|       |  /* allocate chunk */
 1376|   107k|  chunk = allocator->slab_stack[ix]->chunks;
 1377|   107k|  allocator->slab_stack[ix]->chunks = chunk->next;
 1378|   107k|  allocator->slab_stack[ix]->n_allocated++;
 1379|       |  /* rotate empty slabs */
 1380|   107k|  if (!allocator->slab_stack[ix]->chunks)
  ------------------
  |  Branch (1380:7): [True: 10.2k, False: 96.9k]
  ------------------
 1381|  10.2k|    allocator->slab_stack[ix] = allocator->slab_stack[ix]->next;
 1382|   107k|  return chunk;
 1383|   107k|}
gslice.c:allocator_add_slab:
 1316|  10.2k|{
 1317|  10.2k|  ChunkLink *chunk;
 1318|  10.2k|  SlabInfo *sinfo;
 1319|  10.2k|  gsize addr, padding, n_chunks, color = 0;
 1320|  10.2k|  gsize page_size;
 1321|  10.2k|  int errsv;
 1322|  10.2k|  gpointer aligned_memory;
 1323|  10.2k|  guint8 *mem;
 1324|  10.2k|  guint i;
 1325|       |
 1326|  10.2k|  page_size = allocator_aligned_page_size (allocator, SLAB_BPAGE_SIZE (allocator, chunk_size));
  ------------------
  |  |  201|  10.2k|#define SLAB_BPAGE_SIZE(al,csz) (8 * (csz) + SLAB_INFO_SIZE)
  |  |  ------------------
  |  |  |  |  193|  10.2k|#define SLAB_INFO_SIZE          P2ALIGN (sizeof (SlabInfo) + NATIVE_MALLOC_PADDING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  207|  10.2k|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1327|       |  /* allocate 1 page for the chunks and the slab */
 1328|  10.2k|  aligned_memory = allocator_memalign (page_size, page_size - NATIVE_MALLOC_PADDING);
  ------------------
  |  |  192|  10.2k|#define NATIVE_MALLOC_PADDING   P2ALIGNMENT                                     /* per-page padding left for native malloc(3) see [1] */
  |  |  ------------------
  |  |  |  |  190|  10.2k|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1329|  10.2k|  errsv = errno;
 1330|  10.2k|  mem = aligned_memory;
 1331|       |
 1332|  10.2k|  if (!mem)
  ------------------
  |  Branch (1332:7): [True: 0, False: 10.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|  10.2k|  addr = ((gsize) mem / page_size) * page_size;
 1340|       |  /* assert alignment */
 1341|  10.2k|  mem_assert (aligned_memory == (gpointer) addr);
  ------------------
  |  |  214|  10.2k|#define mem_assert(cond)    do { if (G_LIKELY (cond)) ; else mem_error ("assertion failed: %s", #cond); } while (0)
  |  |  ------------------
  |  |  |  | 1024|  10.2k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  10.2k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  10.2k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  10.2k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  10.2k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 10.2k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  10.2k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  10.2k|   else                                         \
  |  |  |  |  |  | 1021|  10.2k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  10.2k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  10.2k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 10.2k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (214:114): [Folded, False: 10.2k]
  |  |  ------------------
  ------------------
 1342|       |  /* basic slab info setup */
 1343|  10.2k|  sinfo = (SlabInfo*) (mem + page_size - SLAB_INFO_SIZE);
  ------------------
  |  |  193|  10.2k|#define SLAB_INFO_SIZE          P2ALIGN (sizeof (SlabInfo) + NATIVE_MALLOC_PADDING)
  |  |  ------------------
  |  |  |  |  207|  10.2k|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  |  |  ------------------
  ------------------
 1344|  10.2k|  sinfo->n_allocated = 0;
 1345|  10.2k|  sinfo->chunks = NULL;
 1346|       |  /* figure cache colorization */
 1347|  10.2k|  n_chunks = ((guint8*) sinfo - mem) / chunk_size;
 1348|  10.2k|  padding = ((guint8*) sinfo - mem) - n_chunks * chunk_size;
 1349|  10.2k|  if (padding)
  ------------------
  |  Branch (1349:7): [True: 10.2k, False: 8]
  ------------------
 1350|  10.2k|    {
 1351|  10.2k|      color = (allocator->color_accu * P2ALIGNMENT) % padding;
  ------------------
  |  |  190|  10.2k|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  ------------------
 1352|  10.2k|      allocator->color_accu += allocator->config.color_increment;
 1353|  10.2k|    }
 1354|       |  /* add chunks to free list */
 1355|  10.2k|  chunk = (ChunkLink*) (mem + color);
 1356|  10.2k|  sinfo->chunks = chunk;
 1357|   107k|  for (i = 0; i < n_chunks - 1; i++)
  ------------------
  |  Branch (1357:15): [True: 97.0k, False: 10.2k]
  ------------------
 1358|  97.0k|    {
 1359|  97.0k|      chunk->next = (ChunkLink*) ((guint8*) chunk + chunk_size);
 1360|  97.0k|      chunk = chunk->next;
 1361|  97.0k|    }
 1362|  10.2k|  chunk->next = NULL;   /* last chunk */
 1363|       |  /* add slab to slab ring */
 1364|  10.2k|  allocator_slab_stack_push (allocator, ix, sinfo);
 1365|  10.2k|}
gslice.c:allocator_aligned_page_size:
 1306|  10.2k|{
 1307|  10.2k|  gsize val = 1 << g_bit_storage (n_bytes - 1);
  ------------------
  |  |  370|  10.2k|#define g_bit_storage(number)        g_bit_storage_impl(number)
  ------------------
 1308|  10.2k|  val = MAX (val, allocator->min_page_size);
  ------------------
  |  |  822|  10.2k|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 10.2k, False: 0]
  |  |  ------------------
  ------------------
 1309|  10.2k|  return val;
 1310|  10.2k|}
gslice.c:allocator_memalign:
 1452|  10.2k|{
 1453|  10.2k|  gpointer aligned_memory = NULL;
 1454|  10.2k|  gint err = ENOMEM;
 1455|  10.2k|#if     HAVE_POSIX_MEMALIGN
 1456|  10.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|  10.2k|  if (!aligned_memory)
  ------------------
  |  Branch (1490:7): [True: 0, False: 10.2k]
  ------------------
 1491|  10.2k|    errno = err;
 1492|  10.2k|  return aligned_memory;
 1493|  10.2k|}
gslice.c:allocator_slab_stack_push:
 1285|  10.2k|{
 1286|       |  /* insert slab at slab ring head */
 1287|  10.2k|  if (!allocator->slab_stack[ix])
  ------------------
  |  Branch (1287:7): [True: 17, False: 10.2k]
  ------------------
 1288|     17|    {
 1289|     17|      sinfo->next = sinfo;
 1290|     17|      sinfo->prev = sinfo;
 1291|     17|    }
 1292|  10.2k|  else
 1293|  10.2k|    {
 1294|  10.2k|      SlabInfo *next = allocator->slab_stack[ix], *prev = next->prev;
 1295|  10.2k|      next->prev = sinfo;
 1296|  10.2k|      prev->next = sinfo;
 1297|  10.2k|      sinfo->next = next;
 1298|  10.2k|      sinfo->prev = prev;
 1299|  10.2k|    }
 1300|  10.2k|  allocator->slab_stack[ix] = sinfo;
 1301|  10.2k|}

g_slist_free:
  148|   343k|{
  149|       |  g_slice_free_chain (GSList, list, next);
  ------------------
  |  |   84|   343k|#define g_slice_free_chain(type, mem_chain, next)               \
  |  |  ------------------
  |  |  |  |  874|   343k|#define G_STMT_START  do
  |  |  ------------------
  |  |   85|   343k|G_STMT_START {                                                  \
  |  |   86|   343k|  if (1) g_slice_free_chain_with_offset (sizeof (type),		\
  |  |  ------------------
  |  |  |  Branch (86:7): [True: 343k, Folded]
  |  |  ------------------
  |  |   87|   343k|                 (mem_chain), G_STRUCT_OFFSET (type, next)); 	\
  |  |  ------------------
  |  |  |  |  853|   343k|      ((glong) offsetof (struct_type, member))
  |  |  ------------------
  |  |   88|   343k|  else   (void) ((type*) 0 == (mem_chain));			\
  |  |   89|   343k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   343k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 343k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  150|   343k|}
g_slist_free_1:
  168|     36|{
  169|     36|  _g_slist_free1 (list);
  ------------------
  |  |  111|     36|#define _g_slist_free1(slist)   g_slice_free (GSList, slist)
  |  |  ------------------
  |  |  |  |   79|     36|#define g_slice_free(type, mem)                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|     36|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |   80|     36|G_STMT_START {                                                  \
  |  |  |  |   81|     36|  if (1) g_slice_free1 (sizeof (type), (mem));			\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (81:7): [True: 36, Folded]
  |  |  |  |  ------------------
  |  |  |  |   82|     36|  else   (void) ((type*) 0 == (mem)); 				\
  |  |  |  |   83|     36|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|     36|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 36]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  170|     36|}
g_slist_append:
  235|      7|{
  236|      7|  GSList *new_list;
  237|      7|  GSList *last;
  238|       |
  239|      7|  new_list = _g_slist_alloc ();
  ------------------
  |  |  110|      7|#define _g_slist_alloc()        g_slice_new (GSList)
  |  |  ------------------
  |  |  |  |   46|      7|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  |  |  ------------------
  ------------------
  240|      7|  new_list->data = data;
  241|      7|  new_list->next = NULL;
  242|       |
  243|      7|  if (list)
  ------------------
  |  Branch (243:7): [True: 5, False: 2]
  ------------------
  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|      2|  else
  252|      2|    return new_list;
  253|      7|}
g_slist_prepend:
  277|   347k|{
  278|   347k|  GSList *new_list;
  279|       |
  280|   347k|  new_list = _g_slist_alloc ();
  ------------------
  |  |  110|   347k|#define _g_slist_alloc()        g_slice_new (GSList)
  |  |  ------------------
  |  |  |  |   46|   347k|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  |  |  ------------------
  ------------------
  281|   347k|  new_list->data = data;
  282|   347k|  new_list->next = list;
  283|       |
  284|   347k|  return new_list;
  285|   347k|}
g_slist_remove:
  453|     36|{
  454|     36|  return _g_slist_remove_data (list, data, FALSE);
  ------------------
  |  |  814|     36|#define	FALSE	(0)
  ------------------
  455|     36|}
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|   347k|{
  714|   358k|  while (list)
  ------------------
  |  Branch (714:10): [True: 11.8k, False: 346k]
  ------------------
  715|  11.8k|    {
  716|  11.8k|      if (list->data == data)
  ------------------
  |  Branch (716:11): [True: 740, False: 11.1k]
  ------------------
  717|    740|        break;
  718|  11.1k|      list = list->next;
  719|  11.1k|    }
  720|       |
  721|   347k|  return list;
  722|   347k|}
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_sort:
 1068|     18|{
 1069|       |  return g_slist_sort_real (list, (GFunc) compare_func, NULL);
 1070|     18|}
gslist.c:_g_slist_remove_data:
  417|     36|{
  418|     36|  GSList *tmp = NULL;
  419|     36|  GSList **previous_ptr = &list;
  420|       |
  421|     36|  while (*previous_ptr)
  ------------------
  |  Branch (421:10): [True: 36, False: 0]
  ------------------
  422|     36|    {
  423|     36|      tmp = *previous_ptr;
  424|     36|      if (tmp->data == data)
  ------------------
  |  Branch (424:11): [True: 36, False: 0]
  ------------------
  425|     36|        {
  426|     36|          *previous_ptr = tmp->next;
  427|     36|          g_slist_free_1 (tmp);
  428|     36|          if (!all)
  ------------------
  |  Branch (428:15): [True: 36, False: 0]
  ------------------
  429|     36|            break;
  430|     36|        }
  431|      0|      else
  432|      0|        {
  433|      0|          previous_ptr = &tmp->next;
  434|      0|        }
  435|     36|    }
  436|       |
  437|     36|  return list;
  438|     36|}
gslist.c:g_slist_sort_real:
 1025|     18|{
 1026|     18|  GSList *l1, *l2;
 1027|       |
 1028|     18|  if (!list)
  ------------------
  |  Branch (1028:7): [True: 18, False: 0]
  ------------------
 1029|     18|    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.62k|{
  358|  2.62k|  gchar *new_str;
  359|  2.62k|  gsize length;
  360|       |
  361|  2.62k|  if (str)
  ------------------
  |  Branch (361:7): [True: 2.54k, False: 85]
  ------------------
  362|  2.54k|    {
  363|  2.54k|      length = strlen (str) + 1;
  364|  2.54k|      new_str = g_new (char, length);
  ------------------
  |  |  290|  2.54k|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|  2.54k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  2.54k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|  2.54k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|  2.54k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|  2.54k|	  gpointer __p;						\
  |  |  |  |  239|  2.54k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 2.54k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|  2.54k|	    __p = g_##func (__n);				\
  |  |  |  |  241|  2.54k|	  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.54k|	  __p;							\
  |  |  |  |  247|  2.54k|	}))
  |  |  ------------------
  ------------------
  365|  2.54k|      memcpy (new_str, str, length);
  366|  2.54k|    }
  367|     85|  else
  368|     85|    new_str = NULL;
  369|       |
  370|  2.62k|  return new_str;
  371|  2.62k|}
g_memdup2:
  422|   345k|{
  423|   345k|  gpointer new_mem;
  424|       |
  425|   345k|  if (mem && byte_size != 0)
  ------------------
  |  Branch (425:7): [True: 2.56k, False: 342k]
  |  Branch (425:14): [True: 2.56k, False: 1]
  ------------------
  426|  2.56k|    {
  427|  2.56k|      new_mem = g_malloc (byte_size);
  428|  2.56k|      memcpy (new_mem, mem, byte_size);
  429|  2.56k|    }
  430|   342k|  else
  431|   342k|    new_mem = NULL;
  432|       |
  433|   345k|  return new_mem;
  434|   345k|}
g_stpcpy:
  509|    156|{
  510|    156|#ifdef HAVE_STPCPY
  511|    156|  g_return_val_if_fail (dest != NULL, NULL);
  ------------------
  |  |  643|    156|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    156|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    156|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    156|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    156| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    156|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    156|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    156|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 156, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    156|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    156|   else                                         \
  |  |  |  |  |  | 1021|    156|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    156|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    156|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 156, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    156|      { } \
  |  |  646|    156|    else \
  |  |  647|    156|      { \
  |  |  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|    156|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    156|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 156]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  512|    156|  g_return_val_if_fail (src != NULL, NULL);
  ------------------
  |  |  643|    156|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    156|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    156|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    156|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    156| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    156|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    156|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    156|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 156, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    156|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    156|   else                                         \
  |  |  |  |  |  | 1021|    156|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    156|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    156|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 156, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    156|      { } \
  |  |  646|    156|    else \
  |  |  647|    156|      { \
  |  |  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|    156|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    156|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 156]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  513|    156|  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|    156|}
g_strdup_vprintf:
  551|   237k|{
  552|   237k|  gchar *string = NULL;
  553|       |
  554|   237k|  g_vasprintf (&string, format, args);
  555|       |
  556|   237k|  return string;
  557|   237k|}
g_strdup_printf:
  579|  2.52k|{
  580|  2.52k|  gchar *buffer;
  581|  2.52k|  va_list args;
  582|       |
  583|  2.52k|  va_start (args, format);
  584|  2.52k|  buffer = g_strdup_vprintf (format, args);
  585|  2.52k|  va_end (args);
  586|       |
  587|  2.52k|  return buffer;
  588|  2.52k|}
g_strconcat:
  609|     78|{
  610|     78|  gsize   l;
  611|     78|  va_list args;
  612|     78|  gchar   *s;
  613|     78|  gchar   *concat;
  614|     78|  gchar   *ptr;
  615|       |
  616|     78|  if (!string1)
  ------------------
  |  Branch (616:7): [True: 0, False: 78]
  ------------------
  617|      0|    return NULL;
  618|       |
  619|     78|  l = 1 + strlen (string1);
  620|     78|  va_start (args, string1);
  621|     78|  s = va_arg (args, gchar*);
  622|    156|  while (s)
  ------------------
  |  Branch (622:10): [True: 78, False: 78]
  ------------------
  623|     78|    {
  624|     78|      l += strlen (s);
  625|     78|      s = va_arg (args, gchar*);
  626|     78|    }
  627|     78|  va_end (args);
  628|       |
  629|     78|  concat = g_new (gchar, l);
  ------------------
  |  |  290|     78|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|     78|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     78|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|     78|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|     78|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|     78|	  gpointer __p;						\
  |  |  |  |  239|     78|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 78, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|     78|	    __p = g_##func (__n);				\
  |  |  |  |  241|     78|	  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|     78|	  __p;							\
  |  |  |  |  247|     78|	}))
  |  |  ------------------
  ------------------
  630|     78|  ptr = concat;
  631|       |
  632|     78|  ptr = g_stpcpy (ptr, string1);
  633|     78|  va_start (args, string1);
  634|     78|  s = va_arg (args, gchar*);
  635|    156|  while (s)
  ------------------
  |  Branch (635:10): [True: 78, False: 78]
  ------------------
  636|     78|    {
  637|     78|      ptr = g_stpcpy (ptr, s);
  638|     78|      s = va_arg (args, gchar*);
  639|     78|    }
  640|     78|  va_end (args);
  641|       |
  642|     78|  return concat;
  643|     78|}

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

g_rec_mutex_lock:
  394|     42|{
  395|     42|  pthread_mutex_lock (g_rec_mutex_get_impl (mutex));
  396|     42|}
g_rec_mutex_unlock:
  413|     42|{
  414|     42|  pthread_mutex_unlock (rec_mutex->p);
  415|     42|}
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.11k|{
  622|  4.11k|  int retval = pthread_rwlock_rdlock (g_rw_lock_get_impl (rw_lock));
  623|       |
  624|  4.11k|  if (retval != 0)
  ------------------
  |  Branch (624:7): [True: 0, False: 4.11k]
  ------------------
  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.11k|}
g_rw_lock_reader_unlock:
  662|  4.11k|{
  663|  4.11k|  pthread_rwlock_unlock (g_rw_lock_get_impl (rw_lock));
  664|  4.11k|}
g_private_get:
 1080|  7.62M|{
 1081|       |  /* quote POSIX: No errors are returned from pthread_getspecific(). */
 1082|  7.62M|  return pthread_getspecific (*g_private_get_impl (key));
 1083|  7.62M|}
g_private_set:
 1099|   938k|{
 1100|   938k|  gint status;
 1101|       |
 1102|   938k|  if G_UNLIKELY ((status = pthread_setspecific (*g_private_get_impl (key), value)) != 0)
  ------------------
  |  | 1025|   938k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   938k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   938k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   938k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   938k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 938k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   938k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   938k|   else                                         \
  |  |  |  | 1021|   938k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   938k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   938k|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 938k]
  |  |  ------------------
  ------------------
 1103|      0|    g_thread_abort (status, "pthread_setspecific");
 1104|   938k|}
g_mutex_lock:
 1513|  4.09M|{
 1514|       |  /* 0 -> 1 and we're done.  Anything else, and we need to wait... */
 1515|  4.09M|  if G_UNLIKELY (g_atomic_int_add (&mutex->i[0], 1) != 0)
  ------------------
  |  | 1025|  4.09M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  4.09M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.09M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  4.09M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  12.2M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [Folded, False: 4.09M]
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 4.09M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  4.09M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  4.09M|   else                                         \
  |  |  |  | 1021|  4.09M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  4.09M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  4.09M|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 4.09M]
  |  |  ------------------
  ------------------
 1516|      0|    g_mutex_lock_slowpath (mutex);
 1517|  4.09M|}
g_mutex_unlock:
 1521|  4.14M|{
 1522|  4.14M|  guint prev;
 1523|       |
 1524|  4.14M|  prev = exchange_release (&mutex->i[0], 0);
  ------------------
  |  | 1425|  4.14M|  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|  4.14M|  if G_UNLIKELY (prev != 1)
  ------------------
  |  | 1025|  4.14M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  4.14M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.14M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  4.14M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  4.14M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 4.14M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  4.14M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  4.14M|   else                                         \
  |  |  |  | 1021|  4.14M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  4.14M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  4.14M|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 4.14M]
  |  |  ------------------
  ------------------
 1528|      0|    g_mutex_unlock_slowpath (mutex, prev);
 1529|  4.14M|}
g_mutex_trylock:
 1533|  52.9k|{
 1534|  52.9k|  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|  52.9k|  atomic_compare_exchange_strong_explicit((atomic_uint *) (ptr), (old), (new), \
  |  | 1422|  52.9k|                                          __ATOMIC_ACQUIRE, __ATOMIC_RELAXED)
  ------------------
 1540|  52.9k|}
g_cond_broadcast:
 1588|     35|{
 1589|     35|  g_atomic_int_inc (&cond->i[0]);
  ------------------
  |  |  148|     35|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|     35|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     35|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|     35|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 35]
  |  |  ------------------
  |  |  151|     35|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|     35|  }))
  ------------------
 1590|       |
 1591|     35|  syscall (__NR_futex, &cond->i[0], (gsize) FUTEX_WAKE_PRIVATE, (gsize) INT_MAX, NULL);
 1592|     35|}
gthread-posix.c:g_rec_mutex_impl_new:
  280|      2|{
  281|      2|  pthread_mutexattr_t attr;
  282|      2|  pthread_mutex_t *mutex;
  283|       |
  284|      2|  mutex = malloc (sizeof (pthread_mutex_t));
  285|      2|  if G_UNLIKELY (mutex == NULL)
  ------------------
  |  | 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: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 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: 0, False: 2]
  |  |  ------------------
  ------------------
  286|      0|    g_thread_abort (errno, "malloc");
  287|       |
  288|      2|  pthread_mutexattr_init (&attr);
  289|      2|  pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE);
  290|      2|  pthread_mutex_init (mutex, &attr);
  291|      2|  pthread_mutexattr_destroy (&attr);
  292|       |
  293|      2|  return mutex;
  294|      2|}
gthread-posix.c:g_rec_mutex_get_impl:
  305|     42|{
  306|     42|  pthread_mutex_t *impl = g_atomic_pointer_get (&rec_mutex->p);
  ------------------
  |  |  113|     42|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|     42|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|     42|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|     42|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|     42|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|     42|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|     42|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|     42|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|     42|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|     42|    gapg_temp_newval;                                                      \
  |  |  119|     42|  }))
  ------------------
  307|       |
  308|     42|  if G_UNLIKELY (impl == NULL)
  ------------------
  |  | 1025|     42|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 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: 2, False: 40]
  |  |  |  |  ------------------
  |  |  |  | 1019|     42|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     42|   else                                         \
  |  |  |  | 1021|     42|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     42|   _g_boolean_var_;                             \
  |  |  |  | 1023|     42|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 2, False: 40]
  |  |  ------------------
  ------------------
  309|      2|    {
  310|      2|      impl = g_rec_mutex_impl_new ();
  311|      2|      if (!g_atomic_pointer_compare_and_exchange (&rec_mutex->p, NULL, impl))
  ------------------
  |  |  210|      2|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  211|      2|    G_STATIC_ASSERT (sizeof (oldval) == sizeof (gpointer));                  \
  |  |  ------------------
  |  |  |  |  765|      2|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  212|      2|    gpointer gapcae_oldval = (gpointer)(oldval);                             \
  |  |  213|      2|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  ------------------
  |  |  |  |  765|      2|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  214|      2|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  ------------------
  |  |  |  Branch (214:13): [Folded, False: 2]
  |  |  ------------------
  |  |  215|      2|    __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|      2|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|      2|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#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: 2, False: 0]
  |  |  ------------------
  |  |  216|      2|  }))
  ------------------
  |  Branch (311:11): [True: 0, False: 2]
  ------------------
  312|      0|        g_rec_mutex_impl_free (impl);
  313|      2|      impl = rec_mutex->p;
  314|      2|    }
  315|       |
  316|     42|  return impl;
  317|     42|}
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|  8.69k|{
  466|  8.69k|  pthread_rwlock_t *impl = g_atomic_pointer_get (&lock->p);
  ------------------
  |  |  113|  8.69k|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|  8.69k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|  8.69k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|  8.69k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|  8.69k|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|  8.69k|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|  8.69k|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|  8.69k|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|  8.69k|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|  8.69k|    gapg_temp_newval;                                                      \
  |  |  119|  8.69k|  }))
  ------------------
  467|       |
  468|  8.69k|  if G_UNLIKELY (impl == NULL)
  ------------------
  |  | 1025|  8.69k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  8.69k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  8.69k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  8.69k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  8.69k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 3, False: 8.69k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  8.69k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  8.69k|   else                                         \
  |  |  |  | 1021|  8.69k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  8.69k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  8.69k|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 3, False: 8.69k]
  |  |  ------------------
  ------------------
  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|  8.69k|  return impl;
  477|  8.69k|}
gthread-posix.c:g_private_get_impl:
 1050|  8.56M|{
 1051|  8.56M|  pthread_key_t *impl = g_atomic_pointer_get (&key->p);
  ------------------
  |  |  113|  8.56M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|  8.56M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|  8.56M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|  8.56M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|  8.56M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|  8.56M|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|  8.56M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|  8.56M|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|  8.56M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|  8.56M|    gapg_temp_newval;                                                      \
  |  |  119|  8.56M|  }))
  ------------------
 1052|       |
 1053|  8.56M|  if G_UNLIKELY (impl == NULL)
  ------------------
  |  | 1025|  8.56M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  8.56M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  8.56M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  8.56M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  8.56M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 4, False: 8.56M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  8.56M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  8.56M|   else                                         \
  |  |  |  | 1021|  8.56M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  8.56M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  8.56M|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 4, False: 8.56M]
  |  |  ------------------
  ------------------
 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|  8.56M|  return impl;
 1064|  8.56M|}
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|     35|{
  700|     35|  gsize *value_location = (gsize *) location;
  701|     35|  gboolean need_init = FALSE;
  ------------------
  |  |  814|     35|#define	FALSE	(0)
  ------------------
  702|     35|  g_mutex_lock (&g_once_mutex);
  703|     35|  if (g_atomic_pointer_get (value_location) == 0)
  ------------------
  |  |  113|     35|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|     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
  |  |  ------------------
  |  |  115|     35|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|     35|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|     35|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|     35|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|     35|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|     35|    gapg_temp_newval;                                                      \
  |  |  119|     35|  }))
  ------------------
  |  Branch (703:7): [True: 35, False: 0]
  ------------------
  704|     35|    {
  705|     35|      if (!g_slist_find (g_once_init_list, (void*) value_location))
  ------------------
  |  Branch (705:11): [True: 35, False: 0]
  ------------------
  706|     35|        {
  707|     35|          need_init = TRUE;
  ------------------
  |  |  818|     35|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     35|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  708|     35|          g_once_init_list = g_slist_prepend (g_once_init_list, (void*) value_location);
  709|     35|        }
  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|     35|    }
  715|     35|  g_mutex_unlock (&g_once_mutex);
  716|     35|  return need_init;
  717|     35|}
g_once_init_leave:
  739|     35|{
  740|     35|  gsize *value_location = (gsize *) location;
  741|       |
  742|     35|  g_return_if_fail (g_atomic_pointer_get (value_location) == 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  743|     35|  g_return_if_fail (result != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  744|       |
  745|     35|  g_atomic_pointer_set (value_location, result);
  ------------------
  |  |  121|     35|  (G_GNUC_EXTENSION ({                                                      \
  |  |  ------------------
  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  122|     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
  |  |  ------------------
  |  |  123|     35|    glib_typeof ((atomic)) gaps_temp_atomic = (atomic);                     \
  |  |  ------------------
  |  |  |  |  238|     35|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  124|     35|    glib_typeof (*(atomic)) gaps_temp_newval = (newval);                    \
  |  |  ------------------
  |  |  |  |  238|     35|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  125|     35|    (void) (0 ? (gpointer) * (atomic) : NULL);                              \
  |  |  ------------------
  |  |  |  Branch (125:13): [Folded, False: 35]
  |  |  ------------------
  |  |  126|     35|    __atomic_store (gaps_temp_atomic, &gaps_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  127|     35|  }))
  ------------------
  746|     35|  g_mutex_lock (&g_once_mutex);
  747|     35|  g_return_if_fail (g_once_init_list != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  748|     35|  g_once_init_list = g_slist_remove (g_once_init_list, (void*) value_location);
  749|     35|  g_cond_broadcast (&g_once_cond);
  750|     35|  g_mutex_unlock (&g_once_mutex);
  751|     35|}
g_thread_n_created:
  833|  1.48k|{
  834|  1.48k|  return g_atomic_int_get (&g_thread_n_created_counter);
  ------------------
  |  |   96|  1.48k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.48k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  1.48k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.48k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  1.48k|    gint gaig_temp;                                                          \
  |  |   99|  1.48k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 1.48k]
  |  |  ------------------
  |  |  100|  1.48k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  1.48k|    (gint) gaig_temp;                                                        \
  |  |  102|  1.48k|  }))
  ------------------
  835|  1.48k|}

g_nullify_pointer:
 2664|   103k|{
 2665|   103k|  g_return_if_fail (nullify_location != NULL);
  ------------------
  |  |  630|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   103k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   103k|      { } \
  |  |  633|   103k|    else \
  |  |  634|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2666|       |
 2667|   103k|  *nullify_location = NULL;
 2668|   103k|}

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|   469k|{
  400|   469k|  if (nth_bit < 0 || G_UNLIKELY (nth_bit > GLIB_SIZEOF_LONG * 8))
  ------------------
  |  | 1025|   234k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   234k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   234k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   234k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   234k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 234k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   234k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   234k|   else                                         \
  |  |  |  | 1021|   234k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   234k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   234k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 234k]
  |  |  ------------------
  ------------------
  |  Branch (400:7): [True: 234k, False: 234k]
  ------------------
  401|   234k|    nth_bit = GLIB_SIZEOF_LONG * 8;
  ------------------
  |  |   73|   234k|#define GLIB_SIZEOF_LONG   8
  ------------------
  402|  15.2M|  while (nth_bit > 0)
  ------------------
  |  Branch (402:10): [True: 15.0M, False: 234k]
  ------------------
  403|  15.0M|    {
  404|  15.0M|      nth_bit--;
  405|  15.0M|      if (mask & (1UL << nth_bit))
  ------------------
  |  Branch (405:11): [True: 234k, False: 14.7M]
  ------------------
  406|   234k|        return nth_bit;
  407|  15.0M|    }
  408|   234k|  return -1;
  409|   469k|}
gslice.c:g_bit_storage_impl:
  413|  10.2k|{
  414|  10.2k|#if defined(__GNUC__) && (__GNUC__ >= 4) && defined(__OPTIMIZE__)
  415|  10.2k|  return G_LIKELY (number) ?
  ------------------
  |  | 1024|  10.2k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  10.2k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  10.2k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  10.2k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  10.2k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 10.2k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  10.2k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  10.2k|   else                                         \
  |  |  |  | 1021|  10.2k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  10.2k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  10.2k|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 10.2k, False: 0]
  |  |  ------------------
  ------------------
  416|  10.2k|           ((GLIB_SIZEOF_LONG * 8U - 1) ^ (guint) __builtin_clzl(number)) + 1 : 1;
  ------------------
  |  |   73|  10.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|  10.2k|}

_g_atomic_array_init:
  102|     40|{
  103|       |  array->data = NULL;
  104|     40|}
_g_atomic_array_copy:
  126|     91|{
  127|     91|  guint8 *new, *old;
  128|     91|  gsize old_size, new_size;
  129|       |
  130|     91|  G_LOCK (array);
  ------------------
  |  |  135|     91|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|     91|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  131|     91|  old = g_atomic_pointer_get (&array->data);
  ------------------
  |  |  113|     91|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|     91|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|     91|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|     91|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|     91|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|     91|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|     91|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|     91|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|     91|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|     91|    gapg_temp_newval;                                                      \
  |  |  119|     91|  }))
  ------------------
  132|     91|  if (old)
  ------------------
  |  Branch (132:7): [True: 23, False: 68]
  ------------------
  133|     23|    {
  134|     23|      old_size = G_ATOMIC_ARRAY_DATA_SIZE (old);
  ------------------
  |  |   28|     23|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  ------------------
  135|     23|      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|     23|      new = freelist_alloc (new_size, additional_element_size != 0);
  140|     23|      memcpy (new, old, old_size);
  141|     23|    }
  142|     68|  else if (additional_element_size != 0)
  ------------------
  |  Branch (142:12): [True: 11, False: 57]
  ------------------
  143|     11|    {
  144|     11|      new_size = header_size + additional_element_size;
  145|     11|      new = freelist_alloc (new_size, TRUE);
  ------------------
  |  |  818|     11|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     11|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  146|     11|    }
  147|     57|  else
  148|     57|    new = NULL;
  149|     91|  G_UNLOCK (array);
  ------------------
  |  |  136|     91|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|     91|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  150|     91|  return new;
  151|     91|}
_g_atomic_array_update:
  160|     34|{
  161|     34|  guint8 *old;
  162|       |
  163|     34|  G_LOCK (array);
  ------------------
  |  |  135|     34|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|     34|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  164|     34|  old = g_atomic_pointer_get (&array->data);
  ------------------
  |  |  113|     34|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|     34|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|     34|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|     34|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|     34|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|     34|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|     34|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|     34|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|     34|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|     34|    gapg_temp_newval;                                                      \
  |  |  119|     34|  }))
  ------------------
  165|       |
  166|     34|  g_assert (old == NULL || G_ATOMIC_ARRAY_DATA_SIZE (old) <= G_ATOMIC_ARRAY_DATA_SIZE (new_data));
  ------------------
  |  |  231|     34|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     34|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     34|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 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|     78|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 24, False: 10]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 10, 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:25): [True: 34, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     34|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     34|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     34|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 34]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  167|       |
  168|     34|  g_atomic_pointer_set (&array->data, new_data);
  ------------------
  |  |  121|     34|  (G_GNUC_EXTENSION ({                                                      \
  |  |  ------------------
  |  |  |  |   54|     34|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  122|     34|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                \
  |  |  ------------------
  |  |  |  |  765|     34|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  123|     34|    glib_typeof ((atomic)) gaps_temp_atomic = (atomic);                     \
  |  |  ------------------
  |  |  |  |  238|     34|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  124|     34|    glib_typeof (*(atomic)) gaps_temp_newval = (newval);                    \
  |  |  ------------------
  |  |  |  |  238|     34|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  125|     34|    (void) (0 ? (gpointer) * (atomic) : NULL);                              \
  |  |  ------------------
  |  |  |  Branch (125:13): [Folded, False: 34]
  |  |  ------------------
  |  |  126|     34|    __atomic_store (gaps_temp_atomic, &gaps_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  127|     34|  }))
  ------------------
  169|     34|  if (old)
  ------------------
  |  Branch (169:7): [True: 10, False: 24]
  ------------------
  170|     10|    freelist_free (old);
  171|     34|  G_UNLOCK (array);
  ------------------
  |  |  136|     34|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|     34|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  172|     34|}
gatomicarray.c:freelist_alloc:
   60|     34|{
   61|     34|  gpointer mem;
   62|     34|  FreeListNode *free, **prev;
   63|     34|  gsize real_size;
   64|       |
   65|     34|  if (reuse)
  ------------------
  |  Branch (65:7): [True: 21, False: 13]
  ------------------
   66|     21|    {
   67|     37|      for (free = freelist, prev = &freelist; free != NULL; prev = &free->next, free = free->next)
  ------------------
  |  Branch (67:47): [True: 19, False: 18]
  ------------------
   68|     19|	{
   69|     19|	  if (G_ATOMIC_ARRAY_DATA_SIZE (free) == size)
  ------------------
  |  |   28|     19|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  ------------------
  |  Branch (69:8): [True: 3, False: 16]
  ------------------
   70|      3|	    {
   71|      3|	      *prev = free->next;
   72|      3|	      return (gpointer)free;
   73|      3|	    }
   74|     19|	}
   75|     21|    }
   76|       |
   77|     31|  real_size = sizeof (gsize) + MAX (size, sizeof (FreeListNode));
  ------------------
  |  |  822|     31|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 24, False: 7]
  |  |  ------------------
  ------------------
   78|     31|  mem = g_slice_alloc (real_size);
   79|     31|  mem = ((char *) mem) + sizeof (gsize);
   80|     31|  G_ATOMIC_ARRAY_DATA_SIZE (mem) = size;
  ------------------
  |  |   28|     31|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  ------------------
   81|       |
   82|     31|#if ENABLE_VALGRIND
   83|     31|  VALGRIND_MALLOCLIKE_BLOCK (mem, real_size - sizeof (gsize), FALSE, FALSE);
  ------------------
  |  | 6479|     31|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK,       \
  |  |  ------------------
  |  |  |  |  203|     31|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|     31|    __extension__                                                 \
  |  |  |  |  |  |  414|     31|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|     31|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|     31|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|     31|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|     31|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|     31|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|     31|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|     31|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|     31|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|     31|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|     31|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|     31|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|     31|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|     31|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|     31|                    );                                            \
  |  |  |  |  |  |  429|     31|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|     31|    })
  |  |  |  |  ------------------
  |  |  |  |  204|     31|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|     31|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6480|     31|                                    addr, sizeB, rzB, is_zeroed, 0)
  ------------------
   84|     31|#endif
   85|       |
   86|     31|  return mem;
   87|     34|}
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|  2.96k|{
  195|  2.96k|  GClosure *closure;
  196|  2.96k|  gint private_size;
  197|  2.96k|  gchar *allocated;
  198|       |
  199|  2.96k|  g_return_val_if_fail (sizeof_closure >= sizeof (GClosure), NULL);
  ------------------
  |  |  643|  2.96k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.96k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.96k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.96k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.96k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.96k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.96k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.96k|   else                                         \
  |  |  |  |  |  | 1021|  2.96k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.96k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.96k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.96k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.96k|      { } \
  |  |  646|  2.96k|    else \
  |  |  647|  2.96k|      { \
  |  |  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.96k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  200|       |
  201|  2.96k|  private_size = sizeof (GRealClosure) - sizeof (GClosure);
  202|       |
  203|  2.96k|#ifdef ENABLE_VALGRIND
  204|       |  /* See comments in gtype.c about what's going on here... */
  205|  2.96k|  if (RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|  2.96k|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|  2.96k|    __extension__                                                 \
  |  |  |  |  414|  2.96k|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|  2.96k|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|  2.96k|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|  2.96k|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|  2.96k|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|  2.96k|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|  2.96k|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|  2.96k|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|  2.96k|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|  2.96k|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|  2.96k|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|  2.96k|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|  2.96k|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|  2.96k|                     : "cc", "memory"                             \
  |  |  |  |  428|  2.96k|                    );                                            \
  |  |  |  |  429|  2.96k|    _zzq_result;                                                  \
  |  |  |  |  430|  2.96k|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 2.96k]
  |  |  ------------------
  |  | 6216|  2.96k|                                    VG_USERREQ__RUNNING_ON_VALGRIND,  \
  |  | 6217|  2.96k|                                    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|  2.96k|  else
  217|  2.96k|#endif
  218|  2.96k|    allocated = g_malloc0 (private_size + sizeof_closure);
  219|       |
  220|  2.96k|  closure = (GClosure *) (allocated + private_size);
  221|       |
  222|  2.96k|  SET (closure, ref_count, 1);
  ------------------
  |  |  122|  2.96k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  2.96k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  2.96k|G_STMT_START {                                                                          \
  |  |  |  |  106|  2.96k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  2.96k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  2.96k|  do                                                    		                \
  |  |  |  |  109|  2.96k|    {                                                   		                \
  |  |  |  |  110|  2.96k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  2.96k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  2.96k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  2.96k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  2.96k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  2.96k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  2.96k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  2.96k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  2.96k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  2.96k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  2.96k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.96k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 2.96k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  2.96k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  2.96k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  2.96k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  2.96k|#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: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  2.96k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  2.96k|    }                                                   		                \
  |  |  |  |  118|  2.96k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 2.96k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  2.96k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  223|  2.96k|  SET (closure, floating, TRUE);
  ------------------
  |  |  122|  2.96k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  2.96k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  2.96k|G_STMT_START {                                                                          \
  |  |  |  |  106|  2.96k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  2.96k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  2.96k|  do                                                    		                \
  |  |  |  |  109|  2.96k|    {                                                   		                \
  |  |  |  |  110|  2.96k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  2.96k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  2.96k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  2.96k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  2.96k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  2.96k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  2.96k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  2.96k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  2.96k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  2.96k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  2.96k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.96k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 2.96k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  2.96k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  2.96k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  2.96k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  2.96k|#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: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  2.96k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  2.96k|    }                                                   		                \
  |  |  |  |  118|  2.96k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 2.96k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  2.96k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  224|  2.96k|  closure->data = data;
  225|       |
  226|  2.96k|  return closure;
  227|  2.96k|}
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|  9.70k|{
  546|  9.70k|  guint new_ref_count;
  547|  9.70k|  g_return_val_if_fail (closure != NULL, NULL);
  ------------------
  |  |  643|  9.70k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  9.70k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  9.70k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  9.70k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  9.70k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  9.70k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  9.70k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  9.70k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9.70k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  9.70k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  9.70k|   else                                         \
  |  |  |  |  |  | 1021|  9.70k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  9.70k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  9.70k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9.70k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  9.70k|      { } \
  |  |  646|  9.70k|    else \
  |  |  647|  9.70k|      { \
  |  |  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|  9.70k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  9.70k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9.70k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  548|  9.70k|  g_return_val_if_fail (closure->ref_count > 0, NULL);
  ------------------
  |  |  643|  9.70k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  9.70k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  9.70k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  9.70k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  9.70k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  9.70k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  9.70k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  9.70k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9.70k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  9.70k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  9.70k|   else                                         \
  |  |  |  |  |  | 1021|  9.70k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  9.70k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  9.70k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9.70k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  9.70k|      { } \
  |  |  646|  9.70k|    else \
  |  |  647|  9.70k|      { \
  |  |  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|  9.70k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  9.70k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9.70k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  549|  9.70k|  g_return_val_if_fail (closure->ref_count < CLOSURE_MAX_REF_COUNT, NULL);
  ------------------
  |  |  643|  9.70k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  9.70k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  9.70k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  9.70k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  9.70k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  9.70k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  9.70k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  9.70k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9.70k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  9.70k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  9.70k|   else                                         \
  |  |  |  |  |  | 1021|  9.70k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  9.70k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  9.70k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9.70k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  9.70k|      { } \
  |  |  646|  9.70k|    else \
  |  |  647|  9.70k|      { \
  |  |  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|  9.70k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  9.70k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9.70k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  550|       |
  551|  9.70k|  INC_ASSIGN (closure, ref_count, &new_ref_count);
  ------------------
  |  |  124|  9.70k|#define INC_ASSIGN(_closure, _field, _newv)     CHANGE_FIELD (_closure, _field, +=,     1, TRUE,     (void), *(_newv) = )
  |  |  ------------------
  |  |  |  |  104|  9.70k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  9.70k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  9.70k|G_STMT_START {                                                                          \
  |  |  |  |  106|  9.70k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  9.70k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  9.70k|  do                                                    		                \
  |  |  |  |  109|  9.70k|    {                                                   		                \
  |  |  |  |  110|  9.70k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  9.70k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  9.70k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  9.70k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  9.70k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  9.70k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  9.70k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  9.70k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  9.70k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  9.70k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  9.70k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  9.70k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  9.70k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 9.70k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  9.70k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  9.70k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  9.70k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  9.70k|#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: 9.70k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  9.70k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  9.70k|    }                                                   		                \
  |  |  |  |  118|  9.70k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 9.70k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  9.70k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  9.70k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 9.70k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  552|  9.70k|  g_return_val_if_fail (new_ref_count > 1, NULL);
  ------------------
  |  |  643|  9.70k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  9.70k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  9.70k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  9.70k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  9.70k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  9.70k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  9.70k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  9.70k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9.70k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  9.70k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  9.70k|   else                                         \
  |  |  |  |  |  | 1021|  9.70k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  9.70k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  9.70k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9.70k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  9.70k|      { } \
  |  |  646|  9.70k|    else \
  |  |  647|  9.70k|      { \
  |  |  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|  9.70k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  9.70k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9.70k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  553|       |
  554|  9.70k|  return closure;
  555|  9.70k|}
g_closure_invalidate:
  577|  2.96k|{
  578|  2.96k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  2.96k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.96k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.96k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.96k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.96k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.96k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.96k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.96k|   else                                         \
  |  |  |  |  |  | 1021|  2.96k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.96k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.96k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.96k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.96k|      { } \
  |  |  633|  2.96k|    else \
  |  |  634|  2.96k|      { \
  |  |  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.96k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  579|       |
  580|  2.96k|  if (!closure->is_invalid)
  ------------------
  |  Branch (580:7): [True: 2.96k, False: 0]
  ------------------
  581|  2.96k|    {
  582|  2.96k|      gboolean was_invalid;
  583|  2.96k|      g_closure_ref (closure);           /* preserve floating flag */
  584|  2.96k|      SWAP (closure, is_invalid, TRUE, &was_invalid);
  ------------------
  |  |  121|  2.96k|#define SWAP(_closure, _field, _value, _oldv)   CHANGE_FIELD (_closure, _field, =, _value, TRUE, *(_oldv) =,     (void) )
  |  |  ------------------
  |  |  |  |  104|  2.96k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  2.96k|G_STMT_START {                                                                          \
  |  |  |  |  106|  2.96k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  2.96k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  2.96k|  do                                                    		                \
  |  |  |  |  109|  2.96k|    {                                                   		                \
  |  |  |  |  110|  2.96k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  2.96k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  2.96k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  2.96k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  2.96k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  2.96k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  2.96k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  2.96k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  2.96k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  2.96k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  2.96k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.96k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 2.96k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  2.96k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  2.96k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  2.96k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  2.96k|#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: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  2.96k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  2.96k|    }                                                   		                \
  |  |  |  |  118|  2.96k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 2.96k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  2.96k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  585|       |      /* invalidate only once */
  586|  2.96k|      if (!was_invalid)
  ------------------
  |  Branch (586:11): [True: 2.96k, False: 0]
  ------------------
  587|  2.96k|        closure_invoke_notifiers (closure, INOTIFY);
  588|  2.96k|      g_closure_unref (closure);
  589|  2.96k|    }
  590|  2.96k|}
g_closure_unref:
  602|  12.6k|{
  603|  12.6k|  guint new_ref_count;
  604|       |
  605|  12.6k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  12.6k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  12.6k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  12.6k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  12.6k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  12.6k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  12.6k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  12.6k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  12.6k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 12.6k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  12.6k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  12.6k|   else                                         \
  |  |  |  |  |  | 1021|  12.6k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  12.6k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  12.6k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 12.6k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  12.6k|      { } \
  |  |  633|  12.6k|    else \
  |  |  634|  12.6k|      { \
  |  |  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|  12.6k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  12.6k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 12.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  606|  12.6k|  g_return_if_fail (closure->ref_count > 0);
  ------------------
  |  |  630|  12.6k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  12.6k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  12.6k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  12.6k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  12.6k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  12.6k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  12.6k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  12.6k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 12.6k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  12.6k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  12.6k|   else                                         \
  |  |  |  |  |  | 1021|  12.6k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  12.6k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  12.6k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 12.6k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  12.6k|      { } \
  |  |  633|  12.6k|    else \
  |  |  634|  12.6k|      { \
  |  |  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|  12.6k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  12.6k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 12.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  607|       |
  608|  12.6k|  if (closure->ref_count == 1)	/* last unref, invalidate first */
  ------------------
  |  Branch (608:7): [True: 2.96k, False: 9.70k]
  ------------------
  609|  2.96k|    g_closure_invalidate (closure);
  610|       |
  611|  12.6k|  DEC_ASSIGN (closure, ref_count, &new_ref_count);
  ------------------
  |  |  126|  12.6k|#define DEC_ASSIGN(_closure, _field, _newv)     CHANGE_FIELD (_closure, _field, -=,     1, TRUE,     (void), *(_newv) = )
  |  |  ------------------
  |  |  |  |  104|  12.6k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  12.6k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  12.6k|G_STMT_START {                                                                          \
  |  |  |  |  106|  12.6k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  12.6k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  12.6k|  do                                                    		                \
  |  |  |  |  109|  12.6k|    {                                                   		                \
  |  |  |  |  110|  12.6k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  12.6k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  12.6k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  12.6k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  12.6k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  12.6k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  12.6k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  12.6k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  12.6k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  12.6k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  12.6k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  12.6k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  12.6k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 12.6k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  12.6k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  12.6k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  12.6k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  12.6k|#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: 12.6k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  12.6k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  12.6k|    }                                                   		                \
  |  |  |  |  118|  12.6k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 12.6k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  12.6k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  12.6k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 12.6k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  612|       |
  613|  12.6k|  if (new_ref_count == 0)
  ------------------
  |  Branch (613:7): [True: 2.96k, False: 9.70k]
  ------------------
  614|  2.96k|    {
  615|  2.96k|      closure_invoke_notifiers (closure, FNOTIFY);
  616|  2.96k|      g_free (closure->notifiers);
  617|       |
  618|  2.96k|#ifdef ENABLE_VALGRIND
  619|       |      /* See comments in gtype.c about what's going on here... */
  620|  2.96k|      if (RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|  2.96k|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|  2.96k|    __extension__                                                 \
  |  |  |  |  414|  2.96k|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|  2.96k|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|  2.96k|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|  2.96k|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|  2.96k|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|  2.96k|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|  2.96k|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|  2.96k|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|  2.96k|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|  2.96k|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|  2.96k|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|  2.96k|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|  2.96k|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|  2.96k|                     : "cc", "memory"                             \
  |  |  |  |  428|  2.96k|                    );                                            \
  |  |  |  |  429|  2.96k|    _zzq_result;                                                  \
  |  |  |  |  430|  2.96k|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 2.96k]
  |  |  ------------------
  |  | 6216|  2.96k|                                    VG_USERREQ__RUNNING_ON_VALGRIND,  \
  |  | 6217|  2.96k|                                    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|  2.96k|      else
  633|  2.96k|#endif
  634|  2.96k|        g_free (G_REAL_CLOSURE (closure));
  ------------------
  |  |   63|  2.96k|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|  2.96k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  635|  2.96k|    }
  636|  12.6k|}
g_closure_sink:
  686|  2.96k|{
  687|  2.96k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  2.96k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.96k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.96k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.96k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.96k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.96k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.96k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.96k|   else                                         \
  |  |  |  |  |  | 1021|  2.96k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.96k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.96k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.96k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.96k|      { } \
  |  |  633|  2.96k|    else \
  |  |  634|  2.96k|      { \
  |  |  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.96k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  688|  2.96k|  g_return_if_fail (closure->ref_count > 0);
  ------------------
  |  |  630|  2.96k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.96k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.96k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.96k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.96k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.96k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.96k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.96k|   else                                         \
  |  |  |  |  |  | 1021|  2.96k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.96k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.96k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.96k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.96k|      { } \
  |  |  633|  2.96k|    else \
  |  |  634|  2.96k|      { \
  |  |  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.96k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  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|  2.96k|  if (closure->floating)
  ------------------
  |  Branch (695:7): [True: 2.96k, False: 0]
  ------------------
  696|  2.96k|    {
  697|  2.96k|      gboolean was_floating;
  698|  2.96k|      SWAP (closure, floating, FALSE, &was_floating);
  ------------------
  |  |  121|  2.96k|#define SWAP(_closure, _field, _value, _oldv)   CHANGE_FIELD (_closure, _field, =, _value, TRUE, *(_oldv) =,     (void) )
  |  |  ------------------
  |  |  |  |  104|  2.96k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  2.96k|G_STMT_START {                                                                          \
  |  |  |  |  106|  2.96k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  2.96k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  2.96k|  do                                                    		                \
  |  |  |  |  109|  2.96k|    {                                                   		                \
  |  |  |  |  110|  2.96k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  2.96k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  2.96k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  2.96k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  2.96k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  2.96k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  2.96k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  2.96k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  2.96k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  2.96k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  2.96k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.96k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 2.96k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  2.96k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  2.96k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  2.96k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  2.96k|#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: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  2.96k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  2.96k|    }                                                   		                \
  |  |  |  |  118|  2.96k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 2.96k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  2.96k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  699|       |      /* unref floating flag only once */
  700|  2.96k|      if (was_floating)
  ------------------
  |  Branch (700:11): [True: 2.96k, False: 0]
  ------------------
  701|  2.96k|        g_closure_unref (closure);
  702|  2.96k|    }
  703|  2.96k|}
g_closure_invoke:
  781|  3.78k|{
  782|  3.78k|  GRealClosure *real_closure;
  783|       |
  784|  3.78k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  3.78k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.78k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.78k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.78k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.78k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.78k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.78k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.78k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.78k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.78k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.78k|   else                                         \
  |  |  |  |  |  | 1021|  3.78k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.78k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.78k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.78k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.78k|      { } \
  |  |  633|  3.78k|    else \
  |  |  634|  3.78k|      { \
  |  |  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.78k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.78k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.78k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  785|       |
  786|  3.78k|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|  3.78k|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|  3.78k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  787|       |
  788|  3.78k|  g_closure_ref (closure);      /* preserve floating flag */
  789|  3.78k|  if (!closure->is_invalid)
  ------------------
  |  Branch (789:7): [True: 3.78k, False: 0]
  ------------------
  790|  3.78k|    {
  791|  3.78k|      GClosureMarshal marshal;
  792|  3.78k|      gpointer marshal_data;
  793|  3.78k|      gboolean in_marshal = closure->in_marshal;
  794|       |
  795|  3.78k|      g_return_if_fail (closure->marshal || real_closure->meta_marshal);
  ------------------
  |  |  630|  3.78k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.78k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.78k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.78k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.78k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.78k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.78k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  7.56k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.78k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.78k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.78k|   else                                         \
  |  |  |  |  |  | 1021|  3.78k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.78k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.78k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.78k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.78k|      { } \
  |  |  633|  3.78k|    else \
  |  |  634|  3.78k|      { \
  |  |  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.78k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.78k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.78k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  796|       |
  797|  3.78k|      SET (closure, in_marshal, TRUE);
  ------------------
  |  |  122|  3.78k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  3.78k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  3.78k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  3.78k|G_STMT_START {                                                                          \
  |  |  |  |  106|  3.78k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  3.78k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  3.78k|  do                                                    		                \
  |  |  |  |  109|  3.78k|    {                                                   		                \
  |  |  |  |  110|  3.78k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  3.78k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  3.78k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  3.78k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  3.78k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  3.78k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  3.78k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  3.78k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.78k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  3.78k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  3.78k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  3.78k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  3.78k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 3.78k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  3.78k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  3.78k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  3.78k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.78k|#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.78k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  3.78k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  3.78k|    }                                                   		                \
  |  |  |  |  118|  3.78k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 3.78k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  3.78k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  3.78k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 3.78k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  798|  3.78k|      if (real_closure->meta_marshal)
  ------------------
  |  Branch (798:11): [True: 1.26k, False: 2.52k]
  ------------------
  799|  1.26k|	{
  800|  1.26k|	  marshal_data = real_closure->meta_marshal_data;
  801|  1.26k|	  marshal = real_closure->meta_marshal;
  802|  1.26k|	}
  803|  2.52k|      else
  804|  2.52k|	{
  805|  2.52k|	  marshal_data = NULL;
  806|  2.52k|	  marshal = closure->marshal;
  807|  2.52k|	}
  808|  3.78k|      if (!in_marshal)
  ------------------
  |  Branch (808:11): [True: 3.78k, False: 0]
  ------------------
  809|  3.78k|	closure_invoke_notifiers (closure, PRE_NOTIFY);
  810|  3.78k|      marshal (closure,
  811|  3.78k|	       return_value,
  812|  3.78k|	       n_param_values, param_values,
  813|  3.78k|	       invocation_hint,
  814|  3.78k|	       marshal_data);
  815|  3.78k|      if (!in_marshal)
  ------------------
  |  Branch (815:11): [True: 3.78k, False: 0]
  ------------------
  816|  3.78k|	closure_invoke_notifiers (closure, POST_NOTIFY);
  817|  3.78k|      SET (closure, in_marshal, in_marshal);
  ------------------
  |  |  122|  3.78k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  3.78k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  3.78k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  3.78k|G_STMT_START {                                                                          \
  |  |  |  |  106|  3.78k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  3.78k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  3.78k|  do                                                    		                \
  |  |  |  |  109|  3.78k|    {                                                   		                \
  |  |  |  |  110|  3.78k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  3.78k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  3.78k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  3.78k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  3.78k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  3.78k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  3.78k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  3.78k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.78k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  3.78k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  3.78k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  3.78k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  3.78k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 3.78k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  3.78k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  3.78k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  3.78k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.78k|#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.78k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  3.78k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  3.78k|    }                                                   		                \
  |  |  |  |  118|  3.78k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 3.78k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  3.78k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  3.78k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 3.78k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  818|  3.78k|    }
  819|  3.78k|  g_closure_unref (closure);
  820|  3.78k|}
_g_closure_supports_invoke_va:
  824|  1.26k|{
  825|  1.26k|  GRealClosure *real_closure;
  826|       |
  827|  1.26k|  g_return_val_if_fail (closure != NULL, FALSE);
  ------------------
  |  |  643|  1.26k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.26k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.26k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.26k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.26k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.26k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.26k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.26k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.26k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.26k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.26k|   else                                         \
  |  |  |  |  |  | 1021|  1.26k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.26k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.26k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.26k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.26k|      { } \
  |  |  646|  1.26k|    else \
  |  |  647|  1.26k|      { \
  |  |  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.26k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.26k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.26k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  828|       |
  829|  1.26k|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|  1.26k|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|  1.26k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  830|       |
  831|  1.26k|  return
  832|  1.26k|    real_closure->va_marshal != NULL &&
  ------------------
  |  Branch (832:5): [True: 1.26k, False: 0]
  ------------------
  833|  1.26k|    (real_closure->meta_marshal == NULL ||
  ------------------
  |  Branch (833:6): [True: 1.26k, False: 0]
  ------------------
  834|      0|     real_closure->va_meta_marshal != NULL);
  ------------------
  |  Branch (834:6): [True: 0, False: 0]
  ------------------
  835|  1.26k|}
g_closure_set_marshal:
  901|  2.96k|{
  902|  2.96k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  2.96k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.96k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.96k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.96k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.96k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.96k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.96k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.96k|   else                                         \
  |  |  |  |  |  | 1021|  2.96k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.96k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.96k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.96k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.96k|      { } \
  |  |  633|  2.96k|    else \
  |  |  634|  2.96k|      { \
  |  |  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.96k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  903|  2.96k|  g_return_if_fail (marshal != NULL);
  ------------------
  |  |  630|  2.96k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.96k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.96k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.96k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.96k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.96k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.96k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.96k|   else                                         \
  |  |  |  |  |  | 1021|  2.96k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.96k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.96k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.96k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.96k|      { } \
  |  |  633|  2.96k|    else \
  |  |  634|  2.96k|      { \
  |  |  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.96k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  904|       |
  905|  2.96k|  if (closure->marshal && closure->marshal != marshal)
  ------------------
  |  Branch (905:7): [True: 0, False: 2.96k]
  |  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|  2.96k|	       closure->marshal, marshal);
  908|  2.96k|  else
  909|  2.96k|    closure->marshal = marshal;
  910|  2.96k|}
_g_closure_set_va_marshal:
  915|  2.96k|{
  916|  2.96k|  GRealClosure *real_closure;
  917|       |
  918|  2.96k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  2.96k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.96k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.96k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.96k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.96k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.96k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.96k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.96k|   else                                         \
  |  |  |  |  |  | 1021|  2.96k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.96k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.96k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.96k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.96k|      { } \
  |  |  633|  2.96k|    else \
  |  |  634|  2.96k|      { \
  |  |  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.96k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  919|  2.96k|  g_return_if_fail (marshal != NULL);
  ------------------
  |  |  630|  2.96k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.96k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.96k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.96k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.96k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.96k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.96k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.96k|   else                                         \
  |  |  |  |  |  | 1021|  2.96k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.96k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.96k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.96k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.96k|      { } \
  |  |  633|  2.96k|    else \
  |  |  634|  2.96k|      { \
  |  |  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.96k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  920|       |
  921|  2.96k|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|  2.96k|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|  2.96k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  922|       |
  923|  2.96k|  if (real_closure->va_marshal && real_closure->va_marshal != marshal)
  ------------------
  |  Branch (923:7): [True: 0, False: 2.96k]
  |  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|  2.96k|	       real_closure->va_marshal, marshal);
  926|  2.96k|  else
  927|  2.96k|    real_closure->va_marshal = marshal;
  928|  2.96k|}
g_cclosure_new:
  947|  2.96k|{
  948|  2.96k|  GClosure *closure;
  949|       |  
  950|  2.96k|  g_return_val_if_fail (callback_func != NULL, NULL);
  ------------------
  |  |  643|  2.96k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.96k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.96k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.96k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.96k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.96k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.96k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.96k|   else                                         \
  |  |  |  |  |  | 1021|  2.96k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.96k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.96k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.96k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.96k|      { } \
  |  |  646|  2.96k|    else \
  |  |  647|  2.96k|      { \
  |  |  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.96k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  951|       |  
  952|  2.96k|  closure = g_closure_new_simple (sizeof (GCClosure), user_data);
  953|  2.96k|  if (destroy_data)
  ------------------
  |  Branch (953:7): [True: 0, False: 2.96k]
  ------------------
  954|      0|    g_closure_add_finalize_notifier (closure, user_data, destroy_data);
  955|  2.96k|  ((GCClosure*) closure)->callback = (gpointer) callback_func;
  956|       |  
  957|  2.96k|  return closure;
  958|  2.96k|}
_g_closure_is_void:
 1068|   348k|{
 1069|   348k|  GRealClosure *real_closure;
 1070|   348k|  GTypeClass *class;
 1071|   348k|  gpointer callback;
 1072|   348k|  GType itype;
 1073|   348k|  guint offset;
 1074|       |
 1075|   348k|  if (closure->is_invalid)
  ------------------
  |  Branch (1075:7): [True: 0, False: 348k]
  ------------------
 1076|      0|    return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1077|       |
 1078|   348k|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|   348k|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|   348k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
 1079|       |
 1080|   348k|  if (real_closure->meta_marshal == g_type_iface_meta_marshal)
  ------------------
  |  Branch (1080:7): [True: 0, False: 348k]
  ------------------
 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|   348k|  else if (real_closure->meta_marshal == g_type_class_meta_marshal)
  ------------------
  |  Branch (1089:12): [True: 348k, False: 0]
  ------------------
 1090|   348k|    {
 1091|   348k|      offset = GPOINTER_TO_UINT (real_closure->meta_marshal_data);
  ------------------
  |  |   99|   348k|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 1092|       |
 1093|   348k|      class = G_TYPE_INSTANCE_GET_CLASS (instance, itype, GTypeClass);
  ------------------
  |  |  527|   348k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2309|   348k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  ------------------
  ------------------
 1094|   348k|      callback = G_STRUCT_MEMBER (gpointer, class, offset);
  ------------------
  |  |  862|   348k|    (*(member_type*) G_STRUCT_MEMBER_P ((struct_p), (struct_offset)))
  |  |  ------------------
  |  |  |  |  860|   348k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
 1095|   348k|      return callback == NULL;
 1096|   348k|    }
 1097|       |
 1098|      0|  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1099|   348k|}
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|  13.4k|{
  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|  13.4k|  switch (notify_type)
  ------------------
  |  Branch (250:11): [True: 13.4k, False: 0]
  ------------------
  251|  13.4k|    {
  252|      0|      GClosureNotifyData *ndata;
  253|      0|      guint i, offs;
  254|  2.96k|    case FNOTIFY:
  ------------------
  |  Branch (254:5): [True: 2.96k, False: 10.5k]
  ------------------
  255|  2.96k|      while (closure->n_fnotifiers)
  ------------------
  |  Branch (255:14): [True: 0, False: 2.96k]
  ------------------
  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|  2.96k|      closure->marshal = NULL;
  266|  2.96k|      closure->data = NULL;
  267|  2.96k|      break;
  268|  2.96k|    case INOTIFY:
  ------------------
  |  Branch (268:5): [True: 2.96k, False: 10.5k]
  ------------------
  269|  2.96k|      SET (closure, in_inotify, TRUE);
  ------------------
  |  |  122|  2.96k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  2.96k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  2.96k|G_STMT_START {                                                                          \
  |  |  |  |  106|  2.96k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  2.96k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  2.96k|  do                                                    		                \
  |  |  |  |  109|  2.96k|    {                                                   		                \
  |  |  |  |  110|  2.96k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  2.96k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  2.96k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  2.96k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  2.96k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  2.96k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  2.96k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  2.96k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  2.96k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  2.96k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  2.96k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.96k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 2.96k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  2.96k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  2.96k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  2.96k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  2.96k|#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: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  2.96k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  2.96k|    }                                                   		                \
  |  |  |  |  118|  2.96k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 2.96k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  2.96k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  270|  2.96k|      while (closure->n_inotifiers)
  ------------------
  |  Branch (270:14): [True: 0, False: 2.96k]
  ------------------
  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|  2.96k|      closure->marshal = NULL;
  281|  2.96k|      closure->data = NULL;
  282|  2.96k|      SET (closure, in_inotify, FALSE);
  ------------------
  |  |  122|  2.96k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  2.96k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  2.96k|G_STMT_START {                                                                          \
  |  |  |  |  106|  2.96k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  2.96k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  2.96k|  do                                                    		                \
  |  |  |  |  109|  2.96k|    {                                                   		                \
  |  |  |  |  110|  2.96k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  2.96k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  2.96k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  2.96k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  2.96k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  2.96k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  2.96k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  2.96k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  2.96k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  2.96k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  2.96k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  2.96k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 2.96k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  2.96k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  2.96k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  2.96k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  2.96k|#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: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  2.96k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  2.96k|    }                                                   		                \
  |  |  |  |  118|  2.96k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 2.96k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  2.96k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  283|  2.96k|      break;
  284|  3.78k|    case PRE_NOTIFY:
  ------------------
  |  Branch (284:5): [True: 3.78k, False: 9.70k]
  ------------------
  285|  3.78k|      i = closure->n_guards;
  286|  3.78k|      offs = 0;
  287|  3.78k|      while (i--)
  ------------------
  |  Branch (287:14): [True: 0, False: 3.78k]
  ------------------
  288|      0|	{
  289|      0|	  ndata = closure->notifiers + offs + i;
  290|      0|	  ndata->notify (ndata->data, closure);
  291|      0|	}
  292|  3.78k|      break;
  293|  3.78k|    case POST_NOTIFY:
  ------------------
  |  Branch (293:5): [True: 3.78k, False: 9.70k]
  ------------------
  294|  3.78k|      i = closure->n_guards;
  295|  3.78k|      offs = i;
  296|  3.78k|      while (i--)
  ------------------
  |  Branch (296:14): [True: 0, False: 3.78k]
  ------------------
  297|      0|	{
  298|      0|	  ndata = closure->notifiers + offs + i;
  299|      0|	  ndata->notify (ndata->data, closure);
  300|      0|	}
  301|  3.78k|      break;
  302|  13.4k|    }
  303|  13.4k|}
gclosure.c:g_type_class_meta_marshal:
  998|  1.26k|{
  999|  1.26k|  GTypeClass *class;
 1000|  1.26k|  gpointer callback;
 1001|       |  /* GType itype = (GType) closure->data; */
 1002|  1.26k|  guint offset = GPOINTER_TO_UINT (marshal_data);
  ------------------
  |  |   99|  1.26k|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 1003|       |  
 1004|  1.26k|  class = G_TYPE_INSTANCE_GET_CLASS (g_value_peek_pointer (param_values + 0), itype, GTypeClass);
  ------------------
  |  |  527|  1.26k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2309|  1.26k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  ------------------
  ------------------
 1005|  1.26k|  callback = G_STRUCT_MEMBER (gpointer, class, offset);
  ------------------
  |  |  862|  1.26k|    (*(member_type*) G_STRUCT_MEMBER_P ((struct_p), (struct_offset)))
  |  |  ------------------
  |  |  |  |  860|  1.26k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
 1006|  1.26k|  if (callback)
  ------------------
  |  Branch (1006:7): [True: 0, False: 1.26k]
  ------------------
 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.26k|}
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.52k|{
 1495|  2.52k|  typedef void (*GMarshalFunc_VOID__PARAM) (gpointer     data1,
 1496|  2.52k|                                            gpointer     arg_1,
 1497|  2.52k|                                            gpointer     data2);
 1498|  2.52k|  GMarshalFunc_VOID__PARAM callback;
 1499|  2.52k|  GCClosure *cc = (GCClosure*) closure;
 1500|  2.52k|  gpointer data1, data2;
 1501|       |
 1502|  2.52k|  g_return_if_fail (n_param_values == 2);
  ------------------
  |  |  630|  2.52k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.52k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.52k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.52k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.52k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.52k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.52k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.52k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.52k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.52k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.52k|   else                                         \
  |  |  |  |  |  | 1021|  2.52k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.52k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.52k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.52k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.52k|      { } \
  |  |  633|  2.52k|    else \
  |  |  634|  2.52k|      { \
  |  |  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.52k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.52k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.52k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1503|       |
 1504|  2.52k|  if (G_CCLOSURE_SWAP_DATA (closure))
  ------------------
  |  |   63|  2.52k|#define	G_CCLOSURE_SWAP_DATA(cclosure)	 (((GClosure*) (cclosure))->derivative_flag)
  |  |  ------------------
  |  |  |  Branch (63:41): [True: 0, False: 2.52k]
  |  |  ------------------
  ------------------
 1505|      0|    {
 1506|      0|      data1 = closure->data;
 1507|      0|      data2 = g_value_peek_pointer (param_values + 0);
 1508|      0|    }
 1509|  2.52k|  else
 1510|  2.52k|    {
 1511|  2.52k|      data1 = g_value_peek_pointer (param_values + 0);
 1512|  2.52k|      data2 = closure->data;
 1513|  2.52k|    }
 1514|  2.52k|  callback = (GMarshalFunc_VOID__PARAM) (marshal_data ? marshal_data : cc->callback);
  ------------------
  |  Branch (1514:42): [True: 0, False: 2.52k]
  ------------------
 1515|       |
 1516|  2.52k|  callback (data1,
 1517|  2.52k|            g_marshal_value_peek_param (param_values + 1),
  ------------------
  |  |   40|  2.52k|#define g_marshal_value_peek_param(v)    g_value_get_param (v)
  ------------------
 1518|  2.52k|            data2);
 1519|  2.52k|}

_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|   348k|{
 1068|   348k|#ifdef HAVE_OPTIONAL_FLAGS
 1069|   348k|  return (object_get_optional_flags (object) & OPTIONAL_FLAG_HAS_SIGNAL_HANDLER) != 0;
  ------------------
  |  |  166|   348k|#define OPTIONAL_FLAG_HAS_SIGNAL_HANDLER 1<<1 /* Set if object ever had a signal handler */
  ------------------
 1070|       |#else
 1071|       |  return TRUE;
 1072|       |#endif
 1073|   348k|}
_g_object_set_has_signal_handler:
 1077|  2.96k|{
 1078|  2.96k|#ifdef HAVE_OPTIONAL_FLAGS
 1079|  2.96k|  object_set_optional_flags (object, OPTIONAL_FLAG_HAS_SIGNAL_HANDLER);
  ------------------
  |  |  166|  2.96k|#define OPTIONAL_FLAG_HAS_SIGNAL_HANDLER 1<<1 /* Set if object ever had a signal handler */
  ------------------
 1080|  2.96k|#endif
 1081|  2.96k|}
g_object_notify:
 1323|  2.74k|{
 1324|  2.74k|  GParamSpec *pspec;
 1325|       |  
 1326|  2.74k|  g_return_if_fail (G_IS_OBJECT (object));
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1327|  2.74k|  g_return_if_fail (property_name != 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, \
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1328|  2.74k|  if (g_atomic_int_get (&object->ref_count) == 0)
  ------------------
  |  |   96|  2.74k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  2.74k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  2.74k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  2.74k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  2.74k|    gint gaig_temp;                                                          \
  |  |   99|  2.74k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 2.74k]
  |  |  ------------------
  |  |  100|  2.74k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  2.74k|    (gint) gaig_temp;                                                        \
  |  |  102|  2.74k|  }))
  ------------------
  |  Branch (1328:7): [True: 0, False: 2.74k]
  ------------------
 1329|      0|    return;
 1330|       |  
 1331|  2.74k|  g_object_ref (object);
  ------------------
  |  |  523|  2.74k|#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|  2.74k|  pspec = g_param_spec_pool_lookup (pspec_pool,
 1337|  2.74k|				    property_name,
 1338|  2.74k|				    G_OBJECT_TYPE (object),
  ------------------
  |  |  100|  2.74k|#define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
  |  |  ------------------
  |  |  |  |  602|  2.74k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|  2.74k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1339|  2.74k|				    TRUE);
  ------------------
  |  |  818|  2.74k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  2.74k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1340|       |
 1341|  2.74k|  if (!pspec)
  ------------------
  |  Branch (1341:7): [True: 0, False: 2.74k]
  ------------------
 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|  2.74k|	       G_STRFUNC,
 1344|  2.74k|	       G_OBJECT_TYPE_NAME (object),
 1345|  2.74k|	       property_name);
 1346|  2.74k|  else
 1347|  2.74k|    g_object_notify_by_spec_internal (object, pspec);
 1348|  2.74k|  g_object_unref (object);
 1349|  2.74k|}
g_object_new:
 1773|  1.02M|{
 1774|  1.02M|  GObject *object;
 1775|  1.02M|  va_list var_args;
 1776|       |  
 1777|       |  /* short circuit for calls supplying no properties */
 1778|  1.02M|  if (!first_property_name)
  ------------------
  |  Branch (1778:7): [True: 1.02M, False: 0]
  ------------------
 1779|  1.02M|    return g_object_new_with_properties (object_type, 0, NULL, NULL);
 1780|       |
 1781|  1.02M|  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.02M|}
g_object_new_with_properties:
 2066|  1.02M|{
 2067|  1.02M|  GObjectClass *class, *unref_class = NULL;
 2068|  1.02M|  GObject *object;
 2069|       |
 2070|  1.02M|  g_return_val_if_fail (G_TYPE_IS_OBJECT (object_type), NULL);
  ------------------
  |  |  643|  1.02M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.02M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.02M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.02M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.02M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.02M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.02M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.02M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.02M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.02M|   else                                         \
  |  |  |  |  |  | 1021|  1.02M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.02M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.02M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.02M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.02M|      { } \
  |  |  646|  1.02M|    else \
  |  |  647|  1.02M|      { \
  |  |  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.02M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.02M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.02M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 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.02M|  class = g_type_class_peek_static (object_type);
 2076|       |
 2077|  1.02M|  if (class == NULL)
  ------------------
  |  Branch (2077:7): [True: 7, False: 1.02M]
  ------------------
 2078|      7|    class = unref_class = g_type_class_ref (object_type);
 2079|       |
 2080|  1.02M|  if (n_properties > 0)
  ------------------
  |  Branch (2080:7): [True: 0, False: 1.02M]
  ------------------
 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.02M|  else
 2108|  1.02M|    object = g_object_new_internal (class, NULL, 0);
 2109|       |
 2110|  1.02M|  if (unref_class != NULL)
  ------------------
  |  Branch (2110:7): [True: 7, False: 1.02M]
  ------------------
 2111|      7|    g_type_class_unref (unref_class);
 2112|       |
 2113|  1.02M|  return object;
 2114|  1.02M|}
g_object_weak_ref:
 2992|   103k|{
 2993|   103k|  WeakRefStack *wstack;
 2994|   103k|  guint i;
 2995|       |  
 2996|   103k|  g_return_if_fail (G_IS_OBJECT (object));
  ------------------
  |  |  630|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   103k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   103k|      { } \
  |  |  633|   103k|    else \
  |  |  634|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2997|   103k|  g_return_if_fail (notify != NULL);
  ------------------
  |  |  630|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   103k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   103k|      { } \
  |  |  633|   103k|    else \
  |  |  634|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2998|   103k|  g_return_if_fail (g_atomic_int_get (&object->ref_count) >= 1);
  ------------------
  |  |  630|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   309k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 103k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   103k|      { } \
  |  |  633|   103k|    else \
  |  |  634|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2999|       |
 3000|   103k|  G_LOCK (weak_refs_mutex);
  ------------------
  |  |  135|   103k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   103k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
 3001|   103k|  wstack = g_datalist_id_remove_no_notify (&object->qdata, quark_weak_refs);
 3002|   103k|  if (wstack)
  ------------------
  |  Branch (3002:7): [True: 86.8k, False: 16.2k]
  ------------------
 3003|  86.8k|    {
 3004|  86.8k|      i = wstack->n_weak_refs++;
 3005|  86.8k|      wstack = g_realloc (wstack, sizeof (*wstack) + sizeof (wstack->weak_refs[0]) * i);
 3006|  86.8k|    }
 3007|  16.2k|  else
 3008|  16.2k|    {
 3009|  16.2k|      wstack = g_renew (WeakRefStack, NULL, 1);
  ------------------
  |  |  321|  16.2k|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|  16.2k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  16.2k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|  16.2k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|  16.2k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|  16.2k|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|  16.2k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 16.2k]
  |  |  |  |  ------------------
  |  |  |  |  254|  16.2k|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|  16.2k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 16.2k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  256|  16.2k|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  16.2k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  16.2k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (256:14): [True: 0, False: 16.2k]
  |  |  |  |  |  Branch (256:26): [True: 16.2k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  257|  16.2k|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|  16.2k|	  else							\
  |  |  |  |  259|  16.2k|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|  16.2k|	  __p;							\
  |  |  |  |  261|  16.2k|	}))
  |  |  ------------------
  ------------------
 3010|  16.2k|      wstack->object = object;
 3011|  16.2k|      wstack->n_weak_refs = 1;
 3012|  16.2k|      i = 0;
 3013|  16.2k|    }
 3014|   103k|  wstack->weak_refs[i].notify = notify;
 3015|   103k|  wstack->weak_refs[i].data = data;
 3016|   103k|  g_datalist_id_set_data_full (&object->qdata, quark_weak_refs, wstack, weak_refs_notify);
 3017|   103k|  G_UNLOCK (weak_refs_mutex);
  ------------------
  |  |  136|   103k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   103k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
 3018|   103k|}
g_object_add_weak_pointer:
 3081|   103k|{
 3082|   103k|  g_return_if_fail (G_IS_OBJECT (object));
  ------------------
  |  |  630|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   103k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   103k|      { } \
  |  |  633|   103k|    else \
  |  |  634|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3083|   103k|  g_return_if_fail (weak_pointer_location != NULL);
  ------------------
  |  |  630|   103k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   103k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   103k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   103k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   103k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   103k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   103k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 103k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   103k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   103k|   else                                         \
  |  |  |  |  |  | 1021|   103k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   103k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   103k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   103k|      { } \
  |  |  633|   103k|    else \
  |  |  634|   103k|      { \
  |  |  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|   103k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   103k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 103k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3084|       |
 3085|   103k|  g_object_weak_ref (object, 
 3086|   103k|                     (GWeakNotify) g_nullify_pointer, 
 3087|   103k|                     weak_pointer_location);
 3088|   103k|}
g_object_ref:
 3384|   933k|{
 3385|   933k|  GObject *object = _object;
 3386|   933k|  gint old_val;
 3387|   933k|  gboolean object_already_finalized;
 3388|       |
 3389|   933k|  g_return_val_if_fail (G_IS_OBJECT (object), NULL);
  ------------------
  |  |  643|   933k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   933k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   933k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   933k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   933k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   933k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   933k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   933k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 933k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   933k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   933k|   else                                         \
  |  |  |  |  |  | 1021|   933k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   933k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   933k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 933k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   933k|      { } \
  |  |  646|   933k|    else \
  |  |  647|   933k|      { \
  |  |  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|   933k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   933k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 933k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3390|       |  
 3391|   933k|  old_val = g_atomic_int_add (&object->ref_count, 1);
  ------------------
  |  |  167|   933k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|   933k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  168|   933k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|   933k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  169|   933k|    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
  |  |  ------------------
  |  |  |  Branch (169:13): [Folded, False: 933k]
  |  |  ------------------
  |  |  170|   933k|    (gint) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST);           \
  |  |  171|   933k|  }))
  ------------------
 3392|   933k|  object_already_finalized = (old_val <= 0);
 3393|   933k|  g_return_val_if_fail (!object_already_finalized, NULL);
  ------------------
  |  |  643|   933k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   933k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   933k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   933k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   933k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   933k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   933k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   933k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 933k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   933k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   933k|   else                                         \
  |  |  |  |  |  | 1021|   933k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   933k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   933k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 933k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   933k|      { } \
  |  |  646|   933k|    else \
  |  |  647|   933k|      { \
  |  |  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|   933k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   933k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 933k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3394|       |
 3395|   933k|  if (old_val == 1 && OBJECT_HAS_TOGGLE_REF (object))
  ------------------
  |  |  138|   529k|    ((g_datalist_get_flags (&(object)->qdata) & OBJECT_HAS_TOGGLE_REF_FLAG) != 0)
  |  |  ------------------
  |  |  |  |  136|   529k|#define OBJECT_HAS_TOGGLE_REF_FLAG 0x1
  |  |  ------------------
  |  |  |  Branch (138:5): [True: 0, False: 529k]
  |  |  ------------------
  ------------------
  |  Branch (3395:7): [True: 529k, False: 403k]
  ------------------
 3396|      0|    toggle_refs_notify (object, FALSE);
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 3397|       |
 3398|   933k|  TRACE (GOBJECT_OBJECT_REF(object,G_TYPE_FROM_INSTANCE(object),old_val));
 3399|       |
 3400|   933k|  return object;
 3401|   933k|}
g_object_unref:
 3417|  1.95M|{
 3418|  1.95M|  GObject *object = _object;
 3419|  1.95M|  gint old_ref;
 3420|       |  
 3421|  1.95M|  g_return_if_fail (G_IS_OBJECT (object));
  ------------------
  |  |  630|  1.95M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.95M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.95M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.95M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.95M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.95M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.95M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.95M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.95M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.95M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.95M|   else                                         \
  |  |  |  |  |  | 1021|  1.95M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.95M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.95M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.95M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.95M|      { } \
  |  |  633|  1.95M|    else \
  |  |  634|  1.95M|      { \
  |  |  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.95M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.95M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.95M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3422|       |  
 3423|       |  /* here we want to atomically do: if (ref_count>1) { ref_count--; return; } */
 3424|  1.95M| retry_atomic_decrement1:
 3425|  1.95M|  old_ref = g_atomic_int_get (&object->ref_count);
  ------------------
  |  |   96|  1.95M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.95M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  1.95M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.95M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  1.95M|    gint gaig_temp;                                                          \
  |  |   99|  1.95M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 1.95M]
  |  |  ------------------
  |  |  100|  1.95M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  1.95M|    (gint) gaig_temp;                                                        \
  |  |  102|  1.95M|  }))
  ------------------
 3426|  1.95M|  if (old_ref > 1)
  ------------------
  |  Branch (3426:7): [True: 933k, False: 1.02M]
  ------------------
 3427|   933k|    {
 3428|       |      /* valid if last 2 refs are owned by this call to unref and the toggle_ref */
 3429|   933k|      gboolean has_toggle_ref = OBJECT_HAS_TOGGLE_REF (object);
  ------------------
  |  |  138|   933k|    ((g_datalist_get_flags (&(object)->qdata) & OBJECT_HAS_TOGGLE_REF_FLAG) != 0)
  |  |  ------------------
  |  |  |  |  136|   933k|#define OBJECT_HAS_TOGGLE_REF_FLAG 0x1
  |  |  ------------------
  ------------------
 3430|       |
 3431|   933k|      if (!g_atomic_int_compare_and_exchange ((int *)&object->ref_count, old_ref, old_ref - 1))
  ------------------
  |  |  160|   933k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|   933k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  161|   933k|    gint gaicae_oldval = (oldval);                                           \
  |  |  162|   933k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|   933k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  163|   933k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  ------------------
  |  |  |  Branch (163:13): [Folded, False: 933k]
  |  |  ------------------
  |  |  164|   933k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|   933k|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|   933k|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|   933k|#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: 933k, False: 0]
  |  |  ------------------
  |  |  165|   933k|  }))
  ------------------
  |  Branch (3431:11): [True: 0, False: 933k]
  ------------------
 3432|      0|	goto retry_atomic_decrement1;
 3433|       |
 3434|   933k|      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|   933k|      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: 529k, False: 403k]
  |  Branch (3437:27): [True: 0, False: 529k]
  ------------------
 3438|      0|	toggle_refs_notify (object, TRUE);
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3439|   933k|    }
 3440|  1.02M|  else
 3441|  1.02M|    {
 3442|  1.02M|      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.02M|      weak_locations = g_datalist_id_get_data (&object->qdata, quark_weak_locations);
 3454|       |
 3455|  1.02M|      if (weak_locations != NULL)
  ------------------
  |  Branch (3455:11): [True: 0, False: 1.02M]
  ------------------
 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.02M|      TRACE (GOBJECT_OBJECT_DISPOSE(object,G_TYPE_FROM_INSTANCE(object), 1));
 3486|  1.02M|      G_OBJECT_GET_CLASS (object)->dispose (object);
  ------------------
  |  |   91|  1.02M|#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  527|  1.02M|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|  1.02M|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3487|  1.02M|      TRACE (GOBJECT_OBJECT_DISPOSE_END(object,G_TYPE_FROM_INSTANCE(object), 1));
 3488|       |
 3489|       |      /* may have been re-referenced meanwhile */
 3490|  1.02M|    retry_atomic_decrement2:
 3491|  1.02M|      old_ref = g_atomic_int_get ((int *)&object->ref_count);
  ------------------
  |  |   96|  1.02M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  1.02M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.02M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  1.02M|    gint gaig_temp;                                                          \
  |  |   99|  1.02M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 1.02M]
  |  |  ------------------
  |  |  100|  1.02M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  1.02M|    (gint) gaig_temp;                                                        \
  |  |  102|  1.02M|  }))
  ------------------
 3492|  1.02M|      if (old_ref > 1)
  ------------------
  |  Branch (3492:11): [True: 0, False: 1.02M]
  ------------------
 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.02M|      g_datalist_id_set_data (&object->qdata, quark_closure_array, NULL);
  ------------------
  |  |   99|  1.02M|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
 3511|  1.02M|      g_signal_handlers_destroy (object);
 3512|  1.02M|      g_datalist_id_set_data (&object->qdata, quark_weak_refs, NULL);
  ------------------
  |  |   99|  1.02M|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
 3513|       |      
 3514|       |      /* decrement the last reference */
 3515|  1.02M|      old_ref = g_atomic_int_add (&object->ref_count, -1);
  ------------------
  |  |  167|  1.02M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  168|  1.02M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.02M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  169|  1.02M|    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
  |  |  ------------------
  |  |  |  Branch (169:13): [Folded, False: 1.02M]
  |  |  ------------------
  |  |  170|  1.02M|    (gint) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST);           \
  |  |  171|  1.02M|  }))
  ------------------
 3516|  1.02M|      g_return_if_fail (old_ref > 0);
  ------------------
  |  |  630|  1.02M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.02M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.02M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.02M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.02M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.02M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.02M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.02M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.02M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.02M|   else                                         \
  |  |  |  |  |  | 1021|  1.02M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.02M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.02M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.02M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.02M|      { } \
  |  |  633|  1.02M|    else \
  |  |  634|  1.02M|      { \
  |  |  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.02M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.02M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.02M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3517|       |
 3518|  1.02M|      TRACE (GOBJECT_OBJECT_UNREF(object,G_TYPE_FROM_INSTANCE(object),old_ref));
 3519|       |
 3520|       |      /* may have been re-referenced meanwhile */
 3521|  1.02M|      if (G_LIKELY (old_ref == 1))
  ------------------
  |  | 1024|  1.02M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  1.02M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.02M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.02M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 1.02M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.02M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.02M|   else                                         \
  |  |  |  | 1021|  1.02M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.02M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.02M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 1.02M, False: 0]
  |  |  ------------------
  ------------------
 3522|  1.02M|	{
 3523|  1.02M|	  TRACE (GOBJECT_OBJECT_FINALIZE(object,G_TYPE_FROM_INSTANCE(object)));
 3524|  1.02M|          G_OBJECT_GET_CLASS (object)->finalize (object);
  ------------------
  |  |   91|  1.02M|#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  527|  1.02M|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|  1.02M|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3525|       |
 3526|  1.02M|	  TRACE (GOBJECT_OBJECT_FINALIZE_END(object,G_TYPE_FROM_INSTANCE(object)));
 3527|       |
 3528|  1.02M|          GOBJECT_IF_DEBUG (OBJECTS,
  ------------------
  |  |   37|  1.02M|#define GOBJECT_IF_DEBUG(debug_type, code_block) \
  |  |  ------------------
  |  |  |  |  874|  1.02M|#define G_STMT_START  do
  |  |  ------------------
  |  |   38|  1.02M|G_STMT_START { \
  |  |   39|  1.02M|    if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type) \
  |  |  ------------------
  |  |  |  Branch (39:9): [True: 0, False: 1.02M]
  |  |  ------------------
  |  |   40|  1.02M|      { code_block; } \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   41|  1.02M|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.02M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.02M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3529|  1.02M|	    {
 3530|  1.02M|              gboolean was_present;
 3531|       |
 3532|       |              /* catch objects not chaining finalize handlers */
 3533|  1.02M|              G_LOCK (debug_objects);
 3534|  1.02M|              was_present = g_hash_table_remove (debug_objects_ht, object);
 3535|  1.02M|              G_UNLOCK (debug_objects);
 3536|       |
 3537|  1.02M|              if (was_present)
 3538|  1.02M|                g_critical ("Object %p of type %s not finalized correctly.",
 3539|  1.02M|                            object, G_OBJECT_TYPE_NAME (object));
 3540|  1.02M|	    });
 3541|  1.02M|          g_type_free_instance ((GTypeInstance*) object);
 3542|  1.02M|	}
 3543|  1.02M|    }
 3544|  1.95M|}
g_value_get_object:
 4164|   345k|{
 4165|   345k|  g_return_val_if_fail (G_VALUE_HOLDS_OBJECT (value), NULL);
  ------------------
  |  |  643|   345k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   345k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   345k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   345k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   345k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   345k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   345k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.72M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 345k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 345k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 345k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   345k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   345k|   else                                         \
  |  |  |  |  |  | 1021|   345k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   345k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   345k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 345k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   345k|      { } \
  |  |  646|   345k|    else \
  |  |  647|   345k|      { \
  |  |  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|   345k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   345k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 345k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4166|       |  
 4167|   345k|  return value->data[0].v_pointer;
 4168|   345k|}
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|  1.02M|{
 2340|       |  /* empty default impl to allow unconditional upchaining */
 2341|  1.02M|}
gobject.c:g_object_real_dispose:
 1171|  1.02M|{
 1172|  1.02M|  g_signal_handlers_destroy (object);
 1173|  1.02M|  g_datalist_id_set_data (&object->qdata, quark_closure_array, NULL);
  ------------------
  |  |   99|  1.02M|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
 1174|       |  g_datalist_id_set_data (&object->qdata, quark_weak_refs, NULL);
  ------------------
  |  |   99|  1.02M|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
 1175|  1.02M|}
gobject.c:g_object_finalize:
 1179|  1.02M|{
 1180|  1.02M|  if (object_in_construction (object))
  ------------------
  |  Branch (1180:7): [True: 0, False: 1.02M]
  ------------------
 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.02M|  g_datalist_clear (&object->qdata);
 1187|       |  
 1188|  1.02M|  GOBJECT_IF_DEBUG (OBJECTS,
  ------------------
  |  |   37|  1.02M|#define GOBJECT_IF_DEBUG(debug_type, code_block) \
  |  |  ------------------
  |  |  |  |  874|  1.02M|#define G_STMT_START  do
  |  |  ------------------
  |  |   38|  1.02M|G_STMT_START { \
  |  |   39|  1.02M|    if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type) \
  |  |  ------------------
  |  |  |  Branch (39:9): [True: 0, False: 1.02M]
  |  |  ------------------
  |  |   40|  1.02M|      { code_block; } \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 0]
  |  |  |  Branch (40:9): [True: 0, False: 0]
  |  |  |  Branch (40:9): [Folded, False: 0]
  |  |  ------------------
  |  |   41|  1.02M|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.02M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.02M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1189|  1.02M|    {
 1190|  1.02M|      G_LOCK (debug_objects);
 1191|  1.02M|      g_assert (g_hash_table_contains (debug_objects_ht, object));
 1192|  1.02M|      g_hash_table_remove (debug_objects_ht, object);
 1193|  1.02M|      debug_objects_count--;
 1194|  1.02M|      G_UNLOCK (debug_objects);
 1195|  1.02M|    });
 1196|  1.02M|}
gobject.c:object_in_construction:
 1085|  1.02M|{
 1086|  1.02M|#ifdef HAVE_OPTIONAL_FLAGS
 1087|  1.02M|  return (object_get_optional_flags (object) & OPTIONAL_FLAG_IN_CONSTRUCTION) != 0;
  ------------------
  |  |  165|  1.02M|#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.02M|}
gobject.c:g_object_dispatch_properties_changed:
 1202|   344k|{
 1203|   344k|  guint i;
 1204|       |
 1205|   692k|  for (i = 0; i < n_pspecs; i++)
  ------------------
  |  Branch (1205:15): [True: 348k, False: 344k]
  ------------------
 1206|   348k|    g_signal_emit (object, gobject_signals[NOTIFY], g_param_spec_get_name_quark (pspecs[i]), pspecs[i]);
 1207|   344k|}
gobject.c:object_interface_check_properties:
 1583|      9|{
 1584|      9|  GTypeInterface *iface_class = g_iface;
 1585|      9|  GObjectClass *class;
 1586|      9|  GType iface_type = iface_class->g_type;
 1587|      9|  GParamSpec **pspecs;
 1588|      9|  guint n;
 1589|       |
 1590|      9|  class = g_type_class_ref (iface_class->g_instance_type);
 1591|       |
 1592|      9|  if (class == NULL)
  ------------------
  |  Branch (1592:7): [True: 0, False: 9]
  ------------------
 1593|      0|    return;
 1594|       |
 1595|      9|  if (!G_IS_OBJECT_CLASS (class))
  ------------------
  |  |   82|      9|#define G_IS_OBJECT_CLASS(class)    (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_OBJECT))
  |  |  ------------------
  |  |  |  |  566|      9|#define G_TYPE_CHECK_CLASS_TYPE(g_class, g_type)                (_G_TYPE_CCT ((g_class), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2323|      9|#  define _G_TYPE_CCT(cp, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      9|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2324|      9|  GTypeClass *__class = (GTypeClass*) cp; GType __t = gt; gboolean __r; \
  |  |  |  |  |  | 2325|      9|  if (!__class) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2325:7): [True: 0, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2326|      9|    __r = FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2327|      9|  else if (__class->g_type == __t) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2327:12): [True: 0, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2328|      9|    __r = TRUE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2329|      9|  else \
  |  |  |  |  |  | 2330|      9|    __r = g_type_check_class_is_a (__class, __t); \
  |  |  |  |  |  | 2331|      9|  __r; \
  |  |  |  |  |  | 2332|      9|}))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1595:7): [True: 0, False: 9]
  ------------------
 1596|      0|    goto out;
 1597|       |
 1598|      9|  pspecs = g_param_spec_pool_list (pspec_pool, iface_type, &n);
 1599|       |
 1600|      9|  while (n--)
  ------------------
  |  Branch (1600:10): [True: 0, False: 9]
  ------------------
 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|      9|  g_free (pspecs);
 1727|       |
 1728|      9| out:
 1729|      9|  g_type_class_unref (class);
 1730|      9|}
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.37M|{
 1037|  1.37M|#ifdef HAVE_OPTIONAL_FLAGS
 1038|  1.37M|  GObjectReal *real = (GObjectReal *)object;
 1039|  1.37M|  return (guint)g_atomic_int_get (&real->optional_flags);
  ------------------
  |  |   96|  1.37M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.37M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  1.37M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.37M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  1.37M|    gint gaig_temp;                                                          \
  |  |   99|  1.37M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 1.37M]
  |  |  ------------------
  |  |  100|  1.37M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  1.37M|    (gint) gaig_temp;                                                        \
  |  |  102|  1.37M|  }))
  ------------------
 1040|       |#else
 1041|       |  return 0;
 1042|       |#endif
 1043|  1.37M|}
gobject.c:object_set_optional_flags:
 1048|  2.96k|{
 1049|  2.96k|#ifdef HAVE_OPTIONAL_FLAGS
 1050|  2.96k|  GObjectReal *real = (GObjectReal *)object;
 1051|  2.96k|  g_atomic_int_or (&real->optional_flags, flags);
  ------------------
  |  |  179|  2.96k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  180|  2.96k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  2.96k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  181|  2.96k|    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
  |  |  ------------------
  |  |  |  Branch (181:13): [Folded, False: 2.96k]
  |  |  ------------------
  |  |  182|  2.96k|    (guint) __atomic_fetch_or ((atomic), (val), __ATOMIC_SEQ_CST);           \
  |  |  183|  2.96k|  }))
  ------------------
 1052|  2.96k|#endif
 1053|  2.96k|}
gobject.c:g_object_init:
 1116|  1.02M|{
 1117|  1.02M|  object->ref_count = 1;
 1118|  1.02M|  object->qdata = NULL;
 1119|       |
 1120|  1.02M|  if (CLASS_HAS_PROPS (class))
  ------------------
  |  |  143|  1.02M|    ((class)->flags & CLASS_HAS_PROPS_FLAG)
  |  |  ------------------
  |  |  |  |  141|  1.02M|#define CLASS_HAS_PROPS_FLAG 0x1
  |  |  ------------------
  |  |  |  Branch (143:5): [True: 343k, False: 683k]
  |  |  ------------------
  ------------------
 1121|   343k|    {
 1122|       |      /* freeze object's notification queue, g_object_newv() preserves pairedness */
 1123|   343k|      g_object_notify_queue_freeze (object, FALSE);
  ------------------
  |  |  814|   343k|#define	FALSE	(0)
  ------------------
 1124|   343k|    }
 1125|       |
 1126|  1.02M|  if (CLASS_HAS_CUSTOM_CONSTRUCTOR (class))
  ------------------
  |  |  145|  1.02M|    ((class)->constructor != g_object_constructor)
  |  |  ------------------
  |  |  |  Branch (145:5): [True: 0, False: 1.02M]
  |  |  ------------------
  ------------------
 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.02M|  GOBJECT_IF_DEBUG (OBJECTS,
  ------------------
  |  |   37|  1.02M|#define GOBJECT_IF_DEBUG(debug_type, code_block) \
  |  |  ------------------
  |  |  |  |  874|  1.02M|#define G_STMT_START  do
  |  |  ------------------
  |  |   38|  1.02M|G_STMT_START { \
  |  |   39|  1.02M|    if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type) \
  |  |  ------------------
  |  |  |  Branch (39:9): [True: 0, False: 1.02M]
  |  |  ------------------
  |  |   40|  1.02M|      { code_block; } \
  |  |   41|  1.02M|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.02M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.02M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1133|  1.02M|    {
 1134|  1.02M|      G_LOCK (debug_objects);
 1135|  1.02M|      debug_objects_count++;
 1136|  1.02M|      g_hash_table_add (debug_objects_ht, object);
 1137|  1.02M|      G_UNLOCK (debug_objects);
 1138|  1.02M|    });
 1139|  1.02M|}
gobject.c:g_object_notify_queue_freeze:
  274|   345k|{
  275|   345k|  GObjectNotifyQueue *nqueue;
  276|       |
  277|   345k|  G_LOCK(notify_lock);
  ------------------
  |  |  135|   345k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   345k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  278|   345k|  nqueue = g_datalist_id_get_data (&object->qdata, quark_notify_queue);
  279|   345k|  if (!nqueue)
  ------------------
  |  Branch (279:7): [True: 344k, False: 1.48k]
  ------------------
  280|   344k|    {
  281|   344k|      if (conditional)
  ------------------
  |  Branch (281:11): [True: 1.26k, False: 343k]
  ------------------
  282|  1.26k|        {
  283|  1.26k|          G_UNLOCK(notify_lock);
  ------------------
  |  |  136|  1.26k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  1.26k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  284|  1.26k|          return NULL;
  285|  1.26k|        }
  286|       |
  287|   343k|      nqueue = g_slice_new0 (GObjectNotifyQueue);
  ------------------
  |  |   52|   343k|  (type *) (G_GNUC_EXTENSION ({                                 \
  |  |  ------------------
  |  |  |  |   54|   343k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   53|   343k|    gsize __s = sizeof (type);                                  \
  |  |   54|   343k|    gpointer __p;                                               \
  |  |   55|   343k|    __p = g_slice_alloc (__s);                                  \
  |  |   56|   343k|    memset (__p, 0, __s);                                       \
  |  |   57|   343k|    __p;                                                        \
  |  |   58|   343k|  }))
  ------------------
  288|   343k|      g_datalist_id_set_data_full (&object->qdata, quark_notify_queue,
  289|   343k|                                   nqueue, g_object_notify_queue_free);
  290|   343k|    }
  291|       |
  292|   344k|  if (nqueue->freeze_count >= 65535)
  ------------------
  |  Branch (292:7): [True: 0, False: 344k]
  ------------------
  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|   344k|               " called g_object_freeze_notify() too often."
  295|   344k|               " Forgot to call g_object_thaw_notify() or infinite loop",
  296|   344k|               G_OBJECT_TYPE_NAME (object), object);
  297|   344k|  else
  298|   344k|    nqueue->freeze_count++;
  299|   344k|  G_UNLOCK(notify_lock);
  ------------------
  |  |  136|   344k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   344k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  300|       |
  301|   344k|  return nqueue;
  302|   345k|}
gobject.c:g_object_notify_queue_free:
  264|   343k|{
  265|   343k|  GObjectNotifyQueue *nqueue = data;
  266|       |
  267|   343k|  g_slist_free (nqueue->pspecs);
  268|   343k|  g_slice_free (GObjectNotifyQueue, nqueue);
  ------------------
  |  |   79|   343k|#define g_slice_free(type, mem)                                 \
  |  |  ------------------
  |  |  |  |  874|   343k|#define G_STMT_START  do
  |  |  ------------------
  |  |   80|   343k|G_STMT_START {                                                  \
  |  |   81|   343k|  if (1) g_slice_free1 (sizeof (type), (mem));			\
  |  |  ------------------
  |  |  |  Branch (81:7): [True: 343k, Folded]
  |  |  ------------------
  |  |   82|   343k|  else   (void) ((type*) 0 == (mem)); 				\
  |  |   83|   343k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   343k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 343k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  269|   343k|}
gobject.c:g_object_notify_by_spec_internal:
 1279|  2.74k|{
 1280|  2.74k|  GParamSpec *notify_pspec;
 1281|       |
 1282|  2.74k|  notify_pspec = get_notify_pspec (pspec);
 1283|       |
 1284|  2.74k|  if (notify_pspec != NULL)
  ------------------
  |  Branch (1284:7): [True: 2.74k, False: 0]
  ------------------
 1285|  2.74k|    {
 1286|  2.74k|      GObjectNotifyQueue *nqueue;
 1287|       |
 1288|       |      /* conditional freeze: only increase freeze count if already frozen */
 1289|  2.74k|      nqueue = g_object_notify_queue_freeze (object, TRUE);
  ------------------
  |  |  818|  2.74k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  2.74k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1290|       |
 1291|  2.74k|      if (nqueue != NULL)
  ------------------
  |  Branch (1291:11): [True: 1.48k, False: 1.26k]
  ------------------
 1292|  1.48k|        {
 1293|       |          /* we're frozen, so add to the queue and release our freeze */
 1294|  1.48k|          g_object_notify_queue_add (object, nqueue, notify_pspec);
 1295|  1.48k|          g_object_notify_queue_thaw (object, nqueue);
 1296|  1.48k|        }
 1297|  1.26k|      else
 1298|       |        /* not frozen, so just dispatch the notification directly */
 1299|  1.26k|        G_OBJECT_GET_CLASS (object)
  ------------------
  |  |   91|  1.26k|#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  527|  1.26k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|  1.26k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1300|  1.26k|          ->dispatch_properties_changed (object, 1, &notify_pspec);
 1301|  2.74k|    }
 1302|  2.74k|}
gobject.c:get_notify_pspec:
 1260|   348k|{
 1261|   348k|  GParamSpec *redirected;
 1262|       |
 1263|       |  /* we don't notify on non-READABLE parameters */
 1264|   348k|  if (~pspec->flags & G_PARAM_READABLE)
  ------------------
  |  Branch (1264:7): [True: 0, False: 348k]
  ------------------
 1265|      0|    return NULL;
 1266|       |
 1267|       |  /* if the paramspec is redirected, notify on the target */
 1268|   348k|  redirected = g_param_spec_get_redirect_target (pspec);
 1269|   348k|  if (redirected != NULL)
  ------------------
  |  Branch (1269:7): [True: 0, False: 348k]
  ------------------
 1270|      0|    return redirected;
 1271|       |
 1272|       |  /* else, notify normally */
 1273|   348k|  return pspec;
 1274|   348k|}
gobject.c:g_object_notify_queue_add:
  349|   347k|{
  350|   347k|  G_LOCK(notify_lock);
  ------------------
  |  |  135|   347k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   347k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  351|       |
  352|   347k|  g_assert (nqueue->n_pspecs < 65535);
  ------------------
  |  |  231|   347k|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   347k|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|   347k|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|   347k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   347k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   347k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   347k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   347k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 347k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   347k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   347k|   else                                         \
  |  |  |  |  |  | 1021|   347k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   347k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   347k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 347k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|   347k|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|   347k|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   347k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 347k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  353|       |
  354|   347k|  if (g_slist_find (nqueue->pspecs, pspec) == NULL)
  ------------------
  |  Branch (354:7): [True: 346k, False: 740]
  ------------------
  355|   346k|    {
  356|   346k|      nqueue->pspecs = g_slist_prepend (nqueue->pspecs, pspec);
  357|   346k|      nqueue->n_pspecs++;
  358|   346k|    }
  359|       |
  360|   347k|  G_UNLOCK(notify_lock);
  ------------------
  |  |  136|   347k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   347k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  361|   347k|}
gobject.c:g_object_notify_queue_thaw:
  307|   344k|{
  308|   344k|  GParamSpec *pspecs_mem[16], **pspecs, **free_me = NULL;
  309|   344k|  GSList *slist;
  310|   344k|  guint n_pspecs = 0;
  311|       |
  312|   344k|  g_return_if_fail (g_atomic_int_get(&object->ref_count) > 0);
  ------------------
  |  |  630|   344k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   344k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   344k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   344k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   344k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   344k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   344k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.03M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 344k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 344k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   344k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   344k|   else                                         \
  |  |  |  |  |  | 1021|   344k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   344k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   344k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 344k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   344k|      { } \
  |  |  633|   344k|    else \
  |  |  634|   344k|      { \
  |  |  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|   344k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   344k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 344k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  313|       |
  314|   344k|  G_LOCK(notify_lock);
  ------------------
  |  |  135|   344k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   344k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  315|       |
  316|       |  /* Just make sure we never get into some nasty race condition */
  317|   344k|  if (G_UNLIKELY(nqueue->freeze_count == 0)) {
  ------------------
  |  | 1025|   344k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   344k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   344k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   344k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   344k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 344k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   344k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   344k|   else                                         \
  |  |  |  | 1021|   344k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   344k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   344k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 344k]
  |  |  ------------------
  ------------------
  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|   344k|  nqueue->freeze_count--;
  325|   344k|  if (nqueue->freeze_count) {
  ------------------
  |  Branch (325:7): [True: 1.48k, False: 343k]
  ------------------
  326|  1.48k|    G_UNLOCK(notify_lock);
  ------------------
  |  |  136|  1.48k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  1.48k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  327|  1.48k|    return;
  328|  1.48k|  }
  329|       |
  330|   343k|  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: 343k]
  ------------------
  331|       |
  332|   690k|  for (slist = nqueue->pspecs; slist; slist = slist->next)
  ------------------
  |  Branch (332:32): [True: 346k, False: 343k]
  ------------------
  333|   346k|    {
  334|   346k|      pspecs[n_pspecs++] = slist->data;
  335|   346k|    }
  336|   343k|  g_datalist_id_set_data (&object->qdata, quark_notify_queue, NULL);
  ------------------
  |  |   99|   343k|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
  337|       |
  338|   343k|  G_UNLOCK(notify_lock);
  ------------------
  |  |  136|   343k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   343k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  339|       |
  340|   343k|  if (n_pspecs)
  ------------------
  |  Branch (340:7): [True: 343k, False: 0]
  ------------------
  341|   343k|    G_OBJECT_GET_CLASS (object)->dispatch_properties_changed (object, n_pspecs, pspecs);
  ------------------
  |  |   91|   343k|#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  527|   343k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|   343k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  342|   343k|  g_free (free_me);
  343|   343k|}
gobject.c:g_object_new_internal:
 1932|  1.02M|{
 1933|  1.02M|  GObjectNotifyQueue *nqueue = NULL;
 1934|  1.02M|  GObject *object;
 1935|       |
 1936|  1.02M|  if G_UNLIKELY (CLASS_HAS_CUSTOM_CONSTRUCTOR (class))
  ------------------
  |  | 1025|  1.02M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  1.02M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.02M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.02M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.02M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.02M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.02M|   else                                         \
  |  |  |  | 1021|  1.02M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.02M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.02M|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 1.02M]
  |  |  ------------------
  ------------------
 1937|      0|    return g_object_new_with_custom_constructor (class, params, n_params);
 1938|       |
 1939|  1.02M|  object = (GObject *) g_type_create_instance (class->g_type_class.g_type);
 1940|       |
 1941|  1.02M|  if (CLASS_HAS_PROPS (class))
  ------------------
  |  |  143|  1.02M|    ((class)->flags & CLASS_HAS_PROPS_FLAG)
  |  |  ------------------
  |  |  |  |  141|  1.02M|#define CLASS_HAS_PROPS_FLAG 0x1
  |  |  ------------------
  |  |  |  Branch (143:5): [True: 343k, False: 683k]
  |  |  ------------------
  ------------------
 1942|   343k|    {
 1943|   343k|      GSList *node;
 1944|       |
 1945|       |      /* This will have been setup in g_object_init() */
 1946|   343k|      nqueue = g_datalist_id_get_data (&object->qdata, quark_notify_queue);
 1947|   343k|      g_assert (nqueue != NULL);
  ------------------
  |  |  231|   343k|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   343k|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|   343k|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|   343k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   343k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   343k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   343k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   343k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 343k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   343k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   343k|   else                                         \
  |  |  |  |  |  | 1021|   343k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   343k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   343k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 343k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|   343k|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|   343k|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   343k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 343k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 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|   689k|      for (node = class->construct_properties; node; node = node->next)
  ------------------
  |  Branch (1953:48): [True: 346k, False: 343k]
  ------------------
 1954|   346k|        {
 1955|   346k|          const GValue *value;
 1956|   346k|          GParamSpec *pspec;
 1957|   346k|          guint j;
 1958|       |
 1959|   346k|          pspec = node->data;
 1960|   346k|          value = NULL; /* to silence gcc... */
 1961|       |
 1962|   346k|          for (j = 0; j < n_params; j++)
  ------------------
  |  Branch (1962:23): [True: 0, False: 346k]
  ------------------
 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|   346k|          if (value == NULL)
  ------------------
  |  Branch (1970:15): [True: 346k, False: 0]
  ------------------
 1971|   346k|            value = g_param_spec_get_default_value (pspec);
 1972|       |
 1973|   346k|          object_set_property (object, pspec, value, nqueue);
 1974|   346k|        }
 1975|   343k|    }
 1976|       |
 1977|       |  /* run 'constructed' handler if there is a custom one */
 1978|  1.02M|  if (CLASS_HAS_CUSTOM_CONSTRUCTED (class))
  ------------------
  |  |  147|  1.02M|    ((class)->constructed != g_object_constructed)
  |  |  ------------------
  |  |  |  Branch (147:5): [True: 1.02M, False: 0]
  |  |  ------------------
  ------------------
 1979|  1.02M|    class->constructed (object);
 1980|       |
 1981|  1.02M|  if (nqueue)
  ------------------
  |  Branch (1981:7): [True: 343k, False: 683k]
  ------------------
 1982|   343k|    {
 1983|   343k|      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|   343k|      for (i = 0; i < n_params; i++)
  ------------------
  |  Branch (1989:19): [True: 0, False: 343k]
  ------------------
 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|   343k|      g_object_notify_queue_thaw (object, nqueue);
 1997|   343k|    }
 1998|       |
 1999|  1.02M|  return object;
 2000|  1.02M|}
gobject.c:object_set_property:
 1528|   346k|{
 1529|   346k|  GValue tmp_value = G_VALUE_INIT;
  ------------------
  |  |  202|   346k|#define G_VALUE_INIT  { 0, { { 0 } } }
  ------------------
 1530|   346k|  GObjectClass *class = g_type_class_peek (pspec->owner_type);
 1531|   346k|  guint param_id = PARAM_SPEC_PARAM_ID (pspec);
  ------------------
  |  |  133|   346k|#define PARAM_SPEC_PARAM_ID(pspec)		((pspec)->param_id)
  ------------------
 1532|   346k|  GParamSpec *redirect;
 1533|       |
 1534|   346k|  if (class == NULL)
  ------------------
  |  Branch (1534:7): [True: 0, False: 346k]
  ------------------
 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|   346k|  redirect = g_param_spec_get_redirect_target (pspec);
 1542|   346k|  if (redirect)
  ------------------
  |  Branch (1542:7): [True: 0, False: 346k]
  ------------------
 1543|      0|    pspec = redirect;
 1544|       |
 1545|       |  /* provide a copy to work from, convert (if necessary) and validate */
 1546|   346k|  g_value_init (&tmp_value, pspec->value_type);
 1547|   346k|  if (!g_value_transform (value, &tmp_value))
  ------------------
  |  Branch (1547:7): [True: 0, False: 346k]
  ------------------
 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|   346k|	       pspec->name,
 1550|   346k|	       g_type_name (pspec->value_type),
 1551|   346k|	       G_VALUE_TYPE_NAME (value));
 1552|   346k|  else if (g_param_value_validate (pspec, &tmp_value) && !(pspec->flags & G_PARAM_LAX_VALIDATION))
  ------------------
  |  Branch (1552:12): [True: 0, False: 346k]
  |  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|   346k|  else
 1564|   346k|    {
 1565|   346k|      class->set_property (object, param_id, &tmp_value, pspec);
 1566|       |
 1567|   346k|      if (~pspec->flags & G_PARAM_EXPLICIT_NOTIFY)
  ------------------
  |  Branch (1567:11): [True: 346k, False: 0]
  ------------------
 1568|   346k|        {
 1569|   346k|          GParamSpec *notify_pspec;
 1570|       |
 1571|   346k|          notify_pspec = get_notify_pspec (pspec);
 1572|       |
 1573|   346k|          if (notify_pspec != NULL)
  ------------------
  |  Branch (1573:15): [True: 346k, False: 0]
  ------------------
 1574|   346k|            g_object_notify_queue_add (object, nqueue, notify_pspec);
 1575|   346k|        }
 1576|   346k|    }
 1577|   346k|  g_value_unset (&tmp_value);
 1578|   346k|}
gobject.c:weak_refs_notify:
 2962|  16.2k|{
 2963|  16.2k|  WeakRefStack *wstack = data;
 2964|  16.2k|  guint i;
 2965|       |
 2966|   119k|  for (i = 0; i < wstack->n_weak_refs; i++)
  ------------------
  |  Branch (2966:15): [True: 103k, False: 16.2k]
  ------------------
 2967|   103k|    wstack->weak_refs[i].notify (wstack->weak_refs[i].data, wstack->object);
 2968|  16.2k|  g_free (wstack);
 2969|  16.2k|}
gobject.c:g_value_object_init:
 3972|   345k|{
 3973|       |  value->data[0].v_pointer = NULL;
 3974|   345k|}
gobject.c:g_value_object_free_value:
 3978|   692k|{
 3979|   692k|  if (value->data[0].v_pointer)
  ------------------
  |  Branch (3979:7): [True: 1.26k, False: 690k]
  ------------------
 3980|  1.26k|    g_object_unref (value->data[0].v_pointer);
 3981|   692k|}
gobject.c:g_value_object_copy_value:
 3986|   345k|{
 3987|   345k|  if (src_value->data[0].v_pointer)
  ------------------
  |  Branch (3987:7): [True: 0, False: 345k]
  ------------------
 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|   345k|  else
 3990|   345k|    dest_value->data[0].v_pointer = NULL;
 3991|   345k|}
gobject.c:g_value_object_peek_pointer:
 4005|  3.78k|{
 4006|  3.78k|  return value->data[0].v_pointer;
 4007|  3.78k|}

_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.29k|{
  215|  1.29k|  g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), NULL);
  ------------------
  |  |  643|  1.29k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.29k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.29k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.29k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.29k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.29k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.29k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.29k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.29k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.29k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.29k|   else                                         \
  |  |  |  |  |  | 1021|  1.29k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.29k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.29k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.29k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.29k|      { } \
  |  |  646|  1.29k|    else \
  |  |  647|  1.29k|      { \
  |  |  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.29k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.29k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.29k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  216|       |
  217|  1.29k|  g_atomic_int_inc ((int *)&pspec->ref_count);
  ------------------
  |  |  148|  1.29k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.29k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|  1.29k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.29k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|  1.29k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 1.29k]
  |  |  ------------------
  |  |  151|  1.29k|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|  1.29k|  }))
  ------------------
  218|       |
  219|  1.29k|  return pspec;
  220|  1.29k|}
g_param_spec_unref:
  230|  1.26k|{
  231|  1.26k|  gboolean is_zero;
  232|       |
  233|  1.26k|  g_return_if_fail (G_IS_PARAM_SPEC (pspec));
  ------------------
  |  |  630|  1.26k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.26k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.26k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.26k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.26k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.26k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.26k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.26k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.26k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.26k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.26k|   else                                         \
  |  |  |  |  |  | 1021|  1.26k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.26k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.26k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.26k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.26k|      { } \
  |  |  633|  1.26k|    else \
  |  |  634|  1.26k|      { \
  |  |  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.26k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.26k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.26k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  234|       |
  235|  1.26k|  is_zero = g_atomic_int_dec_and_test ((int *)&pspec->ref_count);
  ------------------
  |  |  154|  1.26k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.26k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  155|  1.26k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.26k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  156|  1.26k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (156:13): [Folded, False: 1.26k]
  |  |  ------------------
  |  |  157|  1.26k|    __atomic_fetch_sub ((atomic), 1, __ATOMIC_SEQ_CST) == 1;                 \
  |  |  158|  1.26k|  }))
  ------------------
  236|       |
  237|  1.26k|  if (G_UNLIKELY (is_zero))
  ------------------
  |  | 1025|  1.26k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  1.26k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.26k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.26k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.26k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.26k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.26k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.26k|   else                                         \
  |  |  |  | 1021|  1.26k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.26k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.26k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 1.26k]
  |  |  ------------------
  ------------------
  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.26k|}
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|   695k|{
  610|   695k|  GTypeInstance *inst = (GTypeInstance *)pspec;
  611|       |
  612|   695k|  if (inst && inst->g_class && inst->g_class->g_type == G_TYPE_PARAM_OVERRIDE)
  ------------------
  |  |  507|   695k|#define	G_TYPE_PARAM_OVERRIDE		   (g_param_spec_types[20])
  ------------------
  |  Branch (612:7): [True: 695k, False: 0]
  |  Branch (612:15): [True: 695k, False: 0]
  |  Branch (612:32): [True: 0, False: 695k]
  ------------------
  613|      0|    return ((GParamSpecOverride*)pspec)->overridden;
  614|   695k|  else
  615|   695k|    return NULL;
  616|   695k|}
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|   346k|{
  692|   346k|  g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), FALSE);
  ------------------
  |  |  643|   346k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   346k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   346k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   346k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   346k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   346k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   346k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 346k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   346k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   346k|   else                                         \
  |  |  |  |  |  | 1021|   346k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   346k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   346k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 346k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   346k|      { } \
  |  |  646|   346k|    else \
  |  |  647|   346k|      { \
  |  |  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|   346k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   346k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 346k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  693|   346k|  g_return_val_if_fail (G_IS_VALUE (value), FALSE);
  ------------------
  |  |  643|   346k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   346k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   346k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   346k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   346k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   346k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   346k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 346k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   346k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   346k|   else                                         \
  |  |  |  |  |  | 1021|   346k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   346k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   346k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 346k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   346k|      { } \
  |  |  646|   346k|    else \
  |  |  647|   346k|      { \
  |  |  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|   346k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   346k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 346k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  694|   346k|  g_return_val_if_fail (PSPEC_APPLIES_TO_VALUE (pspec, value), FALSE);
  ------------------
  |  |  643|   346k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   346k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   346k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   346k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   346k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   346k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.73M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 346k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 346k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 346k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   346k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   346k|   else                                         \
  |  |  |  |  |  | 1021|   346k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   346k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   346k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 346k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   346k|      { } \
  |  |  646|   346k|    else \
  |  |  647|   346k|      { \
  |  |  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|   346k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   346k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 346k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  695|       |
  696|   346k|  if (G_PARAM_SPEC_GET_CLASS (pspec)->value_validate)
  ------------------
  |  |   79|   346k|#define G_PARAM_SPEC_GET_CLASS(pspec)	(G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass))
  |  |  ------------------
  |  |  |  |  527|   346k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|   346k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (696:7): [True: 346k, False: 0]
  ------------------
  697|   346k|    {
  698|   346k|      GValue oval = *value;
  699|       |
  700|   346k|      if (G_PARAM_SPEC_GET_CLASS (pspec)->value_validate (pspec, value) ||
  ------------------
  |  |   79|   346k|#define G_PARAM_SPEC_GET_CLASS(pspec)	(G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass))
  |  |  ------------------
  |  |  |  |  527|   346k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|   346k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (700:11): [True: 0, False: 346k]
  ------------------
  701|   346k|	  memcmp (&oval.data, &value->data, sizeof (oval.data)))
  ------------------
  |  Branch (701:4): [True: 0, False: 346k]
  ------------------
  702|      0|	return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  703|   346k|    }
  704|       |
  705|   346k|  return FALSE;
  ------------------
  |  |  814|   346k|#define	FALSE	(0)
  ------------------
  706|   346k|}
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|  2.81k|{
 1094|  2.81k|  GParamSpec *pspec;
 1095|  2.81k|  gchar *delim;
 1096|       |
 1097|  2.81k|  g_return_val_if_fail (pool != NULL, NULL);
  ------------------
  |  |  643|  2.81k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.81k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.81k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.81k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.81k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.81k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.81k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.81k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.81k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.81k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.81k|   else                                         \
  |  |  |  |  |  | 1021|  2.81k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.81k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.81k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.81k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.81k|      { } \
  |  |  646|  2.81k|    else \
  |  |  647|  2.81k|      { \
  |  |  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.81k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.81k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.81k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1098|  2.81k|  g_return_val_if_fail (param_name != NULL, NULL);
  ------------------
  |  |  643|  2.81k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.81k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.81k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.81k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.81k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.81k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.81k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.81k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.81k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.81k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.81k|   else                                         \
  |  |  |  |  |  | 1021|  2.81k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.81k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.81k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.81k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.81k|      { } \
  |  |  646|  2.81k|    else \
  |  |  647|  2.81k|      { \
  |  |  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.81k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.81k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.81k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1099|       |
 1100|  2.81k|  g_mutex_lock (&pool->mutex);
 1101|       |
 1102|  2.81k|  delim = pool->type_prefixing ? strchr (param_name, ':') : NULL;
  ------------------
  |  Branch (1102:11): [True: 2.81k, False: 0]
  ------------------
 1103|       |
 1104|       |  /* try quick and away, i.e. without prefix */
 1105|  2.81k|  if (!delim)
  ------------------
  |  Branch (1105:7): [True: 2.81k, False: 0]
  ------------------
 1106|  2.81k|    {
 1107|  2.81k|      pspec = param_spec_ht_lookup (pool->hash_table, param_name, owner_type, walk_ancestors);
 1108|  2.81k|      g_mutex_unlock (&pool->mutex);
 1109|       |
 1110|  2.81k|      return pspec;
 1111|  2.81k|    }
 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|      9|{
 1310|      9|  GParamSpec **pspecs, **p;
 1311|      9|  GSList **slists, *node;
 1312|      9|  gpointer data[4];
 1313|      9|  guint d, i;
 1314|      9|  int n_pspecs = 0;
 1315|       |
 1316|      9|  g_return_val_if_fail (pool != NULL, NULL);
  ------------------
  |  |  643|      9|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      9|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      9|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      9|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      9| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      9|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      9|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      9|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      9|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      9|   else                                         \
  |  |  |  |  |  | 1021|      9|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      9|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      9|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      9|      { } \
  |  |  646|      9|    else \
  |  |  647|      9|      { \
  |  |  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|      9|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      9|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1317|      9|  g_return_val_if_fail (owner_type > 0, NULL);
  ------------------
  |  |  643|      9|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      9|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      9|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      9|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      9| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      9|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      9|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      9|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      9|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      9|   else                                         \
  |  |  |  |  |  | 1021|      9|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      9|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      9|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      9|      { } \
  |  |  646|      9|    else \
  |  |  647|      9|      { \
  |  |  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|      9|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      9|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1318|      9|  g_return_val_if_fail (n_pspecs_p != NULL, NULL);
  ------------------
  |  |  643|      9|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      9|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      9|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      9|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      9| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      9|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      9|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      9|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      9|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      9|   else                                         \
  |  |  |  |  |  | 1021|      9|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      9|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      9|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      9|      { } \
  |  |  646|      9|    else \
  |  |  647|      9|      { \
  |  |  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|      9|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      9|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1319|       |  
 1320|      9|  g_mutex_lock (&pool->mutex);
 1321|      9|  d = g_type_depth (owner_type);
 1322|      9|  slists = g_new0 (GSList*, d);
  ------------------
  |  |  307|      9|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|      9|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      9|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      9|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      9|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      9|	  gpointer __p;						\
  |  |  |  |  239|      9|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 9]
  |  |  |  |  ------------------
  |  |  |  |  240|      9|	    __p = g_##func (__n);				\
  |  |  |  |  241|      9|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 9]
  |  |  |  |  ------------------
  |  |  |  |  242|      9|	           (__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|      9|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      9|	  else							\
  |  |  |  |  245|      9|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      9|	  __p;							\
  |  |  |  |  247|      9|	}))
  |  |  ------------------
  ------------------
 1323|      9|  data[0] = slists;
 1324|      9|  data[1] = (gpointer) owner_type;
 1325|      9|  data[2] = pool->hash_table;
 1326|      9|  data[3] = &n_pspecs;
 1327|       |
 1328|      9|  g_hash_table_foreach (pool->hash_table,
 1329|      9|                        G_TYPE_IS_INTERFACE (owner_type) ?
  ------------------
  |  |  293|      9|#define G_TYPE_IS_INTERFACE(type)               (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   38|      9|#define G_TYPE_FUNDAMENTAL(type)	(g_type_fundamental (type))
  |  |  ------------------
  |  |               #define G_TYPE_IS_INTERFACE(type)               (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      9|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      9|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      9|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (293:49): [True: 9, False: 0]
  |  |  ------------------
  ------------------
 1330|      9|                          pool_depth_list_for_interface :
 1331|      9|                          pool_depth_list,
 1332|      9|                        &data);
 1333|       |
 1334|      9|  pspecs = g_new (GParamSpec*, n_pspecs + 1);
  ------------------
  |  |  290|      9|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      9|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      9|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      9|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      9|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      9|	  gpointer __p;						\
  |  |  |  |  239|      9|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 9]
  |  |  |  |  ------------------
  |  |  |  |  240|      9|	    __p = g_##func (__n);				\
  |  |  |  |  241|      9|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 9]
  |  |  |  |  ------------------
  |  |  |  |  242|      9|	           (__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|      9|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      9|	  else							\
  |  |  |  |  245|      9|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      9|	  __p;							\
  |  |  |  |  247|      9|	}))
  |  |  ------------------
  ------------------
 1335|      9|  p = pspecs;
 1336|     27|  for (i = 0; i < d; i++)
  ------------------
  |  Branch (1336:15): [True: 18, False: 9]
  ------------------
 1337|     18|    {
 1338|     18|      slists[i] = g_slist_sort (slists[i], pspec_compare_id);
 1339|     18|      for (node = slists[i]; node; node = node->next)
  ------------------
  |  Branch (1339:30): [True: 0, False: 18]
  ------------------
 1340|      0|	*p++ = node->data;
 1341|     18|      g_slist_free (slists[i]);
 1342|     18|    }
 1343|      9|  *p++ = NULL;
 1344|      9|  g_free (slists);
 1345|      9|  g_mutex_unlock (&pool->mutex);
 1346|       |
 1347|      9|  *n_pspecs_p = n_pspecs;
 1348|       |
 1349|      9|  return pspecs;
 1350|      9|}
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.52k|{
 1525|  2.52k|  g_return_val_if_fail (G_VALUE_HOLDS_PARAM (value), NULL);
  ------------------
  |  |  643|  2.52k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.52k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.52k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.52k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.52k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.52k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.52k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  12.6k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.52k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 2.52k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.52k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.52k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.52k|   else                                         \
  |  |  |  |  |  | 1021|  2.52k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.52k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.52k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.52k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.52k|      { } \
  |  |  646|  2.52k|    else \
  |  |  647|  2.52k|      { \
  |  |  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.52k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.52k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.52k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1526|       |
 1527|  2.52k|  return value->data[0].v_pointer;
 1528|  2.52k|}
g_param_spec_get_default_value:
 1562|   346k|{
 1563|   346k|  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|   346k|  if (g_once_init_enter (&priv->default_value.g_type))
  ------------------
  |  |  257|   346k|  (G_GNUC_EXTENSION ({                                               \
  |  |  ------------------
  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  |  Branch (257:3): [True: 6, False: 346k]
  |  |  ------------------
  |  |  258|   346k|    G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer));       \
  |  |  ------------------
  |  |  |  |  765|   346k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  259|   346k|    (void) (0 ? (gpointer) *(location) : NULL);                      \
  |  |  ------------------
  |  |  |  Branch (259:13): [Folded, False: 346k]
  |  |  ------------------
  |  |  260|   346k|    (!g_atomic_pointer_get (location) &&                             \
  |  |  ------------------
  |  |  |  |  113|   692k|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|   692k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   346k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|   692k|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   346k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|   692k|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   346k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|   692k|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|   692k|    gapg_temp_newval;                                                      \
  |  |  |  |  119|   692k|  }))
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 6, False: 346k]
  |  |  ------------------
  |  |  261|   346k|     g_once_init_enter (location));                                  \
  |  |  ------------------
  |  |  |  Branch (261:6): [True: 6, False: 0]
  |  |  ------------------
  |  |  262|   346k|  }))
  ------------------
 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|   346k|  return &priv->default_value;
 1592|   346k|}
g_param_spec_get_name_quark:
 1606|   348k|{
 1607|   348k|  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|   348k|  return priv->name_quark;
 1615|   348k|}
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|   694k|{
   96|   694k|  return &G_STRUCT_MEMBER (GParamSpecPrivate, pspec, g_param_private_offset);
  ------------------
  |  |  862|   694k|    (*(member_type*) G_STRUCT_MEMBER_P ((struct_p), (struct_offset)))
  |  |  ------------------
  |  |  |  |  860|   694k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
   97|   694k|}
gparam.c:value_param_free_value:
  805|  1.26k|{
  806|  1.26k|  if (value->data[0].v_pointer)
  ------------------
  |  Branch (806:7): [True: 1.26k, False: 0]
  ------------------
  807|  1.26k|    g_param_spec_unref (value->data[0].v_pointer);
  808|  1.26k|}
gparam.c:value_param_collect_value:
  842|  1.26k|{
  843|  1.26k|  if (collect_values[0].v_pointer)
  ------------------
  |  Branch (843:7): [True: 1.26k, False: 0]
  ------------------
  844|  1.26k|    {
  845|  1.26k|      GParamSpec *param = collect_values[0].v_pointer;
  846|       |
  847|  1.26k|      if (param->g_type_instance.g_class == NULL)
  ------------------
  |  Branch (847:11): [True: 0, False: 1.26k]
  ------------------
  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.26k|      else if (!g_value_type_compatible (G_PARAM_SPEC_TYPE (param), G_VALUE_TYPE (value)))
  ------------------
  |  |   89|  1.26k|#define G_PARAM_SPEC_TYPE(pspec)	(G_TYPE_FROM_INSTANCE (pspec))
  |  |  ------------------
  |  |  |  |  602|  1.26k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|  1.26k|#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.26k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  |  Branch (852:16): [True: 0, False: 1.26k]
  ------------------
  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.26k|      value->data[0].v_pointer = g_param_spec_ref (param);
  860|  1.26k|    }
  861|      0|  else
  862|      0|    value->data[0].v_pointer = NULL;
  863|       |
  864|  1.26k|  return NULL;
  865|  1.26k|}
gparam.c:param_spec_pool_hash:
  906|  8.35k|{
  907|  8.35k|  const GParamSpec *key = key_spec;
  908|  8.35k|  const gchar *p;
  909|  8.35k|  guint h = key->owner_type;
  910|       |
  911|  45.3k|  for (p = key->name; *p; p++)
  ------------------
  |  Branch (911:23): [True: 36.9k, False: 8.35k]
  ------------------
  912|  36.9k|    h = (h << 5) - h + *p;
  913|       |
  914|  8.35k|  return h;
  915|  8.35k|}
gparam.c:param_spec_pool_equals:
  920|  2.74k|{
  921|  2.74k|  const GParamSpec *key1 = key_spec_1;
  922|  2.74k|  const GParamSpec *key2 = key_spec_2;
  923|       |
  924|  2.74k|  return (key1->owner_type == key2->owner_type &&
  ------------------
  |  Branch (924:11): [True: 2.74k, False: 0]
  ------------------
  925|  2.74k|	  strcmp (key1->name, key2->name) == 0);
  ------------------
  |  Branch (925:4): [True: 2.74k, False: 0]
  ------------------
  926|  2.74k|}
gparam.c:param_spec_ht_lookup:
 1026|  2.81k|{
 1027|  2.81k|  GParamSpec key, *pspec;
 1028|       |
 1029|  2.81k|  key.owner_type = owner_type;
 1030|  2.81k|  key.name = (gchar*) param_name;
 1031|  2.81k|  if (walk_ancestors)
  ------------------
  |  Branch (1031:7): [True: 2.77k, False: 35]
  ------------------
 1032|  2.77k|    do
 1033|  8.28k|      {
 1034|  8.28k|	pspec = g_hash_table_lookup (hash_table, &key);
 1035|  8.28k|	if (pspec)
  ------------------
  |  Branch (1035:6): [True: 2.74k, False: 5.54k]
  ------------------
 1036|  2.74k|	  return pspec;
 1037|  5.54k|	key.owner_type = g_type_parent (key.owner_type);
 1038|  5.54k|      }
 1039|  5.54k|    while (key.owner_type);
  ------------------
  |  Branch (1039:12): [True: 5.50k, 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|    293|{
 1277|    293|  GParamSpec *pspec = value;
 1278|    293|  gpointer *data = user_data;
 1279|    293|  GSList **slists = data[0];
 1280|    293|  GType owner_type = (GType) data[1];
 1281|    293|  GHashTable *ht = data[2];
 1282|    293|  int *count = data[3];
 1283|       |
 1284|    293|  if (pspec->owner_type == owner_type &&
  ------------------
  |  Branch (1284:7): [True: 0, False: 293]
  ------------------
 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|    293|}
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|    740|{
  801|       |  /* GParamSpecPointer *spec = G_PARAM_SPEC_POINTER (pspec); */
  802|    740|  guint changed = 0;
  803|       |  
  804|    740|  return changed;
  805|    740|}
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|   345k|{
  988|   345k|  GParamSpecObject *ospec = G_PARAM_SPEC_OBJECT (pspec);
  ------------------
  |  |  498|   345k|#define G_PARAM_SPEC_OBJECT(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_OBJECT, GParamSpecObject))
  |  |  ------------------
  |  |  |  |  484|   345k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   345k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  989|   345k|  GObject *object = value->data[0].v_pointer;
  990|   345k|  guint changed = 0;
  991|       |  
  992|   345k|  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: 345k]
  |  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|   345k|  return changed;
 1000|   345k|}

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|  2.96k|{
 2565|  2.96k|  guint signal_id;
 2566|  2.96k|  gulong handler_seq_no = 0;
 2567|  2.96k|  GQuark detail = 0;
 2568|  2.96k|  GType itype;
 2569|  2.96k|  gboolean swapped, after;
 2570|       |  
 2571|  2.96k|  g_return_val_if_fail (G_TYPE_CHECK_INSTANCE (instance), 0);
  ------------------
  |  |  643|  2.96k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.96k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.96k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.96k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.96k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.96k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.96k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.96k|   else                                         \
  |  |  |  |  |  | 1021|  2.96k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.96k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.96k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.96k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.96k|      { } \
  |  |  646|  2.96k|    else \
  |  |  647|  2.96k|      { \
  |  |  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.96k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2572|  2.96k|  g_return_val_if_fail (detailed_signal != NULL, 0);
  ------------------
  |  |  643|  2.96k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.96k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.96k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.96k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.96k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.96k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.96k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.96k|   else                                         \
  |  |  |  |  |  | 1021|  2.96k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.96k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.96k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.96k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.96k|      { } \
  |  |  646|  2.96k|    else \
  |  |  647|  2.96k|      { \
  |  |  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.96k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2573|  2.96k|  g_return_val_if_fail (c_handler != NULL, 0);
  ------------------
  |  |  643|  2.96k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.96k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.96k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.96k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.96k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.96k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.96k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.96k|   else                                         \
  |  |  |  |  |  | 1021|  2.96k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.96k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.96k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.96k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.96k|      { } \
  |  |  646|  2.96k|    else \
  |  |  647|  2.96k|      { \
  |  |  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.96k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2574|       |
 2575|  2.96k|  swapped = (connect_flags & G_CONNECT_SWAPPED) != FALSE;
  ------------------
  |  |  814|  2.96k|#define	FALSE	(0)
  ------------------
 2576|  2.96k|  after = (connect_flags & G_CONNECT_AFTER) != FALSE;
  ------------------
  |  |  814|  2.96k|#define	FALSE	(0)
  ------------------
 2577|       |
 2578|  2.96k|  SIGNAL_LOCK ();
  ------------------
  |  |  328|  2.96k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  2.96k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  2.96k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2579|  2.96k|  itype = G_TYPE_FROM_INSTANCE (instance);
  ------------------
  |  |  602|  2.96k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|  2.96k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
 2580|  2.96k|  signal_id = signal_parse_name (detailed_signal, itype, &detail, TRUE);
  ------------------
  |  |  818|  2.96k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  2.96k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2581|  2.96k|  if (signal_id)
  ------------------
  |  Branch (2581:7): [True: 2.96k, False: 0]
  ------------------
 2582|  2.96k|    {
 2583|  2.96k|      SignalNode *node = LOOKUP_SIGNAL_NODE (signal_id);
 2584|       |
 2585|  2.96k|      node_check_deprecated (node);
 2586|       |
 2587|  2.96k|      if (detail && !(node->flags & G_SIGNAL_DETAILED))
  ------------------
  |  Branch (2587:11): [True: 2.96k, False: 0]
  |  Branch (2587:21): [True: 0, False: 2.96k]
  ------------------
 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|  2.96k|      else if (!g_type_is_a (itype, node->itype))
  ------------------
  |  Branch (2589:16): [True: 0, False: 2.96k]
  ------------------
 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|  2.96k|                   G_STRLOC, detailed_signal, instance, g_type_name (itype));
 2592|  2.96k|      else
 2593|  2.96k|	{
 2594|  2.96k|	  Handler *handler = handler_new (signal_id, instance, after);
 2595|       |
 2596|  2.96k|          if (G_TYPE_IS_OBJECT (node->itype))
  ------------------
  |  |   47|  2.96k|#define G_TYPE_IS_OBJECT(type)      (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT)
  |  |  ------------------
  |  |  |  |   38|  2.96k|#define G_TYPE_FUNDAMENTAL(type)	(g_type_fundamental (type))
  |  |  ------------------
  |  |               #define G_TYPE_IS_OBJECT(type)      (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT)
  |  |  ------------------
  |  |  |  |  178|  2.96k|#define G_TYPE_OBJECT			G_TYPE_MAKE_FUNDAMENTAL (20)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|  2.96k|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|  2.96k|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (47:37): [True: 2.96k, False: 0]
  |  |  ------------------
  ------------------
 2597|  2.96k|            _g_object_set_has_signal_handler ((GObject *)instance);
 2598|       |
 2599|  2.96k|	  handler_seq_no = handler->sequential_number;
 2600|  2.96k|	  handler->detail = detail;
 2601|  2.96k|	  handler->closure = g_closure_ref ((swapped ? g_cclosure_new_swap : g_cclosure_new) (c_handler, data, destroy_data));
  ------------------
  |  Branch (2601:39): [True: 0, False: 2.96k]
  ------------------
 2602|  2.96k|	  g_closure_sink (handler->closure);
 2603|  2.96k|	  handler_insert (signal_id, instance, handler);
 2604|  2.96k|	  if (node->c_marshaller && G_CLOSURE_NEEDS_MARSHAL (handler->closure))
  ------------------
  |  |   39|  2.96k|#define	G_CLOSURE_NEEDS_MARSHAL(closure) (((GClosure*) (closure))->marshal == NULL)
  |  |  ------------------
  |  |  |  Branch (39:42): [True: 2.96k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2604:8): [True: 2.96k, False: 0]
  ------------------
 2605|  2.96k|	    {
 2606|  2.96k|	      g_closure_set_marshal (handler->closure, node->c_marshaller);
 2607|  2.96k|	      if (node->va_marshaller)
  ------------------
  |  Branch (2607:12): [True: 2.96k, False: 0]
  ------------------
 2608|  2.96k|		_g_closure_set_va_marshal (handler->closure, node->va_marshaller);
 2609|  2.96k|	    }
 2610|  2.96k|        }
 2611|  2.96k|    }
 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|  2.96k|               G_STRLOC, detailed_signal, instance, g_type_name (itype));
 2615|  2.96k|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  2.96k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  2.96k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  2.96k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2616|       |
 2617|  2.96k|  return handler_seq_no;
 2618|  2.96k|}
g_signal_handlers_destroy:
 2772|  2.05M|{
 2773|  2.05M|  GBSearchArray *hlbsa;
 2774|       |  
 2775|  2.05M|  g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance));
  ------------------
  |  |  630|  2.05M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.05M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.05M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.05M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.05M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.05M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.05M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.05M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.05M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.05M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.05M|   else                                         \
  |  |  |  |  |  | 1021|  2.05M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.05M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.05M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.05M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.05M|      { } \
  |  |  633|  2.05M|    else \
  |  |  634|  2.05M|      { \
  |  |  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.05M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.05M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.05M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2776|       |  
 2777|  2.05M|  SIGNAL_LOCK ();
  ------------------
  |  |  328|  2.05M|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  2.05M|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  2.05M|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2778|  2.05M|  hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance);
 2779|  2.05M|  if (hlbsa)
  ------------------
  |  Branch (2779:7): [True: 740, False: 2.05M]
  ------------------
 2780|    740|    {
 2781|    740|      guint i;
 2782|       |      
 2783|       |      /* reentrancy caution, delete instance trace first */
 2784|    740|      g_hash_table_remove (g_handler_list_bsa_ht, instance);
 2785|       |      
 2786|  1.48k|      for (i = 0; i < hlbsa->n_nodes; i++)
  ------------------
  |  Branch (2786:19): [True: 740, False: 740]
  ------------------
 2787|    740|        {
 2788|    740|          HandlerList *hlist = g_bsearch_array_get_nth (hlbsa, &g_signal_hlbsa_bconfig, i);
 2789|    740|          Handler *handler = hlist->handlers;
 2790|       |	  
 2791|  3.70k|          while (handler)
  ------------------
  |  Branch (2791:18): [True: 2.96k, False: 740]
  ------------------
 2792|  2.96k|            {
 2793|  2.96k|              Handler *tmp = handler;
 2794|       |	      
 2795|  2.96k|              handler = tmp->next;
 2796|  2.96k|              tmp->block_count = 1;
 2797|       |              /* cruel unlink, this works because _all_ handlers vanish */
 2798|  2.96k|              tmp->next = NULL;
 2799|  2.96k|              tmp->prev = tmp;
 2800|  2.96k|              if (tmp->sequential_number)
  ------------------
  |  Branch (2800:19): [True: 2.96k, False: 0]
  ------------------
 2801|  2.96k|		{
 2802|  2.96k|                  g_hash_table_remove (g_handlers, tmp);
 2803|  2.96k|		  remove_invalid_closure_notify (tmp, instance);
 2804|  2.96k|		  tmp->sequential_number = 0;
 2805|  2.96k|		  handler_unref_R (0, NULL, tmp);
 2806|  2.96k|		}
 2807|  2.96k|            }
 2808|    740|        }
 2809|    740|      g_bsearch_array_free (hlbsa, &g_signal_hlbsa_bconfig);
 2810|    740|    }
 2811|  2.05M|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  2.05M|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  2.05M|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  2.05M|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2812|  2.05M|}
g_signal_emit_valist:
 3269|   348k|{
 3270|   348k|  GValue *instance_and_params;
 3271|   348k|  GType signal_return_type;
 3272|   348k|  GValue *param_values;
 3273|   348k|  SignalNode *node;
 3274|   348k|  guint i, n_params;
 3275|       |
 3276|   348k|  g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance));
  ------------------
  |  |  630|   348k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   348k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   348k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   348k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   348k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   348k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   348k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   348k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 348k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   348k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   348k|   else                                         \
  |  |  |  |  |  | 1021|   348k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   348k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   348k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 348k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   348k|      { } \
  |  |  633|   348k|    else \
  |  |  634|   348k|      { \
  |  |  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|   348k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   348k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 348k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3277|   348k|  g_return_if_fail (signal_id > 0);
  ------------------
  |  |  630|   348k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   348k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   348k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   348k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   348k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   348k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   348k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   348k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 348k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   348k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   348k|   else                                         \
  |  |  |  |  |  | 1021|   348k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   348k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   348k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 348k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   348k|      { } \
  |  |  633|   348k|    else \
  |  |  634|   348k|      { \
  |  |  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|   348k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   348k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 348k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3278|       |
 3279|   348k|  SIGNAL_LOCK ();
  ------------------
  |  |  328|   348k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|   348k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|   348k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3280|   348k|  node = LOOKUP_SIGNAL_NODE (signal_id);
 3281|   348k|  if (!node || !g_type_is_a (G_TYPE_FROM_INSTANCE (instance), node->itype))
  ------------------
  |  |  602|   348k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|   348k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
  |  Branch (3281:7): [True: 0, False: 348k]
  |  Branch (3281:16): [True: 0, False: 348k]
  ------------------
 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|   348k|#ifndef G_DISABLE_CHECKS
 3288|   348k|  if (detail && !(node->flags & G_SIGNAL_DETAILED))
  ------------------
  |  Branch (3288:7): [True: 348k, False: 0]
  |  Branch (3288:17): [True: 0, False: 348k]
  ------------------
 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|   348k|#endif  /* !G_DISABLE_CHECKS */
 3295|       |
 3296|   348k|  if (!node->single_va_closure_is_valid)
  ------------------
  |  Branch (3296:7): [True: 1, False: 348k]
  ------------------
 3297|      1|    node_update_single_va_closure (node);
 3298|       |
 3299|   348k|  if (node->single_va_closure != NULL)
  ------------------
  |  Branch (3299:7): [True: 348k, False: 0]
  ------------------
 3300|   348k|    {
 3301|   348k|      HandlerList* hlist;
 3302|   348k|      Handler *fastpath_handler = NULL;
 3303|   348k|      Handler *l;
 3304|   348k|      GClosure *closure = NULL;
 3305|   348k|      gboolean fastpath = TRUE;
  ------------------
  |  |  818|   348k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   348k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3306|   348k|      GSignalFlags run_type = G_SIGNAL_RUN_FIRST;
 3307|       |
 3308|   348k|      if (node->single_va_closure != SINGLE_VA_CLOSURE_EMPTY_MAGIC &&
  ------------------
  |  |  250|   348k|#define	SINGLE_VA_CLOSURE_EMPTY_MAGIC GINT_TO_POINTER(1)	/* indicates single_va_closure is valid but empty */
  |  |  ------------------
  |  |  |  |  101|   696k|#define GINT_TO_POINTER(i)	((gpointer) (glong) (i))
  |  |  ------------------
  ------------------
  |  Branch (3308:11): [True: 348k, False: 0]
  ------------------
 3309|   348k|	  !_g_closure_is_void (node->single_va_closure, instance))
  ------------------
  |  Branch (3309:4): [True: 0, False: 348k]
  ------------------
 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|   348k|      if (_g_object_has_signal_handler ((GObject *)instance))
  ------------------
  |  Branch (3324:11): [True: 5.70k, False: 342k]
  ------------------
 3325|  5.70k|        hlist = handler_list_lookup (node->signal_id, instance);
 3326|   342k|      else
 3327|   342k|        hlist = NULL;
 3328|       |
 3329|   369k|      for (l = hlist ? hlist->handlers : NULL; fastpath && l != NULL; l = l->next)
  ------------------
  |  Branch (3329:16): [True: 5.70k, False: 342k]
  |  Branch (3329:48): [True: 369k, False: 0]
  |  Branch (3329:60): [True: 22.1k, False: 346k]
  ------------------
 3330|  22.1k|	{
 3331|  22.1k|	  if (!l->block_count &&
  ------------------
  |  Branch (3331:8): [True: 22.1k, False: 0]
  ------------------
 3332|  22.1k|	      (!l->detail || l->detail == detail))
  ------------------
  |  Branch (3332:9): [True: 0, False: 22.1k]
  |  Branch (3332:23): [True: 2.52k, False: 19.6k]
  ------------------
 3333|  2.52k|	    {
 3334|  2.52k|	      if (closure != NULL || !_g_closure_supports_invoke_va (l->closure))
  ------------------
  |  Branch (3334:12): [True: 1.26k, False: 1.26k]
  |  Branch (3334:31): [True: 0, False: 1.26k]
  ------------------
 3335|  1.26k|		{
 3336|  1.26k|		  fastpath = FALSE;
  ------------------
  |  |  814|  1.26k|#define	FALSE	(0)
  ------------------
 3337|  1.26k|		  break;
 3338|  1.26k|		}
 3339|  1.26k|	      else
 3340|  1.26k|		{
 3341|  1.26k|                  fastpath_handler = l;
 3342|  1.26k|		  closure = l->closure;
 3343|  1.26k|		  if (l->after)
  ------------------
  |  Branch (3343:9): [True: 0, False: 1.26k]
  ------------------
 3344|      0|		    run_type = G_SIGNAL_RUN_LAST;
 3345|  1.26k|		  else
 3346|  1.26k|		    run_type = G_SIGNAL_RUN_FIRST;
 3347|  1.26k|		}
 3348|  2.52k|	    }
 3349|  22.1k|	}
 3350|       |
 3351|   348k|      if (fastpath && closure == NULL && node->return_type == G_TYPE_NONE)
  ------------------
  |  |   62|   346k|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|   346k|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|   346k|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3351:11): [True: 346k, False: 1.26k]
  |  Branch (3351:23): [True: 346k, False: 0]
  |  Branch (3351:42): [True: 346k, False: 0]
  ------------------
 3352|   346k|	{
 3353|   346k|	  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|   346k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|   346k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|   346k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3354|   346k|	  return;
 3355|   346k|	}
 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.26k|      if (closure != NULL && (node->flags & (G_SIGNAL_NO_RECURSE)) != 0)
  ------------------
  |  Branch (3359:11): [True: 1.26k, False: 0]
  |  Branch (3359:30): [True: 1.26k, False: 0]
  ------------------
 3360|  1.26k|	fastpath = FALSE;
  ------------------
  |  |  814|  1.26k|#define	FALSE	(0)
  ------------------
 3361|       |      
 3362|  1.26k|      if (fastpath)
  ------------------
  |  Branch (3362:11): [True: 0, False: 1.26k]
  ------------------
 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.26k|    }
 3461|  1.26k|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  1.26k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  1.26k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  1.26k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3462|       |
 3463|  1.26k|  n_params = node->n_params;
 3464|  1.26k|  signal_return_type = node->return_type;
 3465|  1.26k|  instance_and_params = g_alloca (sizeof (GValue) * (n_params + 1));
  ------------------
  |  |   91|  1.26k|#define g_alloca(size)		 alloca (size)
  ------------------
 3466|  1.26k|  memset (instance_and_params, 0, sizeof (GValue) * (n_params + 1));
 3467|  1.26k|  param_values = instance_and_params + 1;
 3468|       |
 3469|  2.52k|  for (i = 0; i < node->n_params; i++)
  ------------------
  |  Branch (3469:15): [True: 1.26k, False: 1.26k]
  ------------------
 3470|  1.26k|    {
 3471|  1.26k|      gchar *error;
 3472|  1.26k|      GType ptype = node->param_types[i] & ~G_SIGNAL_TYPE_STATIC_SCOPE;
  ------------------
  |  |  213|  1.26k|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  ------------------
  |  |  |  | 2353|  1.26k|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  ------------------
  ------------------
 3473|  1.26k|      gboolean static_scope = node->param_types[i] & G_SIGNAL_TYPE_STATIC_SCOPE;
  ------------------
  |  |  213|  1.26k|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  ------------------
  |  |  |  | 2353|  1.26k|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  ------------------
  ------------------
 3474|       |
 3475|  1.26k|      G_VALUE_COLLECT_INIT (param_values + i, ptype,
  ------------------
  |  |   88|  1.26k|#define G_VALUE_COLLECT_INIT(value, _value_type, var_args, flags, __error)		\
  |  |  ------------------
  |  |  |  |  874|  1.26k|#define G_STMT_START  do
  |  |  ------------------
  |  |   89|  1.26k|G_STMT_START {										\
  |  |   90|  1.26k|  GValue *g_vci_val = (value);								\
  |  |   91|  2.52k|  guint g_vci_flags = (flags);								\
  |  |  ------------------
  |  |  |  Branch (91:24): [True: 0, False: 1.26k]
  |  |  ------------------
  |  |   92|  1.26k|  GTypeValueTable *g_vci_vtab = g_type_value_table_peek (_value_type);			\
  |  |   93|  1.26k|  const gchar *g_vci_collect_format = g_vci_vtab->collect_format;					\
  |  |   94|  1.26k|  GTypeCValue g_vci_cvalues[G_VALUE_COLLECT_FORMAT_MAX_LENGTH] = { { 0, }, };		\
  |  |   95|  1.26k|  guint g_vci_n_values = 0;									\
  |  |   96|  1.26k|                                                                                        \
  |  |   97|  1.26k|  g_vci_val->g_type = _value_type;		/* value_meminit() from gvalue.c */		\
  |  |   98|  2.52k|  while (*g_vci_collect_format)								\
  |  |  ------------------
  |  |  |  Branch (98:10): [True: 1.26k, False: 1.26k]
  |  |  ------------------
  |  |   99|  1.26k|    {											\
  |  |  100|  1.26k|      GTypeCValue *g_vci_cvalue = g_vci_cvalues + g_vci_n_values++;					\
  |  |  101|  1.26k|                                                                                        \
  |  |  102|  1.26k|      switch (*g_vci_collect_format++)							\
  |  |  103|  1.26k|	{										\
  |  |  104|      0|	case G_VALUE_COLLECT_INT:							\
  |  |  ------------------
  |  |  |  Branch (104:2): [True: 0, False: 1.26k]
  |  |  ------------------
  |  |  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.26k]
  |  |  ------------------
  |  |  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.26k]
  |  |  ------------------
  |  |  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.26k]
  |  |  ------------------
  |  |  114|      0|	  g_vci_cvalue->v_double = va_arg ((var_args), gdouble);				\
  |  |  115|      0|	  break;									\
  |  |  116|  1.26k|	case G_VALUE_COLLECT_POINTER:							\
  |  |  ------------------
  |  |  |  Branch (116:2): [True: 1.26k, False: 0]
  |  |  ------------------
  |  |  117|  1.26k|	  g_vci_cvalue->v_pointer = va_arg ((var_args), gpointer);				\
  |  |  118|  1.26k|	  break;									\
  |  |  119|      0|	default:									\
  |  |  ------------------
  |  |  |  Branch (119:2): [True: 0, False: 1.26k]
  |  |  ------------------
  |  |  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.26k|	}										\
  |  |  122|  1.26k|    }											\
  |  |  123|  1.26k|  *(__error) = g_vci_vtab->collect_value (g_vci_val,						\
  |  |  124|  1.26k|				       g_vci_n_values,					\
  |  |  125|  1.26k|				       g_vci_cvalues,					\
  |  |  126|  1.26k|				       g_vci_flags);						\
  |  |  127|  1.26k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.26k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.26k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3476|  1.26k|			    var_args,
 3477|  1.26k|			    static_scope ? G_VALUE_NOCOPY_CONTENTS : 0,
 3478|  1.26k|			    &error);
 3479|  1.26k|      if (error)
  ------------------
  |  Branch (3479:11): [True: 0, False: 1.26k]
  ------------------
 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.26k|    }
 3493|       |
 3494|  1.26k|  instance_and_params->g_type = 0;
 3495|  1.26k|  g_value_init_from_instance (instance_and_params, instance);
 3496|  1.26k|  if (signal_return_type == G_TYPE_NONE)
  ------------------
  |  |   62|  1.26k|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|  1.26k|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|  1.26k|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3496:7): [True: 1.26k, False: 0]
  ------------------
 3497|  1.26k|    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.52k|  for (i = 0; i < n_params; i++)
  ------------------
  |  Branch (3525:15): [True: 1.26k, False: 1.26k]
  ------------------
 3526|  1.26k|    g_value_unset (param_values + i);
 3527|  1.26k|  g_value_unset (instance_and_params);
 3528|  1.26k|}
g_signal_emit:
 3549|   348k|{
 3550|   348k|  va_list var_args;
 3551|       |
 3552|   348k|  va_start (var_args, detail);
 3553|   348k|  g_signal_emit_valist (instance, signal_id, detail, var_args);
 3554|       |  va_end (var_args);
 3555|   348k|}
gsignal.c:signal_key_cmp:
  915|  38.5k|{
  916|  38.5k|  const SignalKey *key1 = node1, *key2 = node2;
  917|       |  
  918|  38.5k|  if (key1->itype == key2->itype)
  ------------------
  |  Branch (918:7): [True: 11.8k, False: 26.6k]
  ------------------
  919|  11.8k|    return G_BSEARCH_ARRAY_CMP (key1->quark, key2->quark);
  ------------------
  |  |   34|  11.8k|#define G_BSEARCH_ARRAY_CMP(v1,v2) ((v1) > (v2) ? +1 : (v1) == (v2) ? 0 : -1)
  |  |  ------------------
  |  |  |  Branch (34:37): [True: 3, False: 11.8k]
  |  |  |  Branch (34:56): [True: 2.96k, False: 8.88k]
  |  |  ------------------
  ------------------
  920|  26.6k|  else
  921|  26.6k|    return G_BSEARCH_ARRAY_CMP (key1->itype, key2->itype);
  ------------------
  |  |   34|  26.6k|#define G_BSEARCH_ARRAY_CMP(v1,v2) ((v1) > (v2) ? +1 : (v1) == (v2) ? 0 : -1)
  |  |  ------------------
  |  |  |  Branch (34:37): [True: 14.8k, False: 11.8k]
  |  |  |  Branch (34:56): [True: 0, False: 11.8k]
  |  |  ------------------
  ------------------
  922|  38.5k|}
gsignal.c:handler_hash:
  517|  5.92k|{
  518|  5.92k|  return (guint)((Handler*)key)->sequential_number;
  519|  5.92k|}
gsignal.c:handler_equal:
  523|  2.96k|{
  524|  2.96k|  Handler *ha = (Handler *)a;
  525|  2.96k|  Handler *hb = (Handler *)b;
  526|  2.96k|  return (ha->sequential_number == hb->sequential_number) &&
  ------------------
  |  Branch (526:10): [True: 2.96k, False: 1]
  ------------------
  527|  2.96k|      (ha->instance  == hb->instance);
  ------------------
  |  Branch (527:7): [True: 2.96k, False: 0]
  ------------------
  528|  2.96k|}
gsignal.c:LOOKUP_SIGNAL_NODE:
  338|   351k|{
  339|   351k|  if (signal_id < g_n_signal_nodes)
  ------------------
  |  Branch (339:7): [True: 351k, False: 0]
  ------------------
  340|   351k|    return g_signal_nodes[signal_id];
  341|      0|  else
  342|      0|    return NULL;
  343|   351k|}
gsignal.c:emission_find:
  889|  1.26k|{
  890|  1.26k|  Emission *emission;
  891|       |  
  892|  1.26k|  for (emission = g_emissions; emission; emission = emission->next)
  ------------------
  |  Branch (892:32): [True: 0, False: 1.26k]
  ------------------
  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.26k|  return NULL;
  898|  1.26k|}
gsignal.c:signal_parse_name:
 1146|  2.96k|{
 1147|  2.96k|  const gchar *colon = strchr (name, ':');
 1148|  2.96k|  guint signal_id;
 1149|       |  
 1150|  2.96k|  if (!colon)
  ------------------
  |  Branch (1150:7): [True: 0, False: 2.96k]
  ------------------
 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|  2.96k|  else if (colon[1] == ':')
  ------------------
  |  Branch (1156:12): [True: 2.96k, False: 0]
  ------------------
 1157|  2.96k|    {
 1158|  2.96k|      gchar buffer[32];
 1159|  2.96k|      guint l = colon - name;
 1160|       |      
 1161|  2.96k|      if (colon[2] == '\0')
  ------------------
  |  Branch (1161:11): [True: 0, False: 2.96k]
  ------------------
 1162|      0|        return 0;
 1163|       |
 1164|  2.96k|      if (l < 32)
  ------------------
  |  Branch (1164:11): [True: 2.96k, False: 0]
  ------------------
 1165|  2.96k|	{
 1166|  2.96k|	  memcpy (buffer, name, l);
 1167|  2.96k|	  buffer[l] = 0;
 1168|  2.96k|	  signal_id = signal_id_lookup (buffer, itype);
 1169|  2.96k|	}
 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|  2.96k|      if (signal_id && detail_p)
  ------------------
  |  Branch (1180:11): [True: 2.96k, False: 0]
  |  Branch (1180:24): [True: 2.96k, False: 0]
  ------------------
 1181|  2.96k|        *detail_p = (force_quark ? g_quark_from_string : g_quark_try_string) (colon + 2);
  ------------------
  |  Branch (1181:22): [True: 2.96k, False: 0]
  ------------------
 1182|  2.96k|    }
 1183|      0|  else
 1184|      0|    signal_id = 0;
 1185|  2.96k|  return signal_id;
 1186|  2.96k|}
gsignal.c:signal_id_lookup:
  398|  2.96k|{
  399|  2.96k|  GQuark quark;
  400|  2.96k|  GType *ifaces, type = itype;
  401|  2.96k|  SignalKey key;
  402|  2.96k|  guint n_ifaces;
  403|       |
  404|  2.96k|  quark = g_quark_try_string (name);
  405|  2.96k|  key.quark = quark;
  406|       |
  407|       |  /* try looking up signals for this type and its ancestors */
  408|  2.96k|  do
  409|  13.3k|    {
  410|  13.3k|      SignalKey *signal_key;
  411|       |      
  412|  13.3k|      key.itype = type;
  413|  13.3k|      signal_key = g_bsearch_array_lookup (g_signal_key_bsa, &g_signal_key_bconfig, &key);
  ------------------
  |  |   97|  13.3k|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
  ------------------
  414|       |      
  415|  13.3k|      if (signal_key)
  ------------------
  |  Branch (415:11): [True: 2.96k, False: 10.3k]
  ------------------
  416|  2.96k|	return signal_key->signal_id;
  417|       |      
  418|  10.3k|      type = g_type_parent (type);
  419|  10.3k|    }
  420|  10.3k|  while (type);
  ------------------
  |  Branch (420:10): [True: 10.3k, 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.26k|{
 1596|  1.26k|  GBSearchArray *bsa = node->class_closure_bsa;
 1597|  1.26k|  ClassClosure *cc;
 1598|       |
 1599|  1.26k|  if (bsa)
  ------------------
  |  Branch (1599:7): [True: 1.26k, False: 0]
  ------------------
 1600|  1.26k|    {
 1601|  1.26k|      ClassClosure key;
 1602|       |
 1603|       |      /* cc->instance_type is 0 for default closure */
 1604|       |
 1605|  1.26k|      if (g_bsearch_array_get_n_nodes (bsa) == 1)
  ------------------
  |  |   91|  1.26k|#define g_bsearch_array_get_n_nodes(barray)     (((GBSearchArray*) (barray))->n_nodes)
  ------------------
  |  Branch (1605:11): [True: 1.26k, False: 0]
  ------------------
 1606|  1.26k|        {
 1607|  1.26k|          cc = g_bsearch_array_get_nth (bsa, &g_class_closure_bconfig, 0);
 1608|  1.26k|          if (cc && cc->instance_type == 0) /* check for default closure */
  ------------------
  |  Branch (1608:15): [True: 1.26k, False: 0]
  |  Branch (1608:21): [True: 1.26k, False: 0]
  ------------------
 1609|  1.26k|            return cc;
 1610|  1.26k|        }
 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.26k|}
gsignal.c:handler_new:
  685|  2.96k|{
  686|  2.96k|  Handler *handler = g_slice_new (Handler);
  ------------------
  |  |   46|  2.96k|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  ------------------
  687|  2.96k|#ifndef G_DISABLE_CHECKS
  688|  2.96k|  if (g_handler_sequential_number < 1)
  ------------------
  |  Branch (688:7): [True: 0, False: 2.96k]
  ------------------
  689|  2.96k|    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|  2.96k|#endif
  691|       |  
  692|  2.96k|  handler->sequential_number = g_handler_sequential_number++;
  693|  2.96k|  handler->prev = NULL;
  694|  2.96k|  handler->next = NULL;
  695|  2.96k|  handler->detail = 0;
  696|  2.96k|  handler->signal_id = signal_id;
  697|  2.96k|  handler->instance = instance;
  698|  2.96k|  handler->ref_count = 1;
  699|  2.96k|  handler->block_count = 0;
  700|  2.96k|  handler->after = after != FALSE;
  ------------------
  |  |  814|  2.96k|#define	FALSE	(0)
  ------------------
  701|  2.96k|  handler->closure = NULL;
  702|  2.96k|  handler->has_invalid_closure_notify = 0;
  703|       |
  704|  2.96k|  g_hash_table_add (g_handlers, handler);
  705|       |  
  706|  2.96k|  return handler;
  707|  2.96k|}
gsignal.c:handler_insert:
  779|  2.96k|{
  780|  2.96k|  HandlerList *hlist;
  781|       |  
  782|  2.96k|  g_assert (handler->prev == NULL && handler->next == NULL); /* paranoid */
  ------------------
  |  |  231|  2.96k|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|  2.96k|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|  2.96k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.96k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.96k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  8.88k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.96k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.96k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.96k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.96k|   else                                         \
  |  |  |  |  |  | 1021|  2.96k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.96k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.96k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2.96k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|  2.96k|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|  2.96k|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  783|       |
  784|  2.96k|  hlist = handler_list_ensure (signal_id, instance);
  785|  2.96k|  if (!hlist->handlers)
  ------------------
  |  Branch (785:7): [True: 740, False: 2.22k]
  ------------------
  786|    740|    {
  787|    740|      hlist->handlers = handler;
  788|    740|      if (!handler->after)
  ------------------
  |  Branch (788:11): [True: 740, False: 0]
  ------------------
  789|    740|        hlist->tail_before = handler;
  790|    740|    }
  791|  2.22k|  else if (handler->after)
  ------------------
  |  Branch (791:12): [True: 0, False: 2.22k]
  ------------------
  792|      0|    {
  793|      0|      handler->prev = hlist->tail_after;
  794|      0|      hlist->tail_after->next = handler;
  795|      0|    }
  796|  2.22k|  else
  797|  2.22k|    {
  798|  2.22k|      if (hlist->tail_before)
  ------------------
  |  Branch (798:11): [True: 2.22k, False: 0]
  ------------------
  799|  2.22k|        {
  800|  2.22k|          handler->next = hlist->tail_before->next;
  801|  2.22k|          if (handler->next)
  ------------------
  |  Branch (801:15): [True: 0, False: 2.22k]
  ------------------
  802|      0|            handler->next->prev = handler;
  803|  2.22k|          handler->prev = hlist->tail_before;
  804|  2.22k|          hlist->tail_before->next = handler;
  805|  2.22k|        }
  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.22k|      hlist->tail_before = handler;
  814|  2.22k|    }
  815|       |
  816|  2.96k|  if (!handler->next)
  ------------------
  |  Branch (816:7): [True: 2.96k, False: 0]
  ------------------
  817|  2.96k|    hlist->tail_after = handler;
  818|  2.96k|}
gsignal.c:handler_list_ensure:
  478|  2.96k|{
  479|  2.96k|  GBSearchArray *hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance);
  480|  2.96k|  HandlerList key;
  481|       |  
  482|  2.96k|  key.signal_id = signal_id;
  483|  2.96k|  key.handlers    = NULL;
  484|  2.96k|  key.tail_before = NULL;
  485|  2.96k|  key.tail_after  = NULL;
  486|  2.96k|  if (!hlbsa)
  ------------------
  |  Branch (486:7): [True: 740, False: 2.22k]
  ------------------
  487|    740|    {
  488|    740|      hlbsa = g_bsearch_array_create (&g_signal_hlbsa_bconfig);
  489|    740|      hlbsa = g_bsearch_array_insert (hlbsa, &g_signal_hlbsa_bconfig, &key);
  490|    740|      g_hash_table_insert (g_handler_list_bsa_ht, instance, hlbsa);
  491|    740|    }
  492|  2.22k|  else
  493|  2.22k|    {
  494|  2.22k|      GBSearchArray *o = hlbsa;
  495|       |
  496|  2.22k|      hlbsa = g_bsearch_array_insert (o, &g_signal_hlbsa_bconfig, &key);
  497|  2.22k|      if (hlbsa != o)
  ------------------
  |  Branch (497:11): [True: 0, False: 2.22k]
  ------------------
  498|      0|	g_hash_table_insert (g_handler_list_bsa_ht, instance, hlbsa);
  499|  2.22k|    }
  500|  2.96k|  return g_bsearch_array_lookup (hlbsa, &g_signal_hlbsa_bconfig, &key);
  ------------------
  |  |   97|  2.96k|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
  ------------------
  501|  2.96k|}
gsignal.c:node_check_deprecated:
 2519|  2.96k|{
 2520|  2.96k|  static const gchar * g_enable_diagnostic = NULL;
 2521|       |
 2522|  2.96k|  if (G_UNLIKELY (!g_enable_diagnostic))
  ------------------
  |  | 1025|  2.96k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  2.96k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  2.96k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  2.96k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  2.96k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 1, False: 2.95k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  2.96k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  2.96k|   else                                         \
  |  |  |  | 1021|  2.96k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  2.96k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  2.96k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 1, False: 2.95k]
  |  |  ------------------
  ------------------
 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|  2.96k|  if (g_enable_diagnostic[0] == '1')
  ------------------
  |  Branch (2529:7): [True: 0, False: 2.96k]
  ------------------
 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|  2.96k|}
gsignal.c:handler_unref_R:
  721|  10.5k|{
  722|  10.5k|  g_return_if_fail (handler->ref_count > 0);
  ------------------
  |  |  630|  10.5k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  10.5k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  10.5k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  10.5k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  10.5k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  10.5k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  10.5k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  10.5k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 10.5k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  10.5k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  10.5k|   else                                         \
  |  |  |  |  |  | 1021|  10.5k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  10.5k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  10.5k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 10.5k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  10.5k|      { } \
  |  |  633|  10.5k|    else \
  |  |  634|  10.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|  10.5k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  10.5k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 10.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  723|       |
  724|  10.5k|  handler->ref_count--;
  725|       |
  726|  10.5k|  if (G_UNLIKELY (handler->ref_count == 0))
  ------------------
  |  | 1025|  10.5k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  10.5k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  10.5k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  10.5k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  10.5k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 2.96k, False: 7.56k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  10.5k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  10.5k|   else                                         \
  |  |  |  | 1021|  10.5k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  10.5k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  10.5k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 2.96k, False: 7.56k]
  |  |  ------------------
  ------------------
  727|  2.96k|    {
  728|  2.96k|      HandlerList *hlist = NULL;
  729|       |
  730|  2.96k|      if (handler->next)
  ------------------
  |  Branch (730:11): [True: 0, False: 2.96k]
  ------------------
  731|      0|        handler->next->prev = handler->prev;
  732|  2.96k|      if (handler->prev)    /* watch out for g_signal_handlers_destroy()! */
  ------------------
  |  Branch (732:11): [True: 2.96k, False: 0]
  ------------------
  733|  2.96k|        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|  2.96k|      if (instance)
  ------------------
  |  Branch (741:11): [True: 0, False: 2.96k]
  ------------------
  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|  2.96k|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  2.96k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  2.96k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  2.96k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  769|  2.96k|      g_closure_unref (handler->closure);
  770|  2.96k|      SIGNAL_LOCK ();
  ------------------
  |  |  328|  2.96k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  2.96k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  2.96k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  771|  2.96k|      g_slice_free (Handler, handler);
  ------------------
  |  |   79|  2.96k|#define g_slice_free(type, mem)                                 \
  |  |  ------------------
  |  |  |  |  874|  2.96k|#define G_STMT_START  do
  |  |  ------------------
  |  |   80|  2.96k|G_STMT_START {                                                  \
  |  |   81|  2.96k|  if (1) g_slice_free1 (sizeof (type), (mem));			\
  |  |  ------------------
  |  |  |  Branch (81:7): [True: 2.96k, Folded]
  |  |  ------------------
  |  |   82|  2.96k|  else   (void) ((type*) 0 == (mem)); 				\
  |  |   83|  2.96k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.96k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  772|  2.96k|    }
  773|  10.5k|}
gsignal.c:handler_lists_cmp:
  469|  12.1k|{
  470|  12.1k|  const HandlerList *hlist1 = node1, *hlist2 = node2;
  471|       |  
  472|  12.1k|  return G_BSEARCH_ARRAY_CMP (hlist1->signal_id, hlist2->signal_id);
  ------------------
  |  |   34|  12.1k|#define G_BSEARCH_ARRAY_CMP(v1,v2) ((v1) > (v2) ? +1 : (v1) == (v2) ? 0 : -1)
  |  |  ------------------
  |  |  |  Branch (34:37): [True: 0, False: 12.1k]
  |  |  |  Branch (34:56): [True: 12.1k, False: 0]
  |  |  ------------------
  ------------------
  473|  12.1k|}
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|  6.96k|{
  507|  6.96k|  GBSearchArray *hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance);
  508|  6.96k|  HandlerList key;
  509|       |  
  510|  6.96k|  key.signal_id = signal_id;
  511|       |  
  512|  6.96k|  return hlbsa ? g_bsearch_array_lookup (hlbsa, &g_signal_hlbsa_bconfig, &key) : NULL;
  ------------------
  |  |   97|  6.96k|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
  ------------------
  |  Branch (512:10): [True: 6.96k, False: 0]
  ------------------
  513|  6.96k|}
gsignal.c:emission_push:
  863|  1.26k|{
  864|  1.26k|  emission->next = g_emissions;
  865|  1.26k|  g_emissions = emission;
  866|  1.26k|}
gsignal.c:handler_ref:
  711|  7.56k|{
  712|  7.56k|  g_return_if_fail (handler->ref_count > 0);
  ------------------
  |  |  630|  7.56k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  7.56k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  7.56k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  7.56k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  7.56k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  7.56k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  7.56k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  7.56k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 7.56k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  7.56k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  7.56k|   else                                         \
  |  |  |  |  |  | 1021|  7.56k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  7.56k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  7.56k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 7.56k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  7.56k|      { } \
  |  |  633|  7.56k|    else \
  |  |  634|  7.56k|      { \
  |  |  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|  7.56k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  7.56k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 7.56k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  713|       |  
  714|  7.56k|  handler->ref_count++;
  715|  7.56k|}
gsignal.c:accumulate:
 3235|  3.78k|{
 3236|  3.78k|  gboolean continue_emission;
 3237|       |
 3238|  3.78k|  if (!accumulator)
  ------------------
  |  Branch (3238:7): [True: 3.78k, False: 0]
  ------------------
 3239|  3.78k|    return TRUE;
  ------------------
  |  |  818|  3.78k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  3.78k|#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|  3.78k|}
gsignal.c:emission_pop:
  870|  1.26k|{
  871|  1.26k|  Emission *node, *last = NULL;
  872|       |
  873|  1.26k|  for (node = g_emissions; node; last = node, node = last->next)
  ------------------
  |  Branch (873:28): [True: 1.26k, False: 0]
  ------------------
  874|  1.26k|    if (node == emission)
  ------------------
  |  Branch (874:9): [True: 1.26k, False: 0]
  ------------------
  875|  1.26k|      {
  876|  1.26k|	if (last)
  ------------------
  |  Branch (876:6): [True: 0, False: 1.26k]
  ------------------
  877|      0|	  last->next = node->next;
  878|  1.26k|	else
  879|  1.26k|	  g_emissions = node->next;
  880|  1.26k|	return;
  881|  1.26k|      }
  882|  1.26k|  g_assert_not_reached ();
  ------------------
  |  |  230|  1.26k|#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.26k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  883|      0|}
gsignal.c:signal_emit_unlocked_R:
 3607|  1.26k|{
 3608|  1.26k|  SignalAccumulator *accumulator;
 3609|  1.26k|  Emission emission;
 3610|  1.26k|  GClosure *class_closure;
 3611|  1.26k|  HandlerList *hlist;
 3612|  1.26k|  Handler *handler_list = NULL;
 3613|  1.26k|  GValue *return_accu, accu = G_VALUE_INIT;
  ------------------
  |  |  202|  1.26k|#define G_VALUE_INIT  { 0, { { 0 } } }
  ------------------
 3614|  1.26k|  guint signal_id;
 3615|  1.26k|  gulong max_sequential_handler_number;
 3616|  1.26k|  gboolean return_value_altered = FALSE;
  ------------------
  |  |  814|  1.26k|#define	FALSE	(0)
  ------------------
 3617|       |  
 3618|  1.26k|  TRACE(GOBJECT_SIGNAL_EMIT(node->signal_id, detail, instance, G_TYPE_FROM_INSTANCE (instance)));
 3619|       |
 3620|  1.26k|  SIGNAL_LOCK ();
  ------------------
  |  |  328|  1.26k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  1.26k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  1.26k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3621|  1.26k|  signal_id = node->signal_id;
 3622|       |
 3623|  1.26k|  if (node->flags & G_SIGNAL_NO_RECURSE)
  ------------------
  |  Branch (3623:7): [True: 1.26k, False: 0]
  ------------------
 3624|  1.26k|    {
 3625|  1.26k|      Emission *node = emission_find (signal_id, detail, instance);
 3626|       |      
 3627|  1.26k|      if (node)
  ------------------
  |  Branch (3627:11): [True: 0, False: 1.26k]
  ------------------
 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.26k|    }
 3634|  1.26k|  accumulator = node->accumulator;
 3635|  1.26k|  if (accumulator)
  ------------------
  |  Branch (3635:7): [True: 0, False: 1.26k]
  ------------------
 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.26k|  else
 3643|  1.26k|    return_accu = emission_return;
 3644|  1.26k|  emission.instance = instance;
 3645|  1.26k|  emission.ihint.signal_id = node->signal_id;
 3646|  1.26k|  emission.ihint.detail = detail;
 3647|  1.26k|  emission.ihint.run_type = 0;
 3648|  1.26k|  emission.state = 0;
 3649|  1.26k|  emission.chain_type = G_TYPE_NONE;
  ------------------
  |  |   62|  1.26k|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|  1.26k|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|  1.26k|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3650|  1.26k|  emission_push (&emission);
 3651|  1.26k|  class_closure = signal_lookup_closure (node, instance);
 3652|       |  
 3653|  1.26k| EMIT_RESTART:
 3654|       |  
 3655|  1.26k|  if (handler_list)
  ------------------
  |  Branch (3655:7): [True: 0, False: 1.26k]
  ------------------
 3656|      0|    handler_unref_R (signal_id, instance, handler_list);
 3657|  1.26k|  max_sequential_handler_number = g_handler_sequential_number;
 3658|  1.26k|  hlist = handler_list_lookup (signal_id, instance);
 3659|  1.26k|  handler_list = hlist ? hlist->handlers : NULL;
  ------------------
  |  Branch (3659:18): [True: 1.26k, False: 0]
  ------------------
 3660|  1.26k|  if (handler_list)
  ------------------
  |  Branch (3660:7): [True: 1.26k, False: 0]
  ------------------
 3661|  1.26k|    handler_ref (handler_list);
 3662|       |  
 3663|  1.26k|  emission.ihint.run_type = G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN;
 3664|       |  
 3665|  1.26k|  if ((node->flags & G_SIGNAL_RUN_FIRST) && class_closure)
  ------------------
  |  Branch (3665:7): [True: 1.26k, False: 0]
  |  Branch (3665:45): [True: 1.26k, False: 0]
  ------------------
 3666|  1.26k|    {
 3667|  1.26k|      emission.state = EMISSION_RUN;
 3668|       |
 3669|  1.26k|      emission.chain_type = G_TYPE_FROM_INSTANCE (instance);
  ------------------
  |  |  602|  1.26k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|  1.26k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
 3670|  1.26k|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  1.26k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  1.26k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  1.26k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3671|  1.26k|      g_closure_invoke (class_closure,
 3672|  1.26k|			return_accu,
 3673|  1.26k|			node->n_params + 1,
 3674|  1.26k|			instance_and_params,
 3675|  1.26k|			&emission.ihint);
 3676|  1.26k|      if (!accumulate (&emission.ihint, emission_return, &accu, accumulator) &&
  ------------------
  |  Branch (3676:11): [True: 0, False: 1.26k]
  ------------------
 3677|      0|	  emission.state == EMISSION_RUN)
  ------------------
  |  Branch (3677:4): [True: 0, False: 0]
  ------------------
 3678|      0|	emission.state = EMISSION_STOP;
 3679|  1.26k|      SIGNAL_LOCK ();
  ------------------
  |  |  328|  1.26k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  1.26k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  1.26k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3680|  1.26k|      emission.chain_type = G_TYPE_NONE;
  ------------------
  |  |   62|  1.26k|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|  1.26k|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|  1.26k|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3681|  1.26k|      return_value_altered = TRUE;
  ------------------
  |  |  818|  1.26k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.26k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3682|       |      
 3683|  1.26k|      if (emission.state == EMISSION_STOP)
  ------------------
  |  Branch (3683:11): [True: 0, False: 1.26k]
  ------------------
 3684|      0|	goto EMIT_CLEANUP;
 3685|  1.26k|      else if (emission.state == EMISSION_RESTART)
  ------------------
  |  Branch (3685:16): [True: 0, False: 1.26k]
  ------------------
 3686|      0|	goto EMIT_RESTART;
 3687|  1.26k|    }
 3688|       |  
 3689|  1.26k|  if (node->emission_hooks)
  ------------------
  |  Branch (3689:7): [True: 0, False: 1.26k]
  ------------------
 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.26k|  if (handler_list)
  ------------------
  |  Branch (3721:7): [True: 1.26k, False: 0]
  ------------------
 3722|  1.26k|    {
 3723|  1.26k|      Handler *handler = handler_list;
 3724|       |      
 3725|  1.26k|      emission.state = EMISSION_RUN;
 3726|  1.26k|      handler_ref (handler);
 3727|  1.26k|      do
 3728|  5.04k|	{
 3729|  5.04k|	  Handler *tmp;
 3730|       |	  
 3731|  5.04k|	  if (handler->after)
  ------------------
  |  Branch (3731:8): [True: 0, False: 5.04k]
  ------------------
 3732|      0|	    {
 3733|      0|	      handler_unref_R (signal_id, instance, handler_list);
 3734|      0|	      handler_list = handler;
 3735|      0|	      break;
 3736|      0|	    }
 3737|  5.04k|	  else if (!handler->block_count && (!handler->detail || handler->detail == detail) &&
  ------------------
  |  Branch (3737:13): [True: 5.04k, False: 0]
  |  Branch (3737:39): [True: 0, False: 5.04k]
  |  Branch (3737:59): [True: 2.52k, False: 2.52k]
  ------------------
 3738|  2.52k|		   handler->sequential_number < max_sequential_handler_number)
  ------------------
  |  Branch (3738:6): [True: 2.52k, False: 0]
  ------------------
 3739|  2.52k|	    {
 3740|  2.52k|	      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  2.52k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  2.52k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  2.52k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3741|  2.52k|	      g_closure_invoke (handler->closure,
 3742|  2.52k|				return_accu,
 3743|  2.52k|				node->n_params + 1,
 3744|  2.52k|				instance_and_params,
 3745|  2.52k|				&emission.ihint);
 3746|  2.52k|	      if (!accumulate (&emission.ihint, emission_return, &accu, accumulator) &&
  ------------------
  |  Branch (3746:12): [True: 0, False: 2.52k]
  ------------------
 3747|      0|		  emission.state == EMISSION_RUN)
  ------------------
  |  Branch (3747:5): [True: 0, False: 0]
  ------------------
 3748|      0|		emission.state = EMISSION_STOP;
 3749|  2.52k|	      SIGNAL_LOCK ();
  ------------------
  |  |  328|  2.52k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  2.52k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  2.52k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3750|  2.52k|	      return_value_altered = TRUE;
  ------------------
  |  |  818|  2.52k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  2.52k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3751|       |	      
 3752|  2.52k|	      tmp = emission.state == EMISSION_RUN ? handler->next : NULL;
  ------------------
  |  Branch (3752:14): [True: 2.52k, False: 0]
  ------------------
 3753|  2.52k|	    }
 3754|  2.52k|	  else
 3755|  2.52k|	    tmp = handler->next;
 3756|       |	  
 3757|  5.04k|	  if (tmp)
  ------------------
  |  Branch (3757:8): [True: 3.78k, False: 1.26k]
  ------------------
 3758|  3.78k|	    handler_ref (tmp);
 3759|  5.04k|	  handler_unref_R (signal_id, instance, handler_list);
 3760|  5.04k|	  handler_list = handler;
 3761|  5.04k|	  handler = tmp;
 3762|  5.04k|	}
 3763|  5.04k|      while (handler);
  ------------------
  |  Branch (3763:14): [True: 3.78k, False: 1.26k]
  ------------------
 3764|       |      
 3765|  1.26k|      if (emission.state == EMISSION_STOP)
  ------------------
  |  Branch (3765:11): [True: 0, False: 1.26k]
  ------------------
 3766|      0|	goto EMIT_CLEANUP;
 3767|  1.26k|      else if (emission.state == EMISSION_RESTART)
  ------------------
  |  Branch (3767:16): [True: 0, False: 1.26k]
  ------------------
 3768|      0|	goto EMIT_RESTART;
 3769|  1.26k|    }
 3770|       |  
 3771|  1.26k|  emission.ihint.run_type &= ~G_SIGNAL_RUN_FIRST;
 3772|  1.26k|  emission.ihint.run_type |= G_SIGNAL_RUN_LAST;
 3773|       |  
 3774|  1.26k|  if ((node->flags & G_SIGNAL_RUN_LAST) && class_closure)
  ------------------
  |  Branch (3774:7): [True: 0, False: 1.26k]
  |  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.26k|  if (handler_list)
  ------------------
  |  Branch (3798:7): [True: 1.26k, False: 0]
  ------------------
 3799|  1.26k|    {
 3800|  1.26k|      Handler *handler = handler_list;
 3801|       |      
 3802|  1.26k|      emission.state = EMISSION_RUN;
 3803|  1.26k|      handler_ref (handler);
 3804|  1.26k|      do
 3805|  1.26k|	{
 3806|  1.26k|	  Handler *tmp;
 3807|       |	  
 3808|  1.26k|	  if (handler->after && !handler->block_count && (!handler->detail || handler->detail == detail) &&
  ------------------
  |  Branch (3808:8): [True: 0, False: 1.26k]
  |  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.26k|	  else
 3826|  1.26k|	    tmp = handler->next;
 3827|       |	  
 3828|  1.26k|	  if (tmp)
  ------------------
  |  Branch (3828:8): [True: 0, False: 1.26k]
  ------------------
 3829|      0|	    handler_ref (tmp);
 3830|  1.26k|	  handler_unref_R (signal_id, instance, handler);
 3831|  1.26k|	  handler = tmp;
 3832|  1.26k|	}
 3833|  1.26k|      while (handler);
  ------------------
  |  Branch (3833:14): [True: 0, False: 1.26k]
  ------------------
 3834|       |      
 3835|  1.26k|      if (emission.state == EMISSION_STOP)
  ------------------
  |  Branch (3835:11): [True: 0, False: 1.26k]
  ------------------
 3836|      0|	goto EMIT_CLEANUP;
 3837|  1.26k|      else if (emission.state == EMISSION_RESTART)
  ------------------
  |  Branch (3837:16): [True: 0, False: 1.26k]
  ------------------
 3838|      0|	goto EMIT_RESTART;
 3839|  1.26k|    }
 3840|       |  
 3841|  1.26k| EMIT_CLEANUP:
 3842|       |  
 3843|  1.26k|  emission.ihint.run_type &= ~G_SIGNAL_RUN_LAST;
 3844|  1.26k|  emission.ihint.run_type |= G_SIGNAL_RUN_CLEANUP;
 3845|       |  
 3846|  1.26k|  if ((node->flags & G_SIGNAL_RUN_CLEANUP) && class_closure)
  ------------------
  |  Branch (3846:7): [True: 0, False: 1.26k]
  |  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.26k|  if (handler_list)
  ------------------
  |  Branch (3878:7): [True: 1.26k, False: 0]
  ------------------
 3879|  1.26k|    handler_unref_R (signal_id, instance, handler_list);
 3880|       |  
 3881|  1.26k|  emission_pop (&emission);
 3882|  1.26k|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  1.26k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  1.26k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  1.26k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3883|  1.26k|  if (accumulator)
  ------------------
  |  Branch (3883:7): [True: 0, False: 1.26k]
  ------------------
 3884|      0|    g_value_unset (&accu);
 3885|       |
 3886|  1.26k|  TRACE(GOBJECT_SIGNAL_EMIT_END(node->signal_id, detail, instance, G_TYPE_FROM_INSTANCE (instance)));
 3887|       |
 3888|  1.26k|  return return_value_altered;
 3889|  1.26k|}
gsignal.c:signal_lookup_closure:
 1628|  1.26k|{
 1629|  1.26k|  ClassClosure *cc;
 1630|       |
 1631|  1.26k|  cc = signal_find_class_closure (node, G_TYPE_FROM_INSTANCE (instance));
  ------------------
  |  |  602|  1.26k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|  1.26k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
 1632|  1.26k|  return cc ? cc->closure : NULL;
  ------------------
  |  Branch (1632:10): [True: 1.26k, False: 0]
  ------------------
 1633|  1.26k|}
gsignal.c:remove_invalid_closure_notify:
 3902|  2.96k|{
 3903|  2.96k|  if (handler->has_invalid_closure_notify)
  ------------------
  |  Branch (3903:7): [True: 0, False: 2.96k]
  ------------------
 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|  2.96k|}

g_type_interface_add_prerequisite:
 1565|      5|{
 1566|      5|  TypeNode *iface, *prerequisite_node;
 1567|      5|  IFaceHolder *holders;
 1568|       |  
 1569|      5|  g_return_if_fail (G_TYPE_IS_INTERFACE (interface_type));	/* G_TYPE_IS_INTERFACE() is an external call: _U */
  ------------------
  |  |  630|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      5|      { } \
  |  |  633|      5|    else \
  |  |  634|      5|      { \
  |  |  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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1570|      5|  g_return_if_fail (!g_type_is_a (interface_type, prerequisite_type));
  ------------------
  |  |  630|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      5|      { } \
  |  |  633|      5|    else \
  |  |  634|      5|      { \
  |  |  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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1571|      5|  g_return_if_fail (!g_type_is_a (prerequisite_type, interface_type));
  ------------------
  |  |  630|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      5|      { } \
  |  |  633|      5|    else \
  |  |  634|      5|      { \
  |  |  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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1572|       |  
 1573|      5|  iface = lookup_type_node_I (interface_type);
 1574|      5|  prerequisite_node = lookup_type_node_I (prerequisite_type);
 1575|      5|  if (!iface || !prerequisite_node || !NODE_IS_IFACE (iface))
  ------------------
  |  |  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 (1575:7): [True: 0, False: 5]
  |  Branch (1575:17): [True: 0, False: 5]
  |  Branch (1575:39): [True: 0, False: 5]
  ------------------
 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|      5|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      5|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 1583|      5|  holders = iface_node_get_holders_L (iface);
  ------------------
  |  |  263|      5|#define	iface_node_get_holders_L(node)		((IFaceHolder*) type_get_qdata_L ((node), static_quark_iface_holder))
  ------------------
 1584|      5|  if (holders)
  ------------------
  |  Branch (1584:7): [True: 0, False: 5]
  ------------------
 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|      5|  if (prerequisite_node->is_instantiatable)
  ------------------
  |  Branch (1593:7): [True: 5, False: 0]
  ------------------
 1594|      5|    {
 1595|      5|      guint i;
 1596|       |      
 1597|       |      /* can have at most one publicly installable instantiatable prerequisite */
 1598|      5|      for (i = 0; i < IFACE_NODE_N_PREREQUISITES (iface); i++)
  ------------------
  |  |  261|      5|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  |  Branch (1598:19): [True: 0, False: 5]
  ------------------
 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|     10|      for (i = 0; i < prerequisite_node->n_supers + 1u; i++)
  ------------------
  |  Branch (1613:19): [True: 5, False: 5]
  ------------------
 1614|      5|	type_iface_add_prerequisite_W (iface, lookup_type_node_I (prerequisite_node->supers[i]));
 1615|      5|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      5|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 1616|      5|    }
 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|      5|}
g_type_create_instance:
 1843|  1.02M|{
 1844|  1.02M|  TypeNode *node;
 1845|  1.02M|  GTypeInstance *instance;
 1846|  1.02M|  GTypeClass *class;
 1847|  1.02M|  gchar *allocated;
 1848|  1.02M|  gint private_size;
 1849|  1.02M|  gint ivar_size;
 1850|  1.02M|  guint i;
 1851|       |
 1852|  1.02M|  node = lookup_type_node_I (type);
 1853|  1.02M|  if (!node || !node->is_instantiatable)
  ------------------
  |  Branch (1853:7): [True: 0, False: 1.02M]
  |  Branch (1853:16): [True: 0, False: 1.02M]
  ------------------
 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.02M|  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.02M]
  ------------------
 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.02M|  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.02M|  private_size = node->data->instance.private_size;
 1885|  1.02M|  ivar_size = node->data->instance.instance_size;
 1886|       |
 1887|  1.02M|#ifdef ENABLE_VALGRIND
 1888|  1.02M|  if (private_size && RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|   343k|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|   343k|    __extension__                                                 \
  |  |  |  |  414|   343k|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|   343k|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|   343k|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|   343k|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|   343k|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|   343k|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|   343k|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|   343k|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|   343k|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|   343k|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|   343k|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|   343k|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|   343k|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|   343k|                     : "cc", "memory"                             \
  |  |  |  |  428|   343k|                    );                                            \
  |  |  |  |  429|   343k|    _zzq_result;                                                  \
  |  |  |  |  430|   343k|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 343k]
  |  |  ------------------
  ------------------
  |  Branch (1888:7): [True: 343k, False: 683k]
  ------------------
 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.02M|  else
 1902|  1.02M|#endif
 1903|  1.02M|    allocated = g_slice_alloc0 (private_size + ivar_size);
 1904|       |
 1905|  1.02M|  instance = (GTypeInstance *) (allocated + private_size);
 1906|       |
 1907|  3.31M|  for (i = node->n_supers; i > 0; i--)
  ------------------
  |  Branch (1907:28): [True: 2.29M, False: 1.02M]
  ------------------
 1908|  2.29M|    {
 1909|  2.29M|      TypeNode *pnode;
 1910|       |      
 1911|  2.29M|      pnode = lookup_type_node_I (node->supers[i]);
 1912|  2.29M|      if (pnode->data->instance.instance_init)
  ------------------
  |  Branch (1912:11): [True: 2.29M, False: 0]
  ------------------
 1913|  2.29M|	{
 1914|  2.29M|	  instance->g_class = pnode->data->instance.class;
 1915|  2.29M|	  pnode->data->instance.instance_init (instance, class);
 1916|  2.29M|	}
 1917|  2.29M|    }
 1918|       |
 1919|  1.02M|  instance->g_class = class;
 1920|  1.02M|  if (node->data->instance.instance_init)
  ------------------
  |  Branch (1920:7): [True: 1.02M, False: 0]
  ------------------
 1921|  1.02M|    node->data->instance.instance_init (instance, class);
 1922|       |
 1923|  1.02M|#ifdef	G_ENABLE_DEBUG
 1924|  1.02M|  IF_DEBUG (INSTANCE_COUNT)
  ------------------
  |  |   42|  1.02M|#define	IF_DEBUG(debug_type)	if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type)
  |  |  ------------------
  |  |  |  Branch (42:34): [True: 0, False: 1.02M]
  |  |  ------------------
  ------------------
 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.02M|#endif
 1929|       |
 1930|  1.02M|  TRACE(GOBJECT_OBJECT_NEW(instance, type));
 1931|       |
 1932|  1.02M|  return instance;
 1933|  1.02M|}
g_type_free_instance:
 1947|  1.02M|{
 1948|  1.02M|  TypeNode *node;
 1949|  1.02M|  GTypeClass *class;
 1950|  1.02M|  gchar *allocated;
 1951|  1.02M|  gint private_size;
 1952|  1.02M|  gint ivar_size;
 1953|       |
 1954|  1.02M|  g_return_if_fail (instance != NULL && instance->g_class != NULL);
  ------------------
  |  |  630|  1.02M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.02M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.02M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.02M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.02M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.02M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.07M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.02M, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.02M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.02M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.02M|   else                                         \
  |  |  |  |  |  | 1021|  1.02M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.02M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.02M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.02M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.02M|      { } \
  |  |  633|  1.02M|    else \
  |  |  634|  1.02M|      { \
  |  |  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.02M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.02M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.02M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1955|       |  
 1956|  1.02M|  class = instance->g_class;
 1957|  1.02M|  node = lookup_type_node_I (class->g_type);
 1958|  1.02M|  if (!node || !node->is_instantiatable || !node->data || node->data->class.class != (gpointer) class)
  ------------------
  |  Branch (1958:7): [True: 0, False: 1.02M]
  |  Branch (1958:16): [True: 0, False: 1.02M]
  |  Branch (1958:44): [True: 0, False: 1.02M]
  |  Branch (1958:59): [True: 0, False: 1.02M]
  ------------------
 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.02M|  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.02M]
  ------------------
 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.02M|  instance->g_class = NULL;
 1973|  1.02M|  private_size = node->data->instance.private_size;
 1974|  1.02M|  ivar_size = node->data->instance.instance_size;
 1975|  1.02M|  allocated = ((gchar *) instance) - private_size;
 1976|       |
 1977|  1.02M|#ifdef G_ENABLE_DEBUG
 1978|  1.02M|  memset (allocated, 0xaa, ivar_size + private_size);
 1979|  1.02M|#endif
 1980|       |
 1981|  1.02M|#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.02M|  if (private_size && RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|   343k|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|   343k|    __extension__                                                 \
  |  |  |  |  414|   343k|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|   343k|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|   343k|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|   343k|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|   343k|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|   343k|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|   343k|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|   343k|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|   343k|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|   343k|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|   343k|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|   343k|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|   343k|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|   343k|                     : "cc", "memory"                             \
  |  |  |  |  428|   343k|                    );                                            \
  |  |  |  |  429|   343k|    _zzq_result;                                                  \
  |  |  |  |  430|   343k|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 343k]
  |  |  ------------------
  ------------------
  |  Branch (1985:7): [True: 343k, False: 683k]
  ------------------
 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.02M|  else
 1999|  1.02M|#endif
 2000|  1.02M|    g_slice_free1 (private_size + ivar_size, allocated);
 2001|       |
 2002|  1.02M|#ifdef	G_ENABLE_DEBUG
 2003|  1.02M|  IF_DEBUG (INSTANCE_COUNT)
  ------------------
  |  |   42|  1.02M|#define	IF_DEBUG(debug_type)	if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type)
  |  |  ------------------
  |  |  |  Branch (42:34): [True: 0, False: 1.02M]
  |  |  ------------------
  ------------------
 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.02M|#endif
 2008|       |
 2009|  1.02M|  g_type_class_unref (class);
 2010|  1.02M|}
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|     25|{
 2754|     25|  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|     25|  g_return_val_if_fail (class_size <= G_MAXUINT16, G_TYPE_INVALID);
  ------------------
  |  |  643|     25|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     25|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     25|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     25|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     25| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     25|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     25|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     25|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 25, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     25|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     25|   else                                         \
  |  |  |  |  |  | 1021|     25|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     25|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     25|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 25, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     25|      { } \
  |  |  646|     25|    else \
  |  |  647|     25|      { \
  |  |  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|     25|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     25|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 25]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2760|     25|  g_return_val_if_fail (instance_size <= G_MAXUINT16, G_TYPE_INVALID);
  ------------------
  |  |  643|     25|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     25|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     25|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     25|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     25| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     25|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     25|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     25|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 25, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     25|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     25|   else                                         \
  |  |  |  |  |  | 1021|     25|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     25|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     25|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 25, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     25|      { } \
  |  |  646|     25|    else \
  |  |  647|     25|      { \
  |  |  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|     25|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     25|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 25]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2761|       |
 2762|     25|  info.class_size = class_size;
 2763|     25|  info.base_init = NULL;
 2764|     25|  info.base_finalize = NULL;
 2765|     25|  info.class_init = class_init;
 2766|     25|  info.class_finalize = NULL;
 2767|     25|  info.class_data = NULL;
 2768|     25|  info.instance_size = instance_size;
 2769|     25|  info.n_preallocs = 0;
 2770|     25|  info.instance_init = instance_init;
 2771|     25|  info.value_table = NULL;
 2772|       |
 2773|     25|  return g_type_register_static (parent_type, type_name, &info, flags);
 2774|     25|}
g_type_register_static:
 2796|     77|{
 2797|     77|  TypeNode *pnode, *node;
 2798|     77|  GType type = 0;
 2799|       |  
 2800|     77|  g_assert_type_system_initialized ();
  ------------------
  |  |  140|     77|  g_assert (static_quark_type_flags)
  |  |  ------------------
  |  |  |  |  231|     77|#define g_assert(expr)                  G_STMT_START { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|     77|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  232|     77|                                             if G_LIKELY (expr) ; else \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1024|     77|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1016|     77| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   54|     77|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|     77|   int _g_boolean_var_;                         \
  |  |  |  |  |  |  |  | 1018|     77|   if (expr)                                    \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1018:8): [True: 77, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1019|     77|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  |  |  | 1020|     77|   else                                         \
  |  |  |  |  |  |  |  | 1021|     77|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  |  |  | 1022|     77|   _g_boolean_var_;                             \
  |  |  |  |  |  |  |  | 1023|     77|})
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1024:25): [True: 77, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  233|     77|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  |  |  ------------------
  |  |  |  |  234|      0|                                                                         #expr); \
  |  |  |  |  235|     77|                                        } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|     77|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 77]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2801|     77|  g_return_val_if_fail (parent_type > 0, 0);
  ------------------
  |  |  643|     77|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     77|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     77|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     77|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     77| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     77|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     77|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     77|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     77|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     77|   else                                         \
  |  |  |  |  |  | 1021|     77|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     77|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     77|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     77|      { } \
  |  |  646|     77|    else \
  |  |  647|     77|      { \
  |  |  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|     77|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     77|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2802|     77|  g_return_val_if_fail (type_name != NULL, 0);
  ------------------
  |  |  643|     77|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     77|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     77|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     77|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     77| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     77|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     77|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     77|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     77|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     77|   else                                         \
  |  |  |  |  |  | 1021|     77|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     77|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     77|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     77|      { } \
  |  |  646|     77|    else \
  |  |  647|     77|      { \
  |  |  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|     77|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     77|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2803|     77|  g_return_val_if_fail (info != NULL, 0);
  ------------------
  |  |  643|     77|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     77|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     77|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     77|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     77| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     77|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     77|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     77|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     77|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     77|   else                                         \
  |  |  |  |  |  | 1021|     77|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     77|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     77|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 77, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     77|      { } \
  |  |  646|     77|    else \
  |  |  647|     77|      { \
  |  |  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|     77|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     77|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2804|       |  
 2805|     77|  if (!check_type_name_I (type_name) ||
  ------------------
  |  Branch (2805:7): [True: 0, False: 77]
  ------------------
 2806|     77|      !check_derivation_I (parent_type, type_name))
  ------------------
  |  Branch (2806:7): [True: 0, False: 77]
  ------------------
 2807|      0|    return 0;
 2808|     77|  if (info->class_finalize)
  ------------------
  |  Branch (2808:7): [True: 0, False: 77]
  ------------------
 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|     77|  pnode = lookup_type_node_I (parent_type);
 2816|     77|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|     77|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2817|     77|  type_data_ref_Wm (pnode);
 2818|     77|  if (check_type_info_I (pnode, NODE_FUNDAMENTAL_TYPE (pnode), type_name, info))
  ------------------
  |  |  254|     77|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (2818:7): [True: 77, False: 0]
  ------------------
 2819|     77|    {
 2820|     77|      node = type_node_new_W (pnode, type_name, NULL);
 2821|     77|      type_add_flags_W (node, flags);
 2822|     77|      type = NODE_TYPE (node);
  ------------------
  |  |  252|     77|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2823|     77|      type_data_make_W (node, info,
 2824|     77|			check_value_table_I (type_name, info->value_table) ? info->value_table : NULL);
  ------------------
  |  Branch (2824:4): [True: 2, False: 75]
  ------------------
 2825|     77|    }
 2826|     77|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     77|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2827|       |  
 2828|     77|  return type;
 2829|     77|}
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.02M|{
 2964|  1.02M|  TypeNode *node;
 2965|  1.02M|  GType ptype;
 2966|  1.02M|  gboolean holds_ref;
 2967|  1.02M|  GTypeClass *pclass;
 2968|       |
 2969|       |  /* optimize for common code path */
 2970|  1.02M|  node = lookup_type_node_I (type);
 2971|  1.02M|  if (!node || !node->is_classed)
  ------------------
  |  Branch (2971:7): [True: 0, False: 1.02M]
  |  Branch (2971:16): [True: 0, False: 1.02M]
  ------------------
 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.02M|  if (G_LIKELY (type_data_ref_U (node)))
  ------------------
  |  | 1024|  1.02M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  1.02M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.02M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.02M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 1.02M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.02M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.02M|   else                                         \
  |  |  |  | 1021|  1.02M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.02M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.02M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 1.02M, False: 0]
  |  |  ------------------
  ------------------
 2979|  1.02M|    {
 2980|  1.02M|      if (G_LIKELY (g_atomic_int_get (&node->data->class.init_state) == INITIALIZED))
  ------------------
  |  | 1024|  1.02M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  1.02M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.02M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.07M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [Folded, False: 1.02M]
  |  |  |  |  |  Branch (1018:8): [True: 1.02M, False: 29]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.02M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.02M|   else                                         \
  |  |  |  | 1021|  1.02M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.02M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.02M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 1.02M, False: 29]
  |  |  ------------------
  ------------------
 2981|  1.02M|        return node->data->class.class;
 2982|     29|      holds_ref = TRUE;
  ------------------
  |  |  818|     29|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     29|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2983|     29|    }
 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|     29|  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|     29|  ptype = NODE_PARENT_TYPE (node);
  ------------------
  |  |  253|     29|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 2996|     29|  pclass = ptype ? g_type_class_ref (ptype) : NULL;
  ------------------
  |  Branch (2996:12): [True: 27, False: 2]
  ------------------
 2997|       |
 2998|     29|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|     29|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2999|       |
 3000|     29|  if (!holds_ref)
  ------------------
  |  Branch (3000:7): [True: 0, False: 29]
  ------------------
 3001|      0|    type_data_ref_Wm (node);
 3002|       |
 3003|     29|  if (!node->data->class.class) /* class uninitialized */
  ------------------
  |  Branch (3003:7): [True: 20, False: 9]
  ------------------
 3004|     20|    type_class_init_Wm (node, pclass);
 3005|       |
 3006|     29|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     29|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 3007|       |
 3008|     29|  if (pclass)
  ------------------
  |  Branch (3008:7): [True: 27, False: 2]
  ------------------
 3009|     27|    g_type_class_unref (pclass);
 3010|       |
 3011|     29|  g_rec_mutex_unlock (&class_init_rec_mutex);
 3012|       |
 3013|     29|  return node->data->class.class;
 3014|  1.02M|}
g_type_class_unref:
 3027|  1.02M|{
 3028|  1.02M|  TypeNode *node;
 3029|  1.02M|  GTypeClass *class = g_class;
 3030|       |  
 3031|  1.02M|  g_return_if_fail (g_class != NULL);
  ------------------
  |  |  630|  1.02M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.02M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.02M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.02M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.02M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.02M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.02M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.02M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.02M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.02M|   else                                         \
  |  |  |  |  |  | 1021|  1.02M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.02M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.02M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.02M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.02M|      { } \
  |  |  633|  1.02M|    else \
  |  |  634|  1.02M|      { \
  |  |  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.02M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.02M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.02M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3032|       |  
 3033|  1.02M|  node = lookup_type_node_I (class->g_type);
 3034|  1.02M|  if (node && node->is_classed && NODE_REFCOUNT (node))
  ------------------
  |  |  256|  1.02M|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  1.02M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  1.02M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.02M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  1.02M|    gint gaig_temp;                                                          \
  |  |  |  |   99|  1.02M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1.02M]
  |  |  |  |  ------------------
  |  |  |  |  100|  1.02M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  1.02M|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  1.02M|  }))
  |  |  ------------------
  |  |  |  Branch (256:49): [True: 1.02M, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3034:7): [True: 1.02M, False: 0]
  |  Branch (3034:15): [True: 1.02M, False: 0]
  ------------------
 3035|  1.02M|    type_data_unref_U (node, FALSE);
  ------------------
  |  |  814|  1.02M|#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.02M|	       type_descriptive_name_I (class->g_type));
 3039|  1.02M|}
g_type_class_peek:
 3082|   346k|{
 3083|   346k|  TypeNode *node;
 3084|   346k|  gpointer class;
 3085|       |  
 3086|   346k|  node = lookup_type_node_I (type);
 3087|   346k|  if (node && node->is_classed && NODE_REFCOUNT (node) &&
  ------------------
  |  |  256|   692k|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|   346k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|   346k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   346k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|   346k|    gint gaig_temp;                                                          \
  |  |  |  |   99|   346k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 346k]
  |  |  |  |  ------------------
  |  |  |  |  100|   346k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|   346k|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|   346k|  }))
  |  |  ------------------
  |  |  |  Branch (256:49): [True: 346k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3087:7): [True: 346k, False: 0]
  |  Branch (3087:15): [True: 346k, False: 0]
  ------------------
 3088|   346k|      g_atomic_int_get (&node->data->class.init_state) == INITIALIZED)
  ------------------
  |  |   96|   346k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|   346k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|   346k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|   346k|    gint gaig_temp;                                                          \
  |  |   99|   346k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 346k]
  |  |  ------------------
  |  |  100|   346k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|   346k|    (gint) gaig_temp;                                                        \
  |  |  102|   346k|  }))
  ------------------
  |  Branch (3088:7): [True: 346k, False: 0]
  ------------------
 3089|       |    /* ref_count _may_ be 0 */
 3090|   346k|    class = node->data->class.class;
 3091|      0|  else
 3092|      0|    class = NULL;
 3093|       |  
 3094|   346k|  return class;
 3095|   346k|}
g_type_class_peek_static:
 3112|  1.02M|{
 3113|  1.02M|  TypeNode *node;
 3114|  1.02M|  gpointer class;
 3115|       |  
 3116|  1.02M|  node = lookup_type_node_I (type);
 3117|  1.02M|  if (node && node->is_classed && NODE_REFCOUNT (node) &&
  ------------------
  |  |  256|  2.05M|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  1.02M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  1.02M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.02M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  1.02M|    gint gaig_temp;                                                          \
  |  |  |  |   99|  1.02M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1.02M]
  |  |  |  |  ------------------
  |  |  |  |  100|  1.02M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  1.02M|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  1.02M|  }))
  |  |  ------------------
  |  |  |  Branch (256:49): [True: 1.02M, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3117:7): [True: 1.02M, False: 0]
  |  Branch (3117:15): [True: 1.02M, False: 0]
  ------------------
 3118|  1.02M|      /* peek only static types: */ node->plugin == NULL &&
  ------------------
  |  Branch (3118:37): [True: 1.02M, False: 0]
  ------------------
 3119|  1.02M|      g_atomic_int_get (&node->data->class.init_state) == INITIALIZED)
  ------------------
  |  |   96|  1.02M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  1.02M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.02M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  1.02M|    gint gaig_temp;                                                          \
  |  |   99|  1.02M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 1.02M]
  |  |  ------------------
  |  |  100|  1.02M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  1.02M|    (gint) gaig_temp;                                                        \
  |  |  102|  1.02M|  }))
  ------------------
  |  Branch (3119:7): [True: 1.02M, False: 7]
  ------------------
 3120|       |    /* ref_count _may_ be 0 */
 3121|  1.02M|    class = node->data->class.class;
 3122|      7|  else
 3123|      7|    class = NULL;
 3124|       |  
 3125|  1.02M|  return class;
 3126|  1.02M|}
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|  6.95M|{
 3185|  6.95M|  TypeNode *node;
 3186|  6.95M|  TypeNode *iface;
 3187|  6.95M|  gpointer vtable = NULL;
 3188|  6.95M|  GTypeClass *class = instance_class;
 3189|       |  
 3190|  6.95M|  g_return_val_if_fail (instance_class != NULL, NULL);
  ------------------
  |  |  643|  6.95M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  6.95M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  6.95M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  6.95M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  6.95M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  6.95M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  6.95M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  6.95M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 6.95M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  6.95M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  6.95M|   else                                         \
  |  |  |  |  |  | 1021|  6.95M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  6.95M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  6.95M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 6.95M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  6.95M|      { } \
  |  |  646|  6.95M|    else \
  |  |  647|  6.95M|      { \
  |  |  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.95M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  6.95M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 6.95M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3191|       |  
 3192|  6.95M|  node = lookup_type_node_I (class->g_type);
 3193|  6.95M|  iface = lookup_type_node_I (iface_type);
 3194|  6.95M|  if (node && node->is_instantiatable && iface)
  ------------------
  |  Branch (3194:7): [True: 6.95M, False: 0]
  |  Branch (3194:15): [True: 6.95M, False: 0]
  |  Branch (3194:42): [True: 6.95M, False: 0]
  ------------------
 3195|  6.95M|    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|  6.95M|  return vtable;
 3200|  6.95M|}
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|    165|{
 3409|    165|  GType type = 0;
 3410|       |  
 3411|    165|  g_return_val_if_fail (name != NULL, 0);
  ------------------
  |  |  643|    165|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    165|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    165|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    165|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    165| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    165|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    165|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    165|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 165, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    165|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    165|   else                                         \
  |  |  |  |  |  | 1021|    165|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    165|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    165|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 165, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    165|      { } \
  |  |  646|    165|    else \
  |  |  647|    165|      { \
  |  |  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|    165|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    165|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 165]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3412|       |  
 3413|    165|  G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|    165|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 3414|    165|  type = (GType) g_hash_table_lookup (static_type_nodes_ht, name);
 3415|    165|  G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|    165|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 3416|       |  
 3417|    165|  return type;
 3418|    165|}
g_type_parent:
 3431|  15.9k|{
 3432|  15.9k|  TypeNode *node;
 3433|       |  
 3434|  15.9k|  node = lookup_type_node_I (type);
 3435|       |  
 3436|  15.9k|  return node ? NODE_PARENT_TYPE (node) : 0;
  ------------------
  |  |  253|  15.9k|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
  |  Branch (3436:10): [True: 15.9k, False: 0]
  ------------------
 3437|  15.9k|}
g_type_depth:
 3450|      9|{
 3451|      9|  TypeNode *node;
 3452|       |  
 3453|      9|  node = lookup_type_node_I (type);
 3454|       |  
 3455|      9|  return node ? node->n_supers + 1 : 0;
  ------------------
  |  Branch (3455:10): [True: 9, False: 0]
  ------------------
 3456|      9|}
g_type_is_a:
 3571|   697k|{
 3572|   697k|  TypeNode *node, *iface_node;
 3573|   697k|  gboolean is_a;
 3574|       |
 3575|   697k|  if (type == iface_type)
  ------------------
  |  Branch (3575:7): [True: 1, False: 697k]
  ------------------
 3576|      1|    return TRUE;
  ------------------
  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3577|       |  
 3578|   697k|  node = lookup_type_node_I (type);
 3579|   697k|  iface_node = lookup_type_node_I (iface_type);
 3580|   697k|  is_a = node && iface_node && type_node_conforms_to_U (node, iface_node, TRUE, TRUE);
  ------------------
  |  |  818|   697k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   697k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                is_a = node && iface_node && type_node_conforms_to_U (node, iface_node, TRUE, TRUE);
  ------------------
  |  |  818|   697k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   697k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  |  Branch (3580:10): [True: 697k, False: 0]
  |  Branch (3580:18): [True: 697k, False: 0]
  |  Branch (3580:32): [True: 697k, False: 67]
  ------------------
 3581|       |  
 3582|   697k|  return is_a;
 3583|   697k|}
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.02M|{
 4053|  1.02M|  TypeNode *node = lookup_type_node_I (type_id);
 4054|       |  
 4055|  1.02M|  return node ? NODE_FUNDAMENTAL_TYPE (node) : 0;
  ------------------
  |  |  254|  1.02M|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (4055:10): [True: 1.02M, False: 0]
  ------------------
 4056|  1.02M|}
g_type_check_instance_is_a:
 4061|  14.8M|{
 4062|  14.8M|  TypeNode *node, *iface;
 4063|  14.8M|  gboolean check;
 4064|       |  
 4065|  14.8M|  if (!type_instance || !type_instance->g_class)
  ------------------
  |  Branch (4065:7): [True: 0, False: 14.8M]
  |  Branch (4065:25): [True: 0, False: 14.8M]
  ------------------
 4066|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 4067|       |  
 4068|  14.8M|  node = lookup_type_node_I (type_instance->g_class->g_type);
 4069|  14.8M|  iface = lookup_type_node_I (iface_type);
 4070|  14.8M|  check = node && node->is_instantiatable && iface && type_node_conforms_to_U (node, iface, TRUE, FALSE);
  ------------------
  |  |  818|  14.8M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  14.8M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                check = node && node->is_instantiatable && iface && type_node_conforms_to_U (node, iface, TRUE, FALSE);
  ------------------
  |  |  814|  14.8M|#define	FALSE	(0)
  ------------------
  |  Branch (4070:11): [True: 14.8M, False: 0]
  |  Branch (4070:19): [True: 14.8M, False: 0]
  |  Branch (4070:46): [True: 14.8M, False: 0]
  |  Branch (4070:55): [True: 14.8M, False: 0]
  ------------------
 4071|       |  
 4072|  14.8M|  return check;
 4073|  14.8M|}
g_type_check_instance_is_fundamentally_a:
 4078|  3.45M|{
 4079|  3.45M|  TypeNode *node;
 4080|  3.45M|  if (!type_instance || !type_instance->g_class)
  ------------------
  |  Branch (4080:7): [True: 0, False: 3.45M]
  |  Branch (4080:25): [True: 0, False: 3.45M]
  ------------------
 4081|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 4082|  3.45M|  node = lookup_type_node_I (type_instance->g_class->g_type);
 4083|  3.45M|  return node && (NODE_FUNDAMENTAL_TYPE(node) == fundamental_type);
  ------------------
  |  |  254|  3.45M|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (4083:10): [True: 3.45M, False: 0]
  |  Branch (4083:18): [True: 3.45M, False: 0]
  ------------------
 4084|  3.45M|}
g_type_check_class_is_a:
 4089|     45|{
 4090|     45|  TypeNode *node, *iface;
 4091|     45|  gboolean check;
 4092|       |  
 4093|     45|  if (!type_class)
  ------------------
  |  Branch (4093:7): [True: 0, False: 45]
  ------------------
 4094|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 4095|       |  
 4096|     45|  node = lookup_type_node_I (type_class->g_type);
 4097|     45|  iface = lookup_type_node_I (is_a_type);
 4098|     45|  check = node && node->is_classed && iface && type_node_conforms_to_U (node, iface, FALSE, FALSE);
  ------------------
  |  |  814|     45|#define	FALSE	(0)
  ------------------
                check = node && node->is_classed && iface && type_node_conforms_to_U (node, iface, FALSE, FALSE);
  ------------------
  |  |  814|     45|#define	FALSE	(0)
  ------------------
  |  Branch (4098:11): [True: 45, False: 0]
  |  Branch (4098:19): [True: 45, False: 0]
  |  Branch (4098:39): [True: 45, False: 0]
  |  Branch (4098:48): [True: 45, False: 0]
  ------------------
 4099|       |  
 4100|     45|  return check;
 4101|     45|}
g_type_check_instance_cast:
 4106|  24.7M|{
 4107|  24.7M|  if (type_instance)
  ------------------
  |  Branch (4107:7): [True: 24.7M, False: 1.48k]
  ------------------
 4108|  24.7M|    {
 4109|  24.7M|      if (type_instance->g_class)
  ------------------
  |  Branch (4109:11): [True: 24.7M, False: 0]
  ------------------
 4110|  24.7M|	{
 4111|  24.7M|	  TypeNode *node, *iface;
 4112|  24.7M|	  gboolean is_instantiatable, check;
 4113|       |	  
 4114|  24.7M|	  node = lookup_type_node_I (type_instance->g_class->g_type);
 4115|  24.7M|	  is_instantiatable = node && node->is_instantiatable;
  ------------------
  |  Branch (4115:24): [True: 24.7M, False: 0]
  |  Branch (4115:32): [True: 24.7M, False: 0]
  ------------------
 4116|  24.7M|	  iface = lookup_type_node_I (iface_type);
 4117|  24.7M|	  check = 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 = is_instantiatable && iface && type_node_conforms_to_U (node, iface, TRUE, FALSE);
  ------------------
  |  |  814|  24.7M|#define	FALSE	(0)
  ------------------
  |  Branch (4117:12): [True: 24.7M, False: 0]
  |  Branch (4117:33): [True: 24.7M, False: 0]
  |  Branch (4117:42): [True: 24.7M, False: 0]
  ------------------
 4118|  24.7M|	  if (check)
  ------------------
  |  Branch (4118:8): [True: 24.7M, False: 0]
  ------------------
 4119|  24.7M|	    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.7M|		   type_descriptive_name_I (iface_type));
 4133|  24.7M|    }
 4134|       |  
 4135|  1.48k|  return type_instance;
 4136|  24.7M|}
g_type_check_class_cast:
 4141|  2.22M|{
 4142|  2.22M|  if (type_class)
  ------------------
  |  Branch (4142:7): [True: 2.22M, False: 0]
  ------------------
 4143|  2.22M|    {
 4144|  2.22M|      TypeNode *node, *iface;
 4145|  2.22M|      gboolean is_classed, check;
 4146|       |      
 4147|  2.22M|      node = lookup_type_node_I (type_class->g_type);
 4148|  2.22M|      is_classed = node && node->is_classed;
  ------------------
  |  Branch (4148:20): [True: 2.22M, False: 0]
  |  Branch (4148:28): [True: 2.22M, False: 0]
  ------------------
 4149|  2.22M|      iface = lookup_type_node_I (is_a_type);
 4150|  2.22M|      check = is_classed && iface && type_node_conforms_to_U (node, iface, FALSE, FALSE);
  ------------------
  |  |  814|  2.22M|#define	FALSE	(0)
  ------------------
                    check = is_classed && iface && type_node_conforms_to_U (node, iface, FALSE, FALSE);
  ------------------
  |  |  814|  2.22M|#define	FALSE	(0)
  ------------------
  |  Branch (4150:15): [True: 2.22M, False: 0]
  |  Branch (4150:29): [True: 2.22M, False: 0]
  |  Branch (4150:38): [True: 2.22M, False: 0]
  ------------------
 4151|  2.22M|      if (check)
  ------------------
  |  Branch (4151:11): [True: 2.22M, False: 0]
  ------------------
 4152|  2.22M|	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.22M|	       type_descriptive_name_I (is_a_type));
 4166|      0|  return type_class;
 4167|  2.22M|}
g_type_check_instance:
 4180|  2.40M|{
 4181|       |  /* this function is just here to make the signal system
 4182|       |   * conveniently elaborated on instance checks
 4183|       |   */
 4184|  2.40M|  if (type_instance)
  ------------------
  |  Branch (4184:7): [True: 2.40M, False: 0]
  ------------------
 4185|  2.40M|    {
 4186|  2.40M|      if (type_instance->g_class)
  ------------------
  |  Branch (4186:11): [True: 2.40M, False: 0]
  ------------------
 4187|  2.40M|	{
 4188|  2.40M|	  TypeNode *node = lookup_type_node_I (type_instance->g_class->g_type);
 4189|       |	  
 4190|  2.40M|	  if (node && node->is_instantiatable)
  ------------------
  |  Branch (4190:8): [True: 2.40M, False: 0]
  |  Branch (4190:16): [True: 2.40M, False: 0]
  ------------------
 4191|  2.40M|	    return TRUE;
  ------------------
  |  |  818|  2.40M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  2.40M|#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|  2.40M|    }
 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|  2.40M|}
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|   346k|{
 4255|   346k|  return value && type_check_is_value_type_U (value->g_type);
  ------------------
  |  Branch (4255:10): [True: 346k, False: 0]
  |  Branch (4255:19): [True: 346k, False: 0]
  ------------------
 4256|   346k|}
g_type_check_value_holds:
 4261|   345k|{
 4262|   345k|  return value && type_check_is_value_type_U (value->g_type) && g_type_is_a (value->g_type, type);
  ------------------
  |  Branch (4262:10): [True: 345k, False: 0]
  |  Branch (4262:19): [True: 345k, False: 0]
  |  Branch (4262:65): [True: 345k, False: 0]
  ------------------
 4263|   345k|}
g_type_value_table_peek:
 4280|  1.04M|{
 4281|  1.04M|  GTypeValueTable *vtable = NULL;
 4282|  1.04M|  TypeNode *node = lookup_type_node_I (type);
 4283|  1.04M|  gboolean has_refed_data, has_table;
 4284|       |
 4285|  1.04M|  if (node && NODE_REFCOUNT (node) && node->mutatable_check_cache)
  ------------------
  |  |  256|  2.09M|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  1.04M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.04M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  1.04M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.04M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  1.04M|    gint gaig_temp;                                                          \
  |  |  |  |   99|  1.04M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  100|  1.04M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  1.04M|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  1.04M|  }))
  |  |  ------------------
  |  |  |  Branch (256:49): [True: 1.04M, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4285:7): [True: 1.04M, False: 0]
  |  Branch (4285:39): [True: 1.04M, False: 3.78k]
  ------------------
 4286|  1.04M|    return node->data->common.value_table;
 4287|       |
 4288|  3.78k|  G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|  3.78k|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 4289|       |  
 4290|  3.78k| restart_table_peek:
 4291|  3.78k|  has_refed_data = node && node->data && NODE_REFCOUNT (node) > 0;
  ------------------
  |  |  256|  3.78k|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  3.78k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.78k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  3.78k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  3.78k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  3.78k|    gint gaig_temp;                                                          \
  |  |  |  |   99|  3.78k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 3.78k]
  |  |  |  |  ------------------
  |  |  |  |  100|  3.78k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  3.78k|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  3.78k|  }))
  |  |  ------------------
  ------------------
  |  Branch (4291:20): [True: 3.78k, False: 0]
  |  Branch (4291:28): [True: 3.78k, False: 0]
  |  Branch (4291:42): [True: 3.78k, False: 0]
  ------------------
 4292|  3.78k|  has_table = has_refed_data && node->data->common.value_table->value_init;
  ------------------
  |  Branch (4292:15): [True: 3.78k, False: 0]
  |  Branch (4292:33): [True: 3.78k, False: 0]
  ------------------
 4293|  3.78k|  if (has_refed_data)
  ------------------
  |  Branch (4293:7): [True: 3.78k, False: 0]
  ------------------
 4294|  3.78k|    {
 4295|  3.78k|      if (has_table)
  ------------------
  |  Branch (4295:11): [True: 3.78k, False: 0]
  ------------------
 4296|  3.78k|	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|  3.78k|    }
 4315|       |  
 4316|  3.78k|  G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|  3.78k|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 4317|       |  
 4318|  3.78k|  if (vtable)
  ------------------
  |  Branch (4318:7): [True: 3.78k, False: 0]
  ------------------
 4319|  3.78k|    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|  3.78k|}
_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|     14|{
 4668|     14|  TypeNode *node = lookup_type_node_I (class_gtype);
 4669|       |
 4670|     14|  g_return_val_if_fail (private_size > 0, 0);
  ------------------
  |  |  643|     14|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     14|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     14|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     14|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     14| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     14|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     14|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     14|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 14, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     14|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     14|   else                                         \
  |  |  |  |  |  | 1021|     14|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     14|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     14|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 14, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     14|      { } \
  |  |  646|     14|    else \
  |  |  647|     14|      { \
  |  |  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|     14|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     14|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4671|     14|  g_return_val_if_fail (private_size <= 0xffff, 0);
  ------------------
  |  |  643|     14|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     14|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     14|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     14|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     14| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     14|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     14|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     14|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 14, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     14|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     14|   else                                         \
  |  |  |  |  |  | 1021|     14|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     14|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     14|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 14, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     14|      { } \
  |  |  646|     14|    else \
  |  |  647|     14|      { \
  |  |  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|     14|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     14|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4672|       |
 4673|     14|  if (!node || !node->is_classed || !node->is_instantiatable || !node->data)
  ------------------
  |  Branch (4673:7): [True: 0, False: 14]
  |  Branch (4673:16): [True: 0, False: 14]
  |  Branch (4673:37): [True: 0, False: 14]
  |  Branch (4673:65): [True: 0, False: 14]
  ------------------
 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|     14|  if (node->plugin != NULL)
  ------------------
  |  Branch (4680:7): [True: 0, False: 14]
  ------------------
 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|     14|  return private_size;
 4718|     14|}
g_type_class_adjust_private_offset:
 4724|      6|{
 4725|      6|  GType class_gtype = ((GTypeClass *) g_class)->g_type;
 4726|      6|  TypeNode *node = lookup_type_node_I (class_gtype);
 4727|      6|  gssize private_size;
 4728|       |
 4729|      6|  g_return_if_fail (private_size_or_offset != NULL);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 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|      6|  if (*private_size_or_offset > 0)
  ------------------
  |  Branch (4735:7): [True: 6, False: 0]
  ------------------
 4736|      6|    g_return_if_fail (*private_size_or_offset <= 0xffff);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4737|      0|  else
 4738|      0|    return;
 4739|       |
 4740|      6|  if (!node || !node->is_classed || !node->is_instantiatable || !node->data)
  ------------------
  |  Branch (4740:7): [True: 0, False: 6]
  |  Branch (4740:16): [True: 0, False: 6]
  |  Branch (4740:37): [True: 0, False: 6]
  |  Branch (4740:65): [True: 0, False: 6]
  ------------------
 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|      6|  if (NODE_PARENT_TYPE (node))
  ------------------
  |  |  253|      6|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  |  |  ------------------
  |  |  |  Branch (253:34): [True: 5, False: 1]
  |  |  ------------------
  ------------------
 4749|      5|    {
 4750|      5|      TypeNode *pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|      5|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 4751|      5|      if (node->data->instance.private_size != pnode->data->instance.private_size)
  ------------------
  |  Branch (4751:11): [True: 0, False: 5]
  ------------------
 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|      5|    }
 4758|       |
 4759|      6|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      6|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 4760|       |
 4761|      6|  private_size = ALIGN_STRUCT (node->data->instance.private_size + *private_size_or_offset);
  ------------------
  |  |  161|      6|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      6|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      6|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 4762|      6|  g_assert (private_size <= 0xffff);
  ------------------
  |  |  231|      6|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      6|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      6|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 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:25): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      6|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      6|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      6|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4763|      6|  node->data->instance.private_size = private_size;
 4764|       |
 4765|      6|  *private_size_or_offset = -(gint) node->data->instance.private_size;
 4766|       |
 4767|      6|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      6|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 4768|      6|}
g_type_add_class_private:
 4858|      3|{
 4859|      3|  TypeNode *node = lookup_type_node_I (class_type);
 4860|      3|  gsize offset;
 4861|       |
 4862|      3|  g_return_if_fail (private_size > 0);
  ------------------
  |  |  630|      3|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      3|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      3|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      3|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 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: 3, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      3|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      3|   else                                         \
  |  |  |  |  |  | 1021|      3|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      3|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      3|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      3|      { } \
  |  |  633|      3|    else \
  |  |  634|      3|      { \
  |  |  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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      3|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4863|       |
 4864|      3|  if (!node || !node->is_classed || !node->data)
  ------------------
  |  Branch (4864:7): [True: 0, False: 3]
  |  Branch (4864:16): [True: 0, False: 3]
  |  Branch (4864:37): [True: 0, False: 3]
  ------------------
 4865|      0|    {
 4866|      0|      g_warning ("cannot add class private field to invalid type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4867|      0|		 type_descriptive_name_I (class_type));
 4868|      0|      return;
 4869|      0|    }
 4870|       |
 4871|      3|  if (NODE_PARENT_TYPE (node))
  ------------------
  |  |  253|      3|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  |  |  ------------------
  |  |  |  Branch (253:34): [True: 3, False: 0]
  |  |  ------------------
  ------------------
 4872|      3|    {
 4873|      3|      TypeNode *pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|      3|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 4874|      3|      if (node->data->class.class_private_size != pnode->data->class.class_private_size)
  ------------------
  |  Branch (4874:11): [True: 0, False: 3]
  ------------------
 4875|      0|	{
 4876|      0|	  g_warning ("g_type_add_class_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__)
  ------------------
 4877|      0|	  return;
 4878|      0|	}
 4879|      3|    }
 4880|       |  
 4881|      3|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      3|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 4882|       |
 4883|      3|  offset = ALIGN_STRUCT (node->data->class.class_private_size);
  ------------------
  |  |  161|      3|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      3|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      3|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 4884|      3|  node->data->class.class_private_size = offset + private_size;
 4885|       |
 4886|      3|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      3|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 4887|      3|}
g_type_class_get_private:
 4892|   548k|{
 4893|   548k|  TypeNode *class_node;
 4894|   548k|  TypeNode *private_node;
 4895|   548k|  TypeNode *parent_node;
 4896|   548k|  gsize offset;
 4897|       |
 4898|   548k|  g_return_val_if_fail (klass != NULL, NULL);
  ------------------
  |  |  643|   548k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   548k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   548k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   548k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   548k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   548k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   548k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   548k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 548k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   548k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   548k|   else                                         \
  |  |  |  |  |  | 1021|   548k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   548k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   548k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 548k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   548k|      { } \
  |  |  646|   548k|    else \
  |  |  647|   548k|      { \
  |  |  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|   548k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   548k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 548k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4899|       |
 4900|   548k|  class_node = lookup_type_node_I (klass->g_type);
 4901|   548k|  if (G_UNLIKELY (!class_node || !class_node->is_classed))
  ------------------
  |  | 1025|   548k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   548k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   548k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   548k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.64M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 548k]
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 548k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   548k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   548k|   else                                         \
  |  |  |  | 1021|   548k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   548k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   548k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 548k]
  |  |  ------------------
  ------------------
 4902|      0|    {
 4903|      0|      g_warning ("class of invalid type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4904|      0|		 type_descriptive_name_I (klass->g_type));
 4905|      0|      return NULL;
 4906|      0|    }
 4907|       |
 4908|   548k|  private_node = lookup_type_node_I (private_type);
 4909|   548k|  if (G_UNLIKELY (!private_node || !NODE_IS_ANCESTOR (private_node, class_node)))
  ------------------
  |  | 1025|   548k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   548k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   548k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   548k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  2.74M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 548k, False: 0]
  |  |  |  |  |  Branch (1018:8): [True: 548k, False: 0]
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 548k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   548k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   548k|   else                                         \
  |  |  |  | 1021|   548k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   548k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   548k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 548k]
  |  |  ------------------
  ------------------
 4910|      0|    {
 4911|      0|      g_warning ("attempt to retrieve private data for invalid type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4912|      0|		 type_descriptive_name_I (private_type));
 4913|      0|      return NULL;
 4914|      0|    }
 4915|       |
 4916|   548k|  offset = ALIGN_STRUCT (class_node->data->class.class_size);
  ------------------
  |  |  161|   548k|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|   548k|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|   548k|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 4917|       |
 4918|   548k|  if (NODE_PARENT_TYPE (private_node))
  ------------------
  |  |  253|   548k|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  |  |  ------------------
  |  |  |  Branch (253:34): [True: 548k, False: 0]
  |  |  ------------------
  ------------------
 4919|   548k|    {
 4920|   548k|      parent_node = lookup_type_node_I (NODE_PARENT_TYPE (private_node));
  ------------------
  |  |  253|   548k|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 4921|   548k|      g_assert (parent_node->data && NODE_REFCOUNT (parent_node) > 0);
  ------------------
  |  |  231|   548k|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   548k|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|   548k|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|   548k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   548k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   548k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   548k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.74M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 548k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 548k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 548k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   548k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   548k|   else                                         \
  |  |  |  |  |  | 1021|   548k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   548k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   548k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 548k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|   548k|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|   548k|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   548k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 548k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4922|       |
 4923|   548k|      if (G_UNLIKELY (private_node->data->class.class_private_size == parent_node->data->class.class_private_size))
  ------------------
  |  | 1025|   548k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   548k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   548k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   548k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   548k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 548k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   548k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   548k|   else                                         \
  |  |  |  | 1021|   548k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   548k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   548k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 548k]
  |  |  ------------------
  ------------------
 4924|      0|	{
 4925|      0|	  g_warning ("g_type_instance_get_class_private() requires a prior call to g_type_add_class_private()");
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4926|      0|	  return NULL;
 4927|      0|	}
 4928|       |
 4929|   548k|      offset += ALIGN_STRUCT (parent_node->data->class.class_private_size);
  ------------------
  |  |  161|   548k|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|   548k|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|   548k|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 4930|   548k|    }
 4931|       |
 4932|   548k|  return G_STRUCT_MEMBER_P (klass, offset);
  ------------------
  |  |  860|   548k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 4933|   548k|}
g_type_ensure:
 4956|      5|{
 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|      5|  if (G_UNLIKELY (type == (GType)-1))
  ------------------
  |  | 1025|      5|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 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: 0, False: 5]
  |  |  |  |  ------------------
  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      5|   else                                         \
  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  | 1023|      5|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 4962|      5|    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|      5|}
gtype.c:lookup_type_node_I:
  395|   117M|{
  396|   117M|  if (utype > G_TYPE_FUNDAMENTAL_MAX)
  ------------------
  |  |   45|   117M|#define	G_TYPE_FUNDAMENTAL_MAX		(255 << G_TYPE_FUNDAMENTAL_SHIFT)
  |  |  ------------------
  |  |  |  |  210|   117M|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  ------------------
  ------------------
  |  Branch (396:7): [True: 110M, False: 6.23M]
  ------------------
  397|   110M|    return (TypeNode*) (utype & ~TYPE_ID_MASK);
  ------------------
  |  |  267|   110M|#define	TYPE_ID_MASK				((GType) ((1 << G_TYPE_FUNDAMENTAL_SHIFT) - 1))
  |  |  ------------------
  |  |  |  |  210|   110M|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  ------------------
  ------------------
  398|  6.23M|  else
  399|  6.23M|    return static_fundamental_type_nodes[utype >> G_TYPE_FUNDAMENTAL_SHIFT];
  ------------------
  |  |  210|  6.23M|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  ------------------
  400|   117M|}
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: 0, False: 5]
  ------------------
 1519|      0|    if (prerequisites[i] == prerequisite_type)
  ------------------
  |  Branch (1519:9): [True: 0, False: 0]
  ------------------
 1520|      0|      return;			/* we already have that prerequisiste */
 1521|      0|    else if (prerequisites[i] > prerequisite_type)
  ------------------
  |  Branch (1521:14): [True: 0, False: 0]
  ------------------
 1522|      0|      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|    115|{
  744|    115|  static const gchar extra_chars[] = "-_+";
  745|    115|  const gchar *p = type_name;
  746|    115|  gboolean name_valid;
  747|       |  
  748|    115|  if (!type_name[0] || !type_name[1] || !type_name[2])
  ------------------
  |  Branch (748:7): [True: 0, False: 115]
  |  Branch (748:24): [True: 0, False: 115]
  |  Branch (748:41): [True: 0, False: 115]
  ------------------
  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|    115|  name_valid = (p[0] >= 'A' && p[0] <= 'Z') || (p[0] >= 'a' && p[0] <= 'z') || p[0] == '_';
  ------------------
  |  Branch (754:17): [True: 115, False: 0]
  |  Branch (754:32): [True: 89, 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.13k|  for (p = type_name + 1; *p; p++)
  ------------------
  |  Branch (755:27): [True: 1.01k, False: 115]
  ------------------
  756|  1.01k|    name_valid &= ((p[0] >= 'A' && p[0] <= 'Z') ||
  ------------------
  |  Branch (756:21): [True: 1.00k, False: 16]
  |  Branch (756:36): [True: 167, False: 834]
  ------------------
  757|    850|		   (p[0] >= 'a' && p[0] <= 'z') ||
  ------------------
  |  Branch (757:7): [True: 834, False: 16]
  |  Branch (757:22): [True: 834, 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|    115|  if (!name_valid)
  ------------------
  |  Branch (760:7): [True: 0, False: 115]
  ------------------
  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|    115|  if (g_type_from_name (type_name))
  ------------------
  |  Branch (765:7): [True: 0, False: 115]
  ------------------
  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|    115|  return TRUE;
  ------------------
  |  |  818|    115|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    115|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  772|    115|}
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|    119|{
  428|    119|  guint n_supers;
  429|    119|  GType type;
  430|    119|  TypeNode *node;
  431|    119|  guint i, node_size = 0;
  432|       |
  433|    119|  n_supers = pnode ? pnode->n_supers + 1 : 0;
  ------------------
  |  Branch (433:14): [True: 77, False: 42]
  ------------------
  434|       |  
  435|    119|  if (!pnode)
  ------------------
  |  Branch (435:7): [True: 42, False: 77]
  ------------------
  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|    119|  node_size += SIZEOF_BASE_TYPE_NODE ();	      /* TypeNode structure */
  ------------------
  |  |  247|    119|#define SIZEOF_BASE_TYPE_NODE()			(G_STRUCT_OFFSET (TypeNode, supers))
  |  |  ------------------
  |  |  |  |  853|    119|      ((glong) offsetof (struct_type, member))
  |  |  ------------------
  ------------------
  438|    119|  node_size += (sizeof (GType) * (1 + n_supers + 1)); /* self + ancestors + (0) for ->supers[] */
  439|    119|  node = g_malloc0 (node_size);
  440|    119|  if (!pnode)					      /* offset fundamental types */
  ------------------
  |  Branch (440:7): [True: 42, False: 77]
  ------------------
  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|     77|  else
  451|     77|    type = (GType) node;
  452|       |  
  453|    119|  g_assert ((type & TYPE_ID_MASK) == 0);
  ------------------
  |  |  231|    119|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    119|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|    119|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|    119|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    119| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    119|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    119|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    119|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 119, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    119|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    119|   else                                         \
  |  |  |  |  |  | 1021|    119|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    119|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    119|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 119, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|    119|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|    119|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    119|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 119]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  454|       |  
  455|    119|  node->n_supers = n_supers;
  456|    119|  if (!pnode)
  ------------------
  |  Branch (456:7): [True: 42, False: 77]
  ------------------
  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|     77|  else
  473|     77|    {
  474|     77|      node->supers[0] = type;
  475|     77|      memcpy (node->supers + 1, pnode->supers, sizeof (GType) * (1 + pnode->n_supers + 1));
  476|       |      
  477|     77|      node->is_classed = pnode->is_classed;
  478|     77|      node->is_instantiatable = pnode->is_instantiatable;
  479|       |      
  480|     77|      if (NODE_IS_IFACE (node))
  ------------------
  |  |  258|     77|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     77|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     77|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     77|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     77|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 7, False: 70]
  |  |  ------------------
  ------------------
  481|      7|	{
  482|      7|	  IFACE_NODE_N_PREREQUISITES (node) = 0;
  ------------------
  |  |  261|      7|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  483|      7|	  IFACE_NODE_PREREQUISITES (node) = NULL;
  ------------------
  |  |  262|      7|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
  484|      7|	}
  485|     70|      else
  486|     70|	{
  487|     70|	  guint j;
  488|     70|	  IFaceEntries *entries;
  489|       |
  490|     70|	  entries = _g_atomic_array_copy (CLASSED_NODE_IFACES_ENTRIES (pnode),
  ------------------
  |  |  259|     70|#define	CLASSED_NODE_IFACES_ENTRIES(node)	(&(node)->_prot.iface_entries)
  ------------------
  491|     70|					  IFACE_ENTRIES_HEADER_SIZE,
  ------------------
  |  |  293|     70|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  ------------------
  492|     70|					  0);
  493|     70|	  if (entries)
  ------------------
  |  Branch (493:8): [True: 13, False: 57]
  ------------------
  494|     13|	    {
  495|     26|	      for (j = 0; j < IFACE_ENTRIES_N_ENTRIES (entries); j++)
  ------------------
  |  |  294|     26|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     26|#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|     26|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (495:20): [True: 13, False: 13]
  ------------------
  496|     13|		{
  497|     13|		  entries->entry[j].vtable = NULL;
  498|     13|		  entries->entry[j].init_state = UNINITIALIZED;
  499|     13|		}
  500|     13|	      _g_atomic_array_update (CLASSED_NODE_IFACES_ENTRIES (node),
  ------------------
  |  |  259|     13|#define	CLASSED_NODE_IFACES_ENTRIES(node)	(&(node)->_prot.iface_entries)
  ------------------
  501|     13|				      entries);
  502|     13|	    }
  503|     70|	}
  504|       |
  505|     77|      i = pnode->n_children++;
  506|     77|      pnode->children = g_renew (GType, pnode->children, pnode->n_children);
  ------------------
  |  |  321|     77|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|     77|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     77|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|     77|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|     77|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|     77|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|     77|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 77]
  |  |  |  |  ------------------
  |  |  |  |  254|     77|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|     77|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 77]
  |  |  |  |  ------------------
  |  |  |  |  256|     77|	           (__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|     77|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|     77|	  else							\
  |  |  |  |  259|     77|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|     77|	  __p;							\
  |  |  |  |  261|     77|	}))
  |  |  ------------------
  ------------------
  507|     77|      pnode->children[i] = type;
  508|     77|    }
  509|       |
  510|    119|  TRACE(GOBJECT_TYPE_NEW(name, node->supers[1], type));
  511|       |
  512|    119|  node->plugin = plugin;
  513|    119|  node->n_children = 0;
  514|    119|  node->children = NULL;
  515|    119|  node->data = NULL;
  516|    119|  node->qname = g_quark_from_string (name);
  517|    119|  node->global_gdata = NULL;
  518|    119|  g_hash_table_insert (static_type_nodes_ht,
  519|    119|		       (gpointer) g_quark_to_string (node->qname),
  520|    119|		       (gpointer) type);
  521|       |
  522|    119|  g_atomic_int_inc ((gint *)&type_registration_serial);
  ------------------
  |  |  148|    119|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|    119|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|    119|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|    119|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|    119|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 119]
  |  |  ------------------
  |  |  151|    119|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|    119|  }))
  ------------------
  523|       |
  524|    119|  return node;
  525|    119|}
gtype.c:check_type_info_I:
  892|    115|{
  893|    115|  GTypeFundamentalInfo *finfo = type_node_fundamental_info_I (lookup_type_node_I (ftype));
  894|    115|  gboolean is_interface = ftype == G_TYPE_INTERFACE;
  ------------------
  |  |   68|    115|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  ------------------
  |  |  |  |  221|    115|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|    115|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  895|       |  
  896|    115|  g_assert (ftype <= G_TYPE_FUNDAMENTAL_MAX && !(ftype & TYPE_ID_MASK));
  ------------------
  |  |  231|    115|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    115|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|    115|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|    115|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    115| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    115|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    115|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    345|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 115, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 115, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    115|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    115|   else                                         \
  |  |  |  |  |  | 1021|    115|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    115|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    115|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 115, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|    115|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|    115|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    115|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 115]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  897|       |  
  898|       |  /* check instance members */
  899|    115|  if (!(finfo->type_flags & G_TYPE_FLAG_INSTANTIATABLE) &&
  ------------------
  |  Branch (899:7): [True: 45, False: 70]
  ------------------
  900|     45|      (info->instance_size || info->n_preallocs || info->instance_init))
  ------------------
  |  Branch (900:8): [True: 0, False: 45]
  |  Branch (900:31): [True: 0, False: 45]
  |  Branch (900:52): [True: 0, False: 45]
  ------------------
  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|    115|  if (!((finfo->type_flags & G_TYPE_FLAG_CLASSED) || is_interface) &&
  ------------------
  |  Branch (912:9): [True: 74, False: 41]
  |  Branch (912:54): [True: 7, 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|    115|  if (is_interface && info->class_size < sizeof (GTypeInterface))
  ------------------
  |  Branch (926:7): [True: 7, False: 108]
  |  Branch (926:23): [True: 0, False: 7]
  ------------------
  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|    115|  if (finfo->type_flags & G_TYPE_FLAG_CLASSED)
  ------------------
  |  Branch (933:7): [True: 74, False: 41]
  ------------------
  934|     74|    {
  935|     74|      if (info->class_size < sizeof (GTypeClass))
  ------------------
  |  Branch (935:11): [True: 0, False: 74]
  ------------------
  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|     74|      if (pnode && info->class_size < pnode->data->class.class_size)
  ------------------
  |  Branch (941:11): [True: 66, False: 8]
  |  Branch (941:20): [True: 0, False: 66]
  ------------------
  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|     74|    }
  950|       |  /* check instance size */
  951|    115|  if (finfo->type_flags & G_TYPE_FLAG_INSTANTIATABLE)
  ------------------
  |  Branch (951:7): [True: 70, False: 45]
  ------------------
  952|     70|    {
  953|     70|      if (info->instance_size < sizeof (GTypeInstance))
  ------------------
  |  Branch (953:11): [True: 0, False: 70]
  ------------------
  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|     70|      if (pnode && info->instance_size < pnode->data->instance.instance_size)
  ------------------
  |  Branch (959:11): [True: 66, False: 4]
  |  Branch (959:20): [True: 0, False: 66]
  ------------------
  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|     70|    }
  968|       |  
  969|    115|  return TRUE;
  ------------------
  |  |  818|    115|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    115|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  970|    115|}
gtype.c:type_data_make_W:
 1088|    117|{
 1089|    117|  TypeData *data;
 1090|    117|  GTypeValueTable *vtable = NULL;
 1091|    117|  guint vtable_size = 0;
 1092|       |  
 1093|    117|  g_assert (node->data == NULL && info != NULL);
  ------------------
  |  |  231|    117|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    117|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|    117|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|    117|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    117| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    117|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    117|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    351|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 117, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 117, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    117|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    117|   else                                         \
  |  |  |  |  |  | 1021|    117|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    117|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    117|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 117, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|    117|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|    117|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    117|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 117]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1094|       |  
 1095|    117|  if (!value_table)
  ------------------
  |  Branch (1095:7): [True: 79, False: 38]
  ------------------
 1096|     79|    {
 1097|     79|      TypeNode *pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|     79|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 1098|       |      
 1099|     79|      if (pnode)
  ------------------
  |  Branch (1099:11): [True: 75, False: 4]
  ------------------
 1100|     75|	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|     79|    }
 1108|    117|  if (value_table)
  ------------------
  |  Branch (1108:7): [True: 42, False: 75]
  ------------------
 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|    117|  if (node->is_instantiatable) /* careful, is_instantiatable is also is_classed */
  ------------------
  |  Branch (1119:7): [True: 70, False: 47]
  ------------------
 1120|     70|    {
 1121|     70|      TypeNode *pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|     70|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 1122|       |
 1123|     70|      data = g_malloc0 (sizeof (InstanceData) + vtable_size);
 1124|     70|      if (vtable_size)
  ------------------
  |  Branch (1124:11): [True: 4, False: 66]
  ------------------
 1125|      4|	vtable = G_STRUCT_MEMBER_P (data, sizeof (InstanceData));
  ------------------
  |  |  860|      4|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1126|     70|      data->instance.class_size = info->class_size;
 1127|     70|      data->instance.class_init_base = info->base_init;
 1128|     70|      data->instance.class_finalize_base = info->base_finalize;
 1129|     70|      data->instance.class_init = info->class_init;
 1130|     70|      data->instance.class_finalize = info->class_finalize;
 1131|     70|      data->instance.class_data = info->class_data;
 1132|     70|      data->instance.class = NULL;
 1133|     70|      data->instance.init_state = UNINITIALIZED;
 1134|     70|      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|     70|      data->instance.private_size = 0;
 1139|     70|      data->instance.class_private_size = 0;
 1140|     70|      if (pnode)
  ------------------
  |  Branch (1140:11): [True: 66, False: 4]
  ------------------
 1141|     66|        data->instance.class_private_size = pnode->data->instance.class_private_size;
 1142|     70|      data->instance.n_preallocs = MIN (info->n_preallocs, 1024);
  ------------------
  |  |  825|     70|#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (825:21): [True: 70, False: 0]
  |  |  ------------------
  ------------------
 1143|     70|      data->instance.instance_init = info->instance_init;
 1144|     70|    }
 1145|     47|  else if (node->is_classed) /* only classed */
  ------------------
  |  Branch (1145:12): [True: 4, False: 43]
  ------------------
 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|     43|  else if (NODE_IS_IFACE (node))
  ------------------
  |  |  258|     43|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     43|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     43|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     43|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     43|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 9, False: 34]
  |  |  ------------------
  ------------------
 1165|      9|    {
 1166|      9|      data = g_malloc0 (sizeof (IFaceData) + vtable_size);
 1167|      9|      if (vtable_size)
  ------------------
  |  Branch (1167:11): [True: 2, False: 7]
  ------------------
 1168|      2|	vtable = G_STRUCT_MEMBER_P (data, sizeof (IFaceData));
  ------------------
  |  |  860|      2|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1169|      9|      data->iface.vtable_size = info->class_size;
 1170|      9|      data->iface.vtable_init_base = info->base_init;
 1171|      9|      data->iface.vtable_finalize_base = info->base_finalize;
 1172|      9|      data->iface.dflt_init = info->class_init;
 1173|      9|      data->iface.dflt_finalize = info->class_finalize;
 1174|      9|      data->iface.dflt_data = info->class_data;
 1175|      9|      data->iface.dflt_vtable = NULL;
 1176|      9|    }
 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|    117|  node->data = data;
 1191|       |  
 1192|    117|  if (vtable_size)
  ------------------
  |  Branch (1192:7): [True: 42, False: 75]
  ------------------
 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|    117|  node->data->common.value_table = vtable;
 1216|    117|  node->mutatable_check_cache = (node->data->common.value_table->value_init != NULL &&
  ------------------
  |  Branch (1216:34): [True: 106, False: 11]
  ------------------
 1217|    106|				 !((G_TYPE_FLAG_VALUE_ABSTRACT | G_TYPE_FLAG_ABSTRACT) &
  ------------------
  |  Branch (1217:6): [True: 100, False: 6]
  ------------------
 1218|    106|				   GPOINTER_TO_UINT (type_get_qdata_L (node, static_quark_type_flags))));
  ------------------
  |  |   99|    106|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 1219|       |  
 1220|    117|  g_assert (node->data->common.value_table != NULL); /* paranoid */
  ------------------
  |  |  231|    117|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    117|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|    117|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|    117|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    117| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    117|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    117|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    117|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 117, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    117|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    117|   else                                         \
  |  |  |  |  |  | 1021|    117|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    117|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    117|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 117, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|    117|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|    117|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    117|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 117]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1221|       |
 1222|    117|  g_atomic_int_set ((int *) &node->ref_count, 1);
  ------------------
  |  |  104|    117|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|    117|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|    117|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|    117|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|    117|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|    117|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 117]
  |  |  ------------------
  |  |  108|    117|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|    117|  }))
  ------------------
 1223|    117|}
gtype.c:check_value_table_I:
  828|    115|{
  829|    115|  if (!value_table)
  ------------------
  |  Branch (829:7): [True: 77, False: 38]
  ------------------
  830|     77|    return FALSE;
  ------------------
  |  |  814|     77|#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|    115|}
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|     77|{
  778|     77|  TypeNode *pnode;
  779|     77|  GTypeFundamentalInfo* finfo;
  780|       |  
  781|     77|  pnode = lookup_type_node_I (parent_type);
  782|     77|  if (!pnode)
  ------------------
  |  Branch (782:7): [True: 0, False: 77]
  ------------------
  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|     77|  finfo = type_node_fundamental_info_I (pnode);
  790|       |  /* ensure flat derivability */
  791|     77|  if (!(finfo->type_flags & G_TYPE_FLAG_DERIVABLE))
  ------------------
  |  Branch (791:7): [True: 0, False: 77]
  ------------------
  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|     77|  if (parent_type != NODE_FUNDAMENTAL_TYPE (pnode) &&
  ------------------
  |  |  254|    154|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (799:7): [True: 13, False: 64]
  ------------------
  800|     13|      !(finfo->type_flags & G_TYPE_FLAG_DEEP_DERIVABLE))
  ------------------
  |  Branch (800:7): [True: 0, False: 13]
  ------------------
  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|     77|  return TRUE;
  ------------------
  |  |  818|     77|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     77|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  809|     77|}
gtype.c:type_data_ref_Wm:
 1227|     77|{
 1228|     77|  if (!node->data)
  ------------------
  |  Branch (1228:7): [True: 0, False: 77]
  ------------------
 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|     77|  else
 1259|     77|    {
 1260|     77|      g_assert (NODE_REFCOUNT (node) > 0);
  ------------------
  |  |  231|     77|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     77|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     77|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     77|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     77| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     77|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     77|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    231|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 77]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     77|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     77|   else                                         \
  |  |  |  |  |  | 1021|     77|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     77|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     77|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 77, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     77|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     77|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     77|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1261|       |      
 1262|     77|      g_atomic_int_inc ((int *) &node->ref_count);
  ------------------
  |  |  148|     77|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     77|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|     77|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     77|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|     77|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 77]
  |  |  ------------------
  |  |  151|     77|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|     77|  }))
  ------------------
 1263|     77|    }
 1264|     77|}
gtype.c:type_node_new_W:
  567|     77|{
  568|     77|  g_assert (pnode);
  ------------------
  |  |  231|     77|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     77|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     77|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     77|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     77| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     77|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     77|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     77|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     77|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     77|   else                                         \
  |  |  |  |  |  | 1021|     77|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     77|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     77|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 77, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     77|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     77|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     77|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  569|     77|  g_assert (pnode->n_supers < MAX_N_SUPERS);
  ------------------
  |  |  231|     77|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     77|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     77|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     77|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     77| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     77|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     77|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     77|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     77|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     77|   else                                         \
  |  |  |  |  |  | 1021|     77|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     77|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     77|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 77, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     77|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     77|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     77|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  570|     77|  g_assert (pnode->n_children < MAX_N_CHILDREN);
  ------------------
  |  |  231|     77|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     77|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     77|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     77|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     77| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     77|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     77|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     77|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 77, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     77|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     77|   else                                         \
  |  |  |  |  |  | 1021|     77|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     77|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     77|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 77, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     77|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     77|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     77|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 77]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  571|       |  
  572|     77|  return type_node_any_new_W (pnode, NODE_FUNDAMENTAL_TYPE (pnode), name, plugin, 0);
  ------------------
  |  |  254|     77|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  573|     77|}
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|     26|  for (i = 0; i < IFACE_NODE_N_PREREQUISITES (iface); i++)
  ------------------
  |  |  261|     26|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  |  Branch (1052:15): [True: 13, False: 13]
  ------------------
 1053|     13|    {
 1054|     13|      tnode = lookup_type_node_I (prerequisites[i]);
 1055|     13|      if (!type_node_is_a_L (node, tnode))
  ------------------
  |  Branch (1055:11): [True: 0, False: 13]
  ------------------
 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|     13|    }
 1064|     13|  return TRUE;
  ------------------
  |  |  818|     13|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     13|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1065|     13|}
gtype.c:type_lookup_iface_entry_L:
  619|     66|{
  620|     66|  if (!NODE_IS_IFACE (iface_node))
  ------------------
  |  |  258|     66|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     66|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     66|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     66|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     66|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (620:7): [True: 0, False: 66]
  ------------------
  621|      0|    return NULL;
  622|       |
  623|     66|  return lookup_iface_entry_I (CLASSED_NODE_IFACES_ENTRIES_LOCKED (node),
  ------------------
  |  |  260|     66|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|     66|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  |  |  ------------------
  ------------------
  624|     66|			       iface_node);
  625|     66|}
gtype.c:lookup_iface_entry_I:
  578|  22.4M|{
  579|  22.4M|  guint8 *offsets;
  580|  22.4M|  gsize offset_index;
  581|  22.4M|  IFaceEntry *check;
  582|  22.4M|  gsize index;
  583|  22.4M|  IFaceEntry *entry;
  584|       |
  585|  22.4M|  if (entries == NULL)
  ------------------
  |  Branch (585:7): [True: 20, False: 22.4M]
  ------------------
  586|     20|    return NULL;
  587|       |
  588|  22.4M|  G_ATOMIC_ARRAY_DO_TRANSACTION
  ------------------
  |  |   44|  22.4M|#define G_ATOMIC_ARRAY_DO_TRANSACTION(_array, _type, _C_) G_STMT_START {	\
  |  |  ------------------
  |  |  |  |  874|  22.4M|#define G_STMT_START  do
  |  |  ------------------
  |  |   45|  22.4M|    gpointer *_datap  = &(_array)->data;				\
  |  |   46|  22.4M|    _type *transaction_data, *__check;						\
  |  |   47|  22.4M|										\
  |  |   48|  22.4M|    __check = g_atomic_pointer_get (_datap);					\
  |  |  ------------------
  |  |  |  |  113|  22.4M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  22.4M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  22.4M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  22.4M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  22.4M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  22.4M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  22.4M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  22.4M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  22.4M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  22.4M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  22.4M|  }))
  |  |  ------------------
  |  |   49|  22.4M|    do {									\
  |  |   50|  22.4M|      transaction_data = __check;						\
  |  |   51|   224M|      {_C_;}									\
  |  |  ------------------
  |  |  |  Branch (51:8): [True: 22.4M, False: 4]
  |  |  |  Branch (51:8): [True: 22.4M, False: 2]
  |  |  |  Branch (51:8): [True: 22.4M, False: 3]
  |  |  |  Branch (51:8): [True: 22.4M, False: 11]
  |  |  |  Branch (51:8): [True: 22.4M, False: 0]
  |  |  ------------------
  |  |   52|  22.4M|      __check = g_atomic_pointer_get (_datap);					\
  |  |  ------------------
  |  |  |  |  113|  22.4M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  22.4M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  22.4M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  22.4M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  22.4M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  22.4M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  22.4M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  22.4M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  22.4M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  22.4M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  22.4M|  }))
  |  |  ------------------
  |  |   53|  22.4M|    } while (transaction_data != __check);					\
  |  |  ------------------
  |  |  |  Branch (53:14): [True: 0, False: 22.4M]
  |  |  ------------------
  |  |   54|  22.4M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  22.4M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 22.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  589|  22.4M|    (&iface_node->_prot.offsets, guint8,
  590|       |
  591|  22.4M|     entry = NULL;
  592|  22.4M|     offsets = transaction_data;
  593|  22.4M|     offset_index = entries->offset_index;
  594|  22.4M|     if (offsets != NULL &&
  595|  22.4M|	 offset_index < G_ATOMIC_ARRAY_DATA_SIZE(offsets))
  596|  22.4M|       {
  597|  22.4M|	 index = offsets[offset_index];
  598|  22.4M|	 if (index > 0)
  599|  22.4M|	   {
  600|       |	     /* zero means unset, subtract one to get real index */
  601|  22.4M|	     index -= 1;
  602|       |
  603|  22.4M|	     if (index < IFACE_ENTRIES_N_ENTRIES (entries))
  604|  22.4M|	       {
  605|  22.4M|		 check = (IFaceEntry *)&entries->entry[index];
  606|  22.4M|		 if (check->iface_type == NODE_TYPE (iface_node))
  607|  22.4M|		   entry = check;
  608|  22.4M|	       }
  609|  22.4M|	   }
  610|  22.4M|       }
  611|  22.4M|     );
  612|       |
  613|  22.4M| return entry;
  614|  22.4M|}
gtype.c:type_iface_peek_holder_L:
 1750|     28|{
 1751|     28|  IFaceHolder *iholder;
 1752|       |  
 1753|     28|  g_assert (NODE_IS_IFACE (iface));
  ------------------
  |  |  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|     28|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 28, 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1754|       |  
 1755|     28|  iholder = iface_node_get_holders_L (iface);
  ------------------
  |  |  263|     28|#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: 37, False: 10]
  |  Branch (1756:21): [True: 19, False: 18]
  ------------------
 1757|     19|    iholder = iholder->next;
 1758|     28|  return iholder;
 1759|     28|}
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: 5, False: 14]
  ------------------
 1290|      5|    return TRUE;
  ------------------
  |  |  818|      5|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      5|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1291|       |
 1292|     14|  if (G_ATOMIC_ARRAY_DATA_SIZE (offsets) <= offset)
  ------------------
  |  |   28|     14|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  ------------------
  |  Branch (1292:7): [True: 3, False: 11]
  ------------------
 1293|      3|    return TRUE;
  ------------------
  |  |  818|      3|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      3|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1294|       |
 1295|     11|  if (offsets[offset] == 0 ||
  ------------------
  |  Branch (1295:7): [True: 0, False: 11]
  ------------------
 1296|     11|      offsets[offset] == for_index+1)
  ------------------
  |  Branch (1296:7): [True: 7, False: 4]
  ------------------
 1297|      7|    return TRUE;
  ------------------
  |  |  818|      7|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      7|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1298|       |
 1299|      4|  return FALSE;
  ------------------
  |  |  814|      4|#define	FALSE	(0)
  ------------------
 1300|     11|}
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: 5, False: 9]
  ------------------
 1343|      5|    old_size = 0;
 1344|      9|  else
 1345|      9|    {
 1346|      9|      old_size = G_ATOMIC_ARRAY_DATA_SIZE (old_offsets);
  ------------------
  |  |   28|      9|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  ------------------
 1347|      9|      if (offset < old_size &&
  ------------------
  |  Branch (1347:11): [True: 6, False: 3]
  ------------------
 1348|      6|	  old_offsets[offset] == index + 1)
  ------------------
  |  Branch (1348:4): [True: 6, False: 0]
  ------------------
 1349|      6|	return; /* Already set to this index, return */
 1350|      9|    }
 1351|      8|  new_size = MAX (old_size, offset + 1);
  ------------------
  |  |  822|      8|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 0, False: 8]
  |  |  ------------------
  ------------------
 1352|       |
 1353|      8|  offsets = _g_atomic_array_copy (&iface_node->_prot.offsets,
 1354|      8|				  0, new_size - old_size);
 1355|       |
 1356|       |  /* Mark new area as unused */
 1357|     16|  for (i = old_size; i < new_size; i++)
  ------------------
  |  Branch (1357:22): [True: 8, False: 8]
  ------------------
 1358|      8|    offsets[i] = 0;
 1359|       |
 1360|      8|  offsets[offset] = index + 1;
 1361|       |
 1362|      8|  _g_atomic_array_update (&iface_node->_prot.offsets, offsets);
 1363|      8|}
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: 10, False: 9]
  ------------------
 2057|     10|    return FALSE;	/* we don't modify write lock upon FALSE */
  ------------------
  |  |  814|     10|#define	FALSE	(0)
  ------------------
 2058|       |
 2059|      9|  type_iface_ensure_dflt_vtable_Wm (iface);
 2060|       |
 2061|      9|  entry = type_lookup_iface_entry_L (node, iface);
 2062|       |
 2063|      9|  g_assert (iface->data && entry && entry->vtable == NULL && iholder && iholder->info);
  ------------------
  |  |  231|      9|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      9|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      9|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      9|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      9| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      9|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      9|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     81|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      9|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      9|   else                                         \
  |  |  |  |  |  | 1021|      9|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      9|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      9|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      9|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      9|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      9|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2064|       |  
 2065|      9|  entry->init_state = IFACE_INIT;
 2066|       |
 2067|      9|  pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|      9|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 2068|      9|  if (pnode)	/* want to copy over parent iface contents */
  ------------------
  |  Branch (2068:7): [True: 9, False: 0]
  ------------------
 2069|      9|    {
 2070|      9|      IFaceEntry *pentry = type_lookup_iface_entry_L (pnode, iface);
 2071|       |      
 2072|      9|      if (pentry)
  ------------------
  |  Branch (2072:11): [True: 0, False: 9]
  ------------------
 2073|      0|	vtable = g_memdup2 (pentry->vtable, iface->data->iface.vtable_size);
 2074|      9|    }
 2075|      9|  if (!vtable)
  ------------------
  |  Branch (2075:7): [True: 9, False: 0]
  ------------------
 2076|      9|    vtable = g_memdup2 (iface->data->iface.dflt_vtable, iface->data->iface.vtable_size);
 2077|      9|  entry->vtable = vtable;
 2078|      9|  vtable->g_type = NODE_TYPE (iface);
  ------------------
  |  |  252|      9|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2079|      9|  vtable->g_instance_type = NODE_TYPE (node);
  ------------------
  |  |  252|      9|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2080|       |  
 2081|      9|  if (iface->data->iface.vtable_init_base)
  ------------------
  |  Branch (2081:7): [True: 0, False: 9]
  ------------------
 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|      9|  return TRUE;	/* initialized the vtable */
  ------------------
  |  |  818|      9|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      9|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2088|      9|}
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: 9, False: 10]
  |  Branch (1768:18): [True: 0, False: 9]
  |  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|      9|{
 2100|      9|  IFaceEntry *entry = type_lookup_iface_entry_L (node, iface);
 2101|      9|  IFaceHolder *iholder = type_iface_peek_holder_L (iface, NODE_TYPE (node));
  ------------------
  |  |  252|      9|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2102|      9|  GTypeInterface *vtable = NULL;
 2103|      9|  guint i;
 2104|       |  
 2105|       |  /* iholder->info should have been filled in by type_iface_vtable_base_init_Wm() */
 2106|      9|  g_assert (iface->data && entry && iholder && iholder->info);
  ------------------
  |  |  231|      9|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      9|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      9|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      9|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      9| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      9|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      9|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     63|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      9|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      9|   else                                         \
  |  |  |  |  |  | 1021|      9|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      9|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      9|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      9|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      9|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      9|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2107|      9|  g_assert (entry->init_state == IFACE_INIT); /* assert prior base_init() */
  ------------------
  |  |  231|      9|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      9|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      9|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      9|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      9| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      9|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      9|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      9|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      9|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      9|   else                                         \
  |  |  |  |  |  | 1021|      9|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      9|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      9|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      9|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      9|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      9|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2108|       |  
 2109|      9|  entry->init_state = INITIALIZED;
 2110|       |      
 2111|      9|  vtable = entry->vtable;
 2112|       |
 2113|      9|  if (iholder->info->interface_init)
  ------------------
  |  Branch (2113:7): [True: 9, False: 0]
  ------------------
 2114|      9|    {
 2115|      9|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      9|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2116|      9|      if (iholder->info->interface_init)
  ------------------
  |  Branch (2116:11): [True: 9, False: 0]
  ------------------
 2117|      9|	iholder->info->interface_init (vtable, iholder->info->interface_data);
 2118|      9|      G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      9|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2119|      9|    }
 2120|       |  
 2121|     18|  for (i = 0; i < static_n_iface_check_funcs; i++)
  ------------------
  |  Branch (2121:15): [True: 9, False: 9]
  ------------------
 2122|      9|    {
 2123|      9|      GTypeInterfaceCheckFunc check_func = static_iface_check_funcs[i].check_func;
 2124|      9|      gpointer check_data = static_iface_check_funcs[i].check_data;
 2125|       |
 2126|      9|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      9|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2127|      9|      check_func (check_data, (gpointer)vtable);
 2128|      9|      G_WRITE_LOCK (&type_rw_lock);      
  ------------------
  |  |  128|      9|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2129|      9|    }
 2130|      9|}
gtype.c:type_data_ref_U:
 1268|  1.02M|{
 1269|  1.02M|  guint current;
 1270|       |
 1271|  1.02M|  do {
 1272|  1.02M|    current = NODE_REFCOUNT (node);
  ------------------
  |  |  256|  1.02M|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  1.02M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  1.02M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.02M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  1.02M|    gint gaig_temp;                                                          \
  |  |  |  |   99|  1.02M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1.02M]
  |  |  |  |  ------------------
  |  |  |  |  100|  1.02M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  1.02M|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  1.02M|  }))
  |  |  ------------------
  ------------------
 1273|       |
 1274|  1.02M|    if (current < 1)
  ------------------
  |  Branch (1274:9): [True: 0, False: 1.02M]
  ------------------
 1275|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1276|  1.02M|  } while (!g_atomic_int_compare_and_exchange ((int *) &node->ref_count, current, current + 1));
  ------------------
  |  |  160|  1.02M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  161|  1.02M|    gint gaicae_oldval = (oldval);                                           \
  |  |  162|  1.02M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.02M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  163|  1.02M|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  ------------------
  |  |  |  Branch (163:13): [Folded, False: 1.02M]
  |  |  ------------------
  |  |  164|  1.02M|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|  1.02M|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|  1.02M|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  1.02M|#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.02M, False: 0]
  |  |  ------------------
  |  |  165|  1.02M|  }))
  ------------------
  |  Branch (1276:12): [True: 0, False: 1.02M]
  ------------------
 1277|       |
 1278|  1.02M|  return TRUE;
  ------------------
  |  |  818|  1.02M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.02M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1279|  1.02M|}
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: 9, False: 11]
  ------------------
 2186|      9|    class = g_malloc0 (ALIGN_STRUCT (node->data->class.class_size) + node->data->class.class_private_size);
  ------------------
  |  |  161|      9|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      9|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      9|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 2187|     11|  else
 2188|     11|    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: 32, False: 7]
  ------------------
 2237|     32|	  i < IFACE_ENTRIES_N_ENTRIES (entries))
  ------------------
  |  |  294|     32|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     32|#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|     32|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2237:4): [True: 19, False: 13]
  ------------------
 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: 10, False: 9]
  ------------------
 2251|     10|	{
 2252|     10|	  guint j;
 2253|     10|	  IFaceEntries *pentries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (pnode);
  ------------------
  |  |  260|     10|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|     10|#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|     10|	  g_assert (pnode != NULL);
  ------------------
  |  |  231|     10|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     10|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     10|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     10|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     10| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     10|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     10|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     10|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 10, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     10|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     10|   else                                         \
  |  |  |  |  |  | 1021|     10|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     10|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     10|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 10, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     10|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     10|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     10|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2259|       |
 2260|     10|	  if (pentries)
  ------------------
  |  Branch (2260:8): [True: 10, False: 0]
  ------------------
 2261|     10|	    for (j = 0; j < IFACE_ENTRIES_N_ENTRIES (pentries); j++)
  ------------------
  |  |  294|     10|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     10|#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|     10|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2261:18): [True: 10, False: 0]
  ------------------
 2262|     10|	      {
 2263|     10|		IFaceEntry *pentry = &pentries->entry[j];
 2264|       |
 2265|     10|		if (pentry->iface_type == entry->iface_type)
  ------------------
  |  Branch (2265:7): [True: 10, False: 0]
  ------------------
 2266|     10|		  {
 2267|     10|		    entry->vtable = pentry->vtable;
 2268|     10|		    entry->init_state = INITIALIZED;
 2269|     10|		    break;
 2270|     10|		  }
 2271|     10|	      }
 2272|     10|	  g_assert (entry->vtable != NULL);
  ------------------
  |  |  231|     10|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     10|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     10|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     10|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     10| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     10|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     10|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     10|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 10, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     10|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     10|   else                                         \
  |  |  |  |  |  | 1021|     10|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     10|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     10|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 10, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     10|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     10|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     10|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2273|     10|	}
 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|     29|  while ((entries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (node)) != NULL)
  ------------------
  |  |  260|     29|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|     29|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  |  |  ------------------
  ------------------
  |  Branch (2302:10): [True: 22, False: 7]
  ------------------
 2303|     22|    {
 2304|     22|      entry = &entries->entry[i];
 2305|     32|      while (i < IFACE_ENTRIES_N_ENTRIES (entries) &&
  ------------------
  |  |  294|     64|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     32|#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|     32|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2305:14): [True: 19, False: 13]
  ------------------
 2306|     19|	     entry->init_state == INITIALIZED)
  ------------------
  |  Branch (2306:7): [True: 10, False: 9]
  ------------------
 2307|     10|	{
 2308|     10|	  entry++;
 2309|     10|	  i++;
 2310|     10|	}
 2311|       |
 2312|     22|      if (i == IFACE_ENTRIES_N_ENTRIES (entries))
  ------------------
  |  |  294|     22|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     22|#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|     22|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2312:11): [True: 13, False: 9]
  ------------------
 2313|     13|	break;
 2314|       |
 2315|      9|      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|      9|      i++;
 2322|      9|    }
 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.02M|{
 2480|  1.02M|  guint current;
 2481|       |
 2482|  1.02M|  do {
 2483|  1.02M|    current = NODE_REFCOUNT (node);
  ------------------
  |  |  256|  1.02M|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  1.02M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  1.02M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.02M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  1.02M|    gint gaig_temp;                                                          \
  |  |  |  |   99|  1.02M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1.02M]
  |  |  |  |  ------------------
  |  |  |  |  100|  1.02M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  1.02M|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  1.02M|  }))
  |  |  ------------------
  ------------------
 2484|       |
 2485|  1.02M|    if (current <= 1)
  ------------------
  |  Branch (2485:9): [True: 0, False: 1.02M]
  ------------------
 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.02M|  } while (!g_atomic_int_compare_and_exchange ((int *) &node->ref_count, current, current - 1));
  ------------------
  |  |  160|  1.02M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.02M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  161|  1.02M|    gint gaicae_oldval = (oldval);                                           \
  |  |  162|  1.02M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.02M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  163|  1.02M|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  ------------------
  |  |  |  Branch (163:13): [Folded, False: 1.02M]
  |  |  ------------------
  |  |  164|  1.02M|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|  1.02M|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|  1.02M|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  1.02M|#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.02M, False: 0]
  |  |  ------------------
  |  |  165|  1.02M|  }))
  ------------------
  |  Branch (2511:12): [True: 0, False: 1.02M]
  ------------------
 2512|  1.02M|}
gtype.c:type_lookup_iface_vtable_I:
  632|  22.4M|{
  633|  22.4M|  IFaceEntry *entry;
  634|  22.4M|  gboolean res;
  635|       |
  636|  22.4M|  if (!NODE_IS_IFACE (iface_node))
  ------------------
  |  |  258|  22.4M|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|  22.4M|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|  22.4M|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|  22.4M|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|  22.4M|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (636:7): [True: 0, False: 22.4M]
  ------------------
  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|  22.4M|  G_ATOMIC_ARRAY_DO_TRANSACTION
  ------------------
  |  |   44|  22.4M|#define G_ATOMIC_ARRAY_DO_TRANSACTION(_array, _type, _C_) G_STMT_START {	\
  |  |  ------------------
  |  |  |  |  874|  22.4M|#define G_STMT_START  do
  |  |  ------------------
  |  |   45|  22.4M|    gpointer *_datap  = &(_array)->data;				\
  |  |   46|  22.4M|    _type *transaction_data, *__check;						\
  |  |   47|  22.4M|										\
  |  |   48|  22.4M|    __check = g_atomic_pointer_get (_datap);					\
  |  |  ------------------
  |  |  |  |  113|  22.4M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  22.4M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  22.4M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  22.4M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  22.4M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  22.4M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  22.4M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  22.4M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  22.4M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  22.4M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  22.4M|  }))
  |  |  ------------------
  |  |   49|  22.4M|    do {									\
  |  |   50|  22.4M|      transaction_data = __check;						\
  |  |   51|  43.2M|      {_C_;}									\
  |  |  ------------------
  |  |  |  Branch (51:8): [True: 6.95M, False: 0]
  |  |  |  Branch (51:8): [True: 6.95M, False: 15.4M]
  |  |  ------------------
  |  |   52|  22.4M|      __check = g_atomic_pointer_get (_datap);					\
  |  |  ------------------
  |  |  |  |  113|  22.4M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  22.4M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  22.4M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  22.4M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  22.4M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  22.4M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  22.4M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  22.4M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  22.4M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  22.4M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  22.4M|  }))
  |  |  ------------------
  |  |   53|  22.4M|    } while (transaction_data != __check);					\
  |  |  ------------------
  |  |  |  Branch (53:14): [True: 0, False: 22.4M]
  |  |  ------------------
  |  |   54|  22.4M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  22.4M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 22.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  644|  22.4M|    (CLASSED_NODE_IFACES_ENTRIES (node), IFaceEntries,
  645|       |
  646|  22.4M|     entry = lookup_iface_entry_I (transaction_data, iface_node);
  647|  22.4M|     res = entry != NULL;
  648|  22.4M|     if (vtable_ptr)
  649|  22.4M|       {
  650|  22.4M|	 if (entry)
  651|  22.4M|	   *vtable_ptr = entry->vtable;
  652|  22.4M|	 else
  653|  22.4M|	   *vtable_ptr = NULL;
  654|  22.4M|       }
  655|  22.4M|     );
  656|       |
  657|  22.4M|  return res;
  658|  22.4M|}
gtype.c:type_iface_ensure_dflt_vtable_Wm:
 2014|      9|{
 2015|      9|  g_assert (iface->data);
  ------------------
  |  |  231|      9|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      9|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      9|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      9|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      9| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      9|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      9|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      9|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      9|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      9|   else                                         \
  |  |  |  |  |  | 1021|      9|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      9|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      9|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      9|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      9|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      9|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2016|       |
 2017|      9|  if (!iface->data->iface.dflt_vtable)
  ------------------
  |  Branch (2017:7): [True: 3, False: 6]
  ------------------
 2018|      3|    {
 2019|      3|      GTypeInterface *vtable = g_malloc0 (iface->data->iface.vtable_size);
 2020|      3|      iface->data->iface.dflt_vtable = vtable;
 2021|      3|      vtable->g_type = NODE_TYPE (iface);
  ------------------
  |  |  252|      3|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2022|      3|      vtable->g_instance_type = 0;
 2023|      3|      if (iface->data->iface.vtable_init_base ||
  ------------------
  |  Branch (2023:11): [True: 0, False: 3]
  ------------------
 2024|      3|          iface->data->iface.dflt_init)
  ------------------
  |  Branch (2024:11): [True: 3, False: 0]
  ------------------
 2025|      3|        {
 2026|      3|          G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      3|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2027|      3|          if (iface->data->iface.vtable_init_base)
  ------------------
  |  Branch (2027:15): [True: 0, False: 3]
  ------------------
 2028|      0|            iface->data->iface.vtable_init_base (vtable);
 2029|      3|          if (iface->data->iface.dflt_init)
  ------------------
  |  Branch (2029:15): [True: 3, False: 0]
  ------------------
 2030|      3|            iface->data->iface.dflt_init (vtable, (gpointer) iface->data->iface.dflt_data);
 2031|      3|          G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      3|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2032|      3|        }
 2033|      3|    }
 2034|      9|}
gtype.c:type_node_is_a_L:
 3543|     13|{
 3544|     13|  return type_node_check_conformities_UorL (node, iface_node, TRUE, TRUE, TRUE);
  ------------------
  |  |  818|     13|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     13|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                return type_node_check_conformities_UorL (node, iface_node, TRUE, TRUE, TRUE);
  ------------------
  |  |  818|     13|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     13|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                return type_node_check_conformities_UorL (node, iface_node, TRUE, TRUE, TRUE);
  ------------------
  |  |  818|     13|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     13|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3545|     13|}
gtype.c:type_node_check_conformities_UorL:
 3504|  42.5M|{
 3505|  42.5M|  gboolean match;
 3506|       |
 3507|  42.5M|  if (/* support_inheritance && */
 3508|  42.5M|      NODE_IS_ANCESTOR (iface_node, node))
  ------------------
  |  |  270|  42.5M|        ((ancestor)->n_supers <= (node)->n_supers &&                                        \
  |  |  ------------------
  |  |  |  Branch (270:10): [True: 42.5M, False: 5]
  |  |  ------------------
  |  |  271|  42.5M|	 (node)->supers[(node)->n_supers - (ancestor)->n_supers] == NODE_TYPE (ancestor))
  |  |  ------------------
  |  |  |  |  252|  42.5M|#define NODE_TYPE(node)				(node->supers[0])
  |  |  ------------------
  |  |  |  Branch (271:3): [True: 27.0M, False: 15.4M]
  |  |  ------------------
  ------------------
 3509|  27.0M|    return TRUE;
  ------------------
  |  |  818|  27.0M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  27.0M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3510|       |
 3511|  15.4M|  support_interfaces = support_interfaces && node->is_instantiatable && NODE_IS_IFACE (iface_node);
  ------------------
  |  |  258|  30.9M|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|  15.4M|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|  15.4M|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|  15.4M|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|  15.4M|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 15.4M, False: 57]
  |  |  ------------------
  ------------------
  |  Branch (3511:24): [True: 15.4M, False: 0]
  |  Branch (3511:46): [True: 15.4M, False: 5]
  ------------------
 3512|  15.4M|  support_prerequisites = support_prerequisites && NODE_IS_IFACE (node);
  ------------------
  |  |  258|  15.4M|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     67|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     67|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     67|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     67|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 5, False: 62]
  |  |  ------------------
  ------------------
  |  Branch (3512:27): [True: 67, False: 15.4M]
  ------------------
 3513|  15.4M|  match = FALSE;
  ------------------
  |  |  814|  15.4M|#define	FALSE	(0)
  ------------------
 3514|  15.4M|  if (support_interfaces)
  ------------------
  |  Branch (3514:7): [True: 15.4M, False: 62]
  ------------------
 3515|  15.4M|    {
 3516|  15.4M|      if (have_lock)
  ------------------
  |  Branch (3516:11): [True: 0, False: 15.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|  15.4M|      else
 3522|  15.4M|	{
 3523|  15.4M|	  if (type_lookup_iface_vtable_I (node, iface_node, NULL))
  ------------------
  |  Branch (3523:8): [True: 15.4M, False: 5]
  ------------------
 3524|  15.4M|	    match = TRUE;
  ------------------
  |  |  818|  15.4M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  15.4M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3525|  15.4M|	}
 3526|  15.4M|    }
 3527|  15.4M|  if (!match &&
  ------------------
  |  Branch (3527:7): [True: 67, False: 15.4M]
  ------------------
 3528|     67|      support_prerequisites)
  ------------------
  |  Branch (3528:7): [True: 5, False: 62]
  ------------------
 3529|      5|    {
 3530|      5|      if (!have_lock)
  ------------------
  |  Branch (3530:11): [True: 5, False: 0]
  ------------------
 3531|      5|	G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|      5|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 3532|      5|      if (support_prerequisites && type_lookup_prerequisite_L (node, NODE_TYPE (iface_node)))
  ------------------
  |  |  252|      5|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
  |  Branch (3532:11): [True: 5, False: 0]
  |  Branch (3532:36): [True: 0, False: 5]
  ------------------
 3533|      0|	match = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3534|      5|      if (!have_lock)
  ------------------
  |  Branch (3534:11): [True: 5, False: 0]
  ------------------
 3535|      5|	G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|      5|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 3536|      5|    }
 3537|  15.4M|  return match;
 3538|  42.5M|}
gtype.c:type_lookup_prerequisite_L:
  663|      5|{
  664|      5|  if (NODE_IS_IFACE (iface) && IFACE_NODE_N_PREREQUISITES (iface))
  ------------------
  |  |  258|     10|#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: 5, False: 0]
  |  |  ------------------
  ------------------
                if (NODE_IS_IFACE (iface) && IFACE_NODE_N_PREREQUISITES (iface))
  ------------------
  |  |  261|      5|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  |  |  ------------------
  |  |  |  Branch (261:42): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  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|      5|  return FALSE;
  ------------------
  |  |  814|      5|#define	FALSE	(0)
  ------------------
  689|      5|}
gtype.c:type_node_conforms_to_U:
 3552|  42.5M|{
 3553|  42.5M|  return type_node_check_conformities_UorL (node, iface_node, support_interfaces, support_prerequisites, FALSE);
  ------------------
  |  |  814|  42.5M|#define	FALSE	(0)
  ------------------
 3554|  42.5M|}
gtype.c:type_get_qdata_L:
 3699|    273|{
 3700|    273|  GData *gdata = node->global_gdata;
 3701|       |  
 3702|    273|  if (quark && gdata && gdata->n_qdatas)
  ------------------
  |  Branch (3702:7): [True: 273, False: 0]
  |  Branch (3702:16): [True: 158, False: 115]
  |  Branch (3702:25): [True: 158, False: 0]
  ------------------
 3703|    158|    {
 3704|    158|      QData *qdatas = gdata->qdatas - 1;
 3705|    158|      guint n_qdatas = gdata->n_qdatas;
 3706|       |      
 3707|    158|      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: 143, False: 51]
  ------------------
 3715|    143|	    return check->data;
 3716|     51|	  else if (quark > check->quark)
  ------------------
  |  Branch (3716:13): [True: 51, False: 0]
  ------------------
 3717|     51|	    {
 3718|     51|	      n_qdatas -= i;
 3719|     51|	      qdatas = check;
 3720|     51|	    }
 3721|      0|	  else /* if (quark < check->quark) */
 3722|      0|	    n_qdatas = i - 1;
 3723|    194|	}
 3724|    158|      while (n_qdatas);
  ------------------
  |  Branch (3724:14): [True: 36, False: 15]
  ------------------
 3725|    158|    }
 3726|    130|  return NULL;
 3727|    273|}
gtype.c:type_set_qdata_W:
 3769|    128|{
 3770|    128|  GData *gdata;
 3771|    128|  QData *qdata;
 3772|    128|  guint i;
 3773|       |  
 3774|       |  /* setup qdata list if necessary */
 3775|    128|  if (!node->global_gdata)
  ------------------
  |  Branch (3775:7): [True: 115, False: 13]
  ------------------
 3776|    115|    node->global_gdata = g_new0 (GData, 1);
  ------------------
  |  |  307|    115|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|    115|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    115|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|    115|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|    115|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|    115|	  gpointer __p;						\
  |  |  |  |  239|    115|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 115]
  |  |  |  |  ------------------
  |  |  |  |  240|    115|	    __p = g_##func (__n);				\
  |  |  |  |  241|    115|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 115, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|    115|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|    115|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|    115|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 115]
  |  |  |  |  |  Branch (242:26): [True: 115, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|    115|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|    115|	  else							\
  |  |  |  |  245|    115|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|    115|	  __p;							\
  |  |  |  |  247|    115|	}))
  |  |  ------------------
  ------------------
 3777|    128|  gdata = node->global_gdata;
 3778|       |  
 3779|       |  /* try resetting old data */
 3780|    128|  qdata = gdata->qdatas;
 3781|    141|  for (i = 0; i < gdata->n_qdatas; i++)
  ------------------
  |  Branch (3781:15): [True: 21, False: 120]
  ------------------
 3782|     21|    if (qdata[i].quark == quark)
  ------------------
  |  Branch (3782:9): [True: 8, False: 13]
  ------------------
 3783|      8|      {
 3784|      8|	qdata[i].data = data;
 3785|      8|	return;
 3786|      8|      }
 3787|       |  
 3788|       |  /* add new entry */
 3789|    120|  gdata->n_qdatas++;
 3790|    120|  gdata->qdatas = g_renew (QData, gdata->qdatas, gdata->n_qdatas);
  ------------------
  |  |  321|    120|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|    120|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    120|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|    120|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|    120|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|    120|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|    120|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 120]
  |  |  |  |  ------------------
  |  |  |  |  254|    120|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|    120|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 120]
  |  |  |  |  ------------------
  |  |  |  |  256|    120|	           (__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|    120|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|    120|	  else							\
  |  |  |  |  259|    120|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|    120|	  __p;							\
  |  |  |  |  261|    120|	}))
  |  |  ------------------
  ------------------
 3791|    120|  qdata = gdata->qdatas;
 3792|    125|  for (i = 0; i < gdata->n_qdatas - 1; i++)
  ------------------
  |  Branch (3792:15): [True: 5, False: 120]
  ------------------
 3793|      5|    if (qdata[i].quark > quark)
  ------------------
  |  Branch (3793:9): [True: 0, False: 5]
  ------------------
 3794|      0|      break;
 3795|    120|  memmove (qdata + i + 1, qdata + i, sizeof (qdata[0]) * (gdata->n_qdatas - i - 1));
 3796|    120|  qdata[i].quark = quark;
 3797|    120|  qdata[i].data = data;
 3798|    120|}
gtype.c:type_add_flags_W:
 3831|    115|{
 3832|    115|  guint dflags;
 3833|       |  
 3834|    115|  g_return_if_fail ((flags & ~TYPE_FLAG_MASK) == 0);
  ------------------
  |  |  630|    115|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    115|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    115|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    115|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    115| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    115|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    115|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    115|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 115, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    115|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    115|   else                                         \
  |  |  |  |  |  | 1021|    115|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    115|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    115|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 115, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    115|      { } \
  |  |  633|    115|    else \
  |  |  634|    115|      { \
  |  |  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|    115|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    115|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 115]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3835|    115|  g_return_if_fail (node != NULL);
  ------------------
  |  |  630|    115|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    115|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    115|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    115|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    115| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    115|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    115|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    115|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 115, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    115|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    115|   else                                         \
  |  |  |  |  |  | 1021|    115|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    115|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    115|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 115, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    115|      { } \
  |  |  633|    115|    else \
  |  |  634|    115|      { \
  |  |  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|    115|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    115|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 115]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3836|       |  
 3837|    115|  if ((flags & TYPE_FLAG_MASK) && node->is_classed && node->data && node->data->class.class)
  ------------------
  |  |  146|    115|#define	TYPE_FLAG_MASK		   (G_TYPE_FLAG_ABSTRACT | G_TYPE_FLAG_VALUE_ABSTRACT)
  ------------------
  |  Branch (3837:7): [True: 8, False: 107]
  |  Branch (3837:35): [True: 6, False: 2]
  |  Branch (3837:55): [True: 0, False: 6]
  |  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|    115|  dflags = GPOINTER_TO_UINT (type_get_qdata_L (node, static_quark_type_flags));
  ------------------
  |  |   99|    115|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 3840|    115|  dflags |= flags;
 3841|    115|  type_set_qdata_W (node, static_quark_type_flags, GUINT_TO_POINTER (dflags));
  ------------------
  |  |  102|    115|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
 3842|    115|}
gtype.c:type_node_fundamental_info_I:
  529|    256|{
  530|    256|  GType ftype = NODE_FUNDAMENTAL_TYPE (node);
  ------------------
  |  |  254|    256|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  531|       |  
  532|    256|  if (ftype != NODE_TYPE (node))
  ------------------
  |  |  252|    256|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
  |  Branch (532:7): [True: 33, False: 223]
  ------------------
  533|     33|    node = lookup_type_node_I (ftype);
  534|       |  
  535|    256|  return node ? G_STRUCT_MEMBER_P (node, -SIZEOF_FUNDAMENTAL_INFO) : NULL;
  ------------------
  |  |  860|  1.02k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  |  |  |  Branch (860:50): [Folded, False: 256]
  |  |  |  Branch (860:50): [Folded, False: 0]
  |  |  |  Branch (860:50): [Folded, False: 256]
  |  |  ------------------
  ------------------
  |  Branch (535:10): [True: 256, False: 0]
  ------------------
  536|    256|}
gtype.c:type_check_is_value_type_U:
 4207|   691k|{
 4208|   691k|  GTypeFlags tflags = G_TYPE_FLAG_VALUE_ABSTRACT;
 4209|   691k|  TypeNode *node;
 4210|       |  
 4211|       |  /* common path speed up */
 4212|   691k|  node = lookup_type_node_I (type);
 4213|   691k|  if (node && node->mutatable_check_cache)
  ------------------
  |  Branch (4213:7): [True: 691k, False: 0]
  |  Branch (4213:15): [True: 691k, False: 1]
  ------------------
 4214|   691k|    return TRUE;
  ------------------
  |  |  818|   691k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   691k|#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|}

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|   346k|{
  165|   346k|  GTypeValueTable *value_table;
  166|       |  /* g_return_val_if_fail (G_TYPE_IS_VALUE (g_type), NULL);	be more elaborate below */
  167|   346k|  g_return_val_if_fail (value != NULL, NULL);
  ------------------
  |  |  643|   346k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   346k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   346k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   346k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   346k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   346k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   346k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 346k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   346k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   346k|   else                                         \
  |  |  |  |  |  | 1021|   346k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   346k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   346k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 346k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   346k|      { } \
  |  |  646|   346k|    else \
  |  |  647|   346k|      { \
  |  |  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|   346k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   346k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 346k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  168|       |  /* g_return_val_if_fail (G_VALUE_TYPE (value) == 0, NULL);	be more elaborate below */
  169|       |
  170|   346k|  value_table = g_type_value_table_peek (g_type);
  171|       |
  172|   346k|  if (value_table && G_VALUE_TYPE (value) == 0)
  ------------------
  |  |   59|   346k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  |  Branch (172:7): [True: 346k, False: 0]
  |  Branch (172:22): [True: 346k, False: 0]
  ------------------
  173|   346k|    {
  174|       |      /* setup and init */
  175|   346k|      value_meminit (value, g_type);
  176|   346k|      value_table->value_init (value);
  177|   346k|    }
  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|   346k|               G_STRLOC,
  186|   346k|               g_type_name (g_type),
  187|   346k|               value_table ? "this type is abstract with regards to GValue use, use a more specific (derived) type" : "this type has no GTypeValueTable implementation");
  188|   346k|  return value;
  189|   346k|}
g_value_copy:
  201|   346k|{
  202|   346k|  g_return_if_fail (src_value);
  ------------------
  |  |  630|   346k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   346k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   346k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   346k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   346k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   346k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   346k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 346k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   346k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   346k|   else                                         \
  |  |  |  |  |  | 1021|   346k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   346k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   346k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 346k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   346k|      { } \
  |  |  633|   346k|    else \
  |  |  634|   346k|      { \
  |  |  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|   346k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   346k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 346k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  203|   346k|  g_return_if_fail (dest_value);
  ------------------
  |  |  630|   346k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   346k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   346k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   346k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   346k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   346k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   346k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 346k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   346k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   346k|   else                                         \
  |  |  |  |  |  | 1021|   346k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   346k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   346k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 346k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   346k|      { } \
  |  |  633|   346k|    else \
  |  |  634|   346k|      { \
  |  |  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|   346k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   346k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 346k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  204|   346k|  g_return_if_fail (g_value_type_compatible (G_VALUE_TYPE (src_value), G_VALUE_TYPE (dest_value)));
  ------------------
  |  |  630|   346k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   346k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   346k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   346k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   346k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   346k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   346k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 346k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   346k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   346k|   else                                         \
  |  |  |  |  |  | 1021|   346k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   346k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   346k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 346k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   346k|      { } \
  |  |  633|   346k|    else \
  |  |  634|   346k|      { \
  |  |  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|   346k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   346k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 346k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  205|       |  
  206|   346k|  if (src_value != dest_value)
  ------------------
  |  Branch (206:7): [True: 346k, False: 0]
  ------------------
  207|   346k|    {
  208|   346k|      GType dest_type = G_VALUE_TYPE (dest_value);
  ------------------
  |  |   59|   346k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  209|   346k|      GTypeValueTable *value_table = g_type_value_table_peek (dest_type);
  210|       |
  211|   346k|      g_return_if_fail (value_table);
  ------------------
  |  |  630|   346k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   346k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   346k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   346k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   346k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   346k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   346k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 346k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   346k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   346k|   else                                         \
  |  |  |  |  |  | 1021|   346k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   346k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   346k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 346k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   346k|      { } \
  |  |  633|   346k|    else \
  |  |  634|   346k|      { \
  |  |  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|   346k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   346k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 346k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  212|       |
  213|       |      /* make sure dest_value's value is free()d */
  214|   346k|      if (value_table->value_free)
  ------------------
  |  Branch (214:11): [True: 345k, False: 740]
  ------------------
  215|   345k|	value_table->value_free (dest_value);
  216|       |
  217|       |      /* setup and copy */
  218|   346k|      value_meminit (dest_value, dest_type);
  219|   346k|      value_table->value_copy (src_value, dest_value);
  220|   346k|    }
  221|   346k|}
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|   348k|{
  267|   348k|  GTypeValueTable *value_table;
  268|       |  
  269|   348k|  if (value->g_type == 0)
  ------------------
  |  Branch (269:7): [True: 0, False: 348k]
  ------------------
  270|      0|    return;
  271|       |
  272|   348k|  g_return_if_fail (value);
  ------------------
  |  |  630|   348k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   348k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   348k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   348k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   348k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   348k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   348k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   348k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 348k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   348k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   348k|   else                                         \
  |  |  |  |  |  | 1021|   348k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   348k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   348k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 348k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   348k|      { } \
  |  |  633|   348k|    else \
  |  |  634|   348k|      { \
  |  |  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|   348k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   348k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 348k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  273|       |
  274|   348k|  value_table = g_type_value_table_peek (G_VALUE_TYPE (value));
  ------------------
  |  |   59|   348k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  275|   348k|  g_return_if_fail (value_table);
  ------------------
  |  |  630|   348k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   348k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   348k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   348k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   348k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   348k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   348k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   348k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 348k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   348k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   348k|   else                                         \
  |  |  |  |  |  | 1021|   348k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   348k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   348k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 348k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   348k|      { } \
  |  |  633|   348k|    else \
  |  |  634|   348k|      { \
  |  |  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|   348k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   348k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 348k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  276|       |
  277|   348k|  if (value_table->value_free)
  ------------------
  |  Branch (277:7): [True: 347k, False: 740]
  ------------------
  278|   347k|    value_table->value_free (value);
  279|   348k|  memset (value, 0, sizeof (*value));
  280|   348k|}
g_value_peek_pointer:
  316|  3.78k|{
  317|  3.78k|  GTypeValueTable *value_table;
  318|       |
  319|  3.78k|  g_return_val_if_fail (value, NULL);
  ------------------
  |  |  643|  3.78k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.78k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.78k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.78k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.78k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.78k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.78k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.78k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.78k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.78k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.78k|   else                                         \
  |  |  |  |  |  | 1021|  3.78k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.78k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.78k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.78k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.78k|      { } \
  |  |  646|  3.78k|    else \
  |  |  647|  3.78k|      { \
  |  |  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.78k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.78k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.78k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  320|       |
  321|  3.78k|  value_table = g_type_value_table_peek (G_VALUE_TYPE (value));
  ------------------
  |  |   59|  3.78k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  322|  3.78k|  g_return_val_if_fail (value_table, NULL);
  ------------------
  |  |  643|  3.78k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.78k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.78k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.78k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.78k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.78k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.78k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.78k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.78k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.78k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.78k|   else                                         \
  |  |  |  |  |  | 1021|  3.78k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.78k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.78k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.78k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.78k|      { } \
  |  |  646|  3.78k|    else \
  |  |  647|  3.78k|      { \
  |  |  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.78k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.78k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.78k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  323|       |
  324|  3.78k|  if (!value_table->value_peek_pointer)
  ------------------
  |  Branch (324:7): [True: 0, False: 3.78k]
  ------------------
  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|  3.78k|  return value_table->value_peek_pointer (value);
  331|  3.78k|}
g_value_init_from_instance:
  404|  1.26k|{
  405|  1.26k|  g_return_if_fail (value != NULL && G_VALUE_TYPE(value) == 0);
  ------------------
  |  |  630|  1.26k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.26k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.26k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.26k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.26k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.26k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.26k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.78k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.26k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.26k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.26k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.26k|   else                                         \
  |  |  |  |  |  | 1021|  1.26k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.26k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.26k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.26k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.26k|      { } \
  |  |  633|  1.26k|    else \
  |  |  634|  1.26k|      { \
  |  |  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.26k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.26k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.26k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  406|       |
  407|  1.26k|  if (G_IS_OBJECT (instance))
  ------------------
  |  |   71|  1.26k|#define G_IS_OBJECT(object)         (G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE ((object), G_TYPE_OBJECT))
  |  |  ------------------
  |  |  |  |  510|  1.26k|#define G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE(instance, g_type)            (_G_TYPE_CIFT ((instance), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2311|  1.26k|#define _G_TYPE_CIFT(ip, ft)            (g_type_check_instance_is_fundamentally_a ((GTypeInstance*) ip, ft))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (71:37): [True: 1.26k, False: 0]
  |  |  ------------------
  ------------------
  408|  1.26k|    {
  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.26k|      value_meminit (value, G_TYPE_FROM_INSTANCE (instance));
  ------------------
  |  |  602|  1.26k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|  1.26k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
  415|  1.26k|      value->data[0].v_pointer = g_object_ref (instance);
  ------------------
  |  |  523|  1.26k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
  416|  1.26k|    }
  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.26k|}
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|   693k|{
  583|   693k|  g_return_val_if_fail (src_type, FALSE);
  ------------------
  |  |  643|   693k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   693k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   693k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   693k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   693k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   693k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   693k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   693k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 693k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   693k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   693k|   else                                         \
  |  |  |  |  |  | 1021|   693k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   693k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   693k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 693k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   693k|      { } \
  |  |  646|   693k|    else \
  |  |  647|   693k|      { \
  |  |  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|   693k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   693k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 693k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  584|   693k|  g_return_val_if_fail (dest_type, FALSE);
  ------------------
  |  |  643|   693k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   693k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   693k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   693k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   693k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   693k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   693k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   693k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 693k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   693k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   693k|   else                                         \
  |  |  |  |  |  | 1021|   693k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   693k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   693k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 693k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   693k|      { } \
  |  |  646|   693k|    else \
  |  |  647|   693k|      { \
  |  |  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|   693k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   693k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 693k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  585|       |
  586|       |  /* Fast path */
  587|   693k|  if (src_type == dest_type)
  ------------------
  |  Branch (587:7): [True: 692k, False: 1.26k]
  ------------------
  588|   692k|    return TRUE;
  ------------------
  |  |  818|   692k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   692k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  589|       |
  590|  1.26k|  return (g_type_is_a (src_type, dest_type) &&
  ------------------
  |  Branch (590:11): [True: 1.26k, False: 0]
  ------------------
  591|  1.26k|	  g_type_value_table_peek (dest_type) == g_type_value_table_peek (src_type));
  ------------------
  |  Branch (591:4): [True: 1.26k, False: 0]
  ------------------
  592|   693k|}
g_value_transform:
  613|   346k|{
  614|   346k|  GType dest_type;
  615|       |
  616|   346k|  g_return_val_if_fail (src_value, FALSE);
  ------------------
  |  |  643|   346k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   346k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   346k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   346k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   346k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   346k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   346k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 346k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   346k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   346k|   else                                         \
  |  |  |  |  |  | 1021|   346k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   346k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   346k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 346k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   346k|      { } \
  |  |  646|   346k|    else \
  |  |  647|   346k|      { \
  |  |  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|   346k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   346k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 346k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  617|   346k|  g_return_val_if_fail (dest_value, FALSE);
  ------------------
  |  |  643|   346k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   346k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   346k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   346k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   346k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   346k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   346k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   346k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 346k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   346k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   346k|   else                                         \
  |  |  |  |  |  | 1021|   346k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   346k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   346k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 346k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   346k|      { } \
  |  |  646|   346k|    else \
  |  |  647|   346k|      { \
  |  |  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|   346k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   346k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 346k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  618|       |
  619|   346k|  dest_type = G_VALUE_TYPE (dest_value);
  ------------------
  |  |   59|   346k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  620|   346k|  if (g_value_type_compatible (G_VALUE_TYPE (src_value), dest_type))
  ------------------
  |  |   59|   346k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  |  Branch (620:7): [True: 346k, False: 0]
  ------------------
  621|   346k|    {
  622|   346k|      g_value_copy (src_value, dest_value);
  623|       |      
  624|   346k|      return TRUE;
  ------------------
  |  |  818|   346k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   346k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  625|   346k|    }
  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|   346k|}
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|   693k|{
  148|   693k|  value->g_type = value_type;
  149|   693k|  memset (value->data, 0, sizeof (value->data));
  150|   693k|}

_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|    740|{
 1191|    740|  g_return_val_if_fail (G_VALUE_HOLDS_POINTER (value), NULL);
  ------------------
  |  |  643|    740|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    740|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    740|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    740|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    740| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    740|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.70k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 740]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 740, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    740|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    740|   else                                         \
  |  |  |  |  |  | 1021|    740|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    740|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    740|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    740|      { } \
  |  |  646|    740|    else \
  |  |  647|    740|      { \
  |  |  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|    740|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    740|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 740]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1192|       |
 1193|    740|  return value->data[0].v_pointer;
 1194|    740|}
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|    742|{
  321|       |  value->data[0].v_pointer = NULL;
  322|    742|}
gvaluetypes.c:value_copy_pointer:
  327|    740|{
  328|    740|  dest_value->data[0].v_pointer = src_value->data[0].v_pointer;
  329|    740|}

LLVMFuzzerInitialize:
   15|      2|{
   16|      2|	g_type_ensure(FU_TYPE_WACOM_USB_FIRMWARE);
  ------------------
  |  |   15|      2|#define FU_TYPE_USB_DEVICE (fu_usb_device_get_type())
  ------------------
   17|      2|	return 0;
   18|      2|}
LLVMFuzzerTestOneInput:
   22|    740|{
   23|    740|	g_autoptr(GObject) object = g_object_new(FU_TYPE_WACOM_USB_FIRMWARE, NULL);
  ------------------
  |  | 1162|    740|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|    740|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
              	g_autoptr(GObject) object = g_object_new(FU_TYPE_WACOM_USB_FIRMWARE, NULL);
  ------------------
  |  |   15|    740|#define FU_TYPE_USB_DEVICE (fu_usb_device_get_type())
  ------------------
   24|    740|	g_autoptr(GBytes) blob = g_bytes_new_static(data, size);
  ------------------
  |  | 1162|    740|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|    740|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
   25|       |
   26|    740|	(void)g_setenv("G_DEBUG", "fatal-criticals", TRUE);
  ------------------
  |  |  818|    740|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    740|#define	FALSE	(0)
  |  |  ------------------
  ------------------
   27|    740|	(void)g_setenv("FWUPD_FUZZER_RUNNING", "1", TRUE);
  ------------------
  |  |  818|    740|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    740|#define	FALSE	(0)
  |  |  ------------------
  ------------------
   28|       |
   29|       |	fu_fuzzer_test_input(FU_FUZZER(object), blob, NULL);
   30|    740|	return 0;
   31|    740|}

fu_usb_descriptor_kind_to_string:
   92|   219k|{
   93|   219k|    if (val == FU_USB_DESCRIPTOR_KIND_INVALID)
  ------------------
  |  Branch (93:9): [True: 1.52k, False: 217k]
  ------------------
   94|  1.52k|        return "invalid";
   95|   217k|    if (val == FU_USB_DESCRIPTOR_KIND_DEVICE)
  ------------------
  |  Branch (95:9): [True: 172k, False: 44.9k]
  ------------------
   96|   172k|        return "device";
   97|  44.9k|    if (val == FU_USB_DESCRIPTOR_KIND_CONFIG)
  ------------------
  |  Branch (97:9): [True: 1, False: 44.9k]
  ------------------
   98|      1|        return "config";
   99|  44.9k|    if (val == FU_USB_DESCRIPTOR_KIND_STRING)
  ------------------
  |  Branch (99:9): [True: 15.8k, False: 29.1k]
  ------------------
  100|  15.8k|        return "string";
  101|  29.1k|    if (val == FU_USB_DESCRIPTOR_KIND_INTERFACE)
  ------------------
  |  Branch (101:9): [True: 1, False: 29.1k]
  ------------------
  102|      1|        return "interface";
  103|  29.1k|    if (val == FU_USB_DESCRIPTOR_KIND_ENDPOINT)
  ------------------
  |  Branch (103:9): [True: 1, False: 29.1k]
  ------------------
  104|      1|        return "endpoint";
  105|  29.1k|    if (val == FU_USB_DESCRIPTOR_KIND_INTERFACE_ASSOCIATION)
  ------------------
  |  Branch (105:9): [True: 261, False: 28.9k]
  ------------------
  106|    261|        return "interface-association";
  107|  28.9k|    if (val == FU_USB_DESCRIPTOR_KIND_BOS)
  ------------------
  |  Branch (107:9): [True: 270, False: 28.6k]
  ------------------
  108|    270|        return "bos";
  109|  28.6k|    if (val == FU_USB_DESCRIPTOR_KIND_DEVICE_CAPABILITY)
  ------------------
  |  Branch (109:9): [True: 757, False: 27.8k]
  ------------------
  110|    757|        return "device-capability";
  111|  27.8k|    if (val == FU_USB_DESCRIPTOR_KIND_HID)
  ------------------
  |  Branch (111:9): [True: 1, False: 27.8k]
  ------------------
  112|      1|        return "hid";
  113|  27.8k|    if (val == FU_USB_DESCRIPTOR_KIND_REPORT)
  ------------------
  |  Branch (113:9): [True: 1.08k, False: 26.8k]
  ------------------
  114|  1.08k|        return "report";
  115|  26.8k|    if (val == FU_USB_DESCRIPTOR_KIND_PHYSICAL)
  ------------------
  |  Branch (115:9): [True: 321, False: 26.4k]
  ------------------
  116|    321|        return "physical";
  117|  26.4k|    if (val == FU_USB_DESCRIPTOR_KIND_HUB)
  ------------------
  |  Branch (117:9): [True: 245, False: 26.2k]
  ------------------
  118|    245|        return "hub";
  119|  26.2k|    if (val == FU_USB_DESCRIPTOR_KIND_SUPERSPEED_HUB)
  ------------------
  |  Branch (119:9): [True: 715, False: 25.5k]
  ------------------
  120|    715|        return "superspeed-hub";
  121|  25.5k|    if (val == FU_USB_DESCRIPTOR_KIND_SS_ENDPOINT_COMPANION)
  ------------------
  |  Branch (121:9): [True: 338, False: 25.1k]
  ------------------
  122|    338|        return "ss-endpoint-companion";
  123|  25.1k|    return NULL;
  124|  25.5k|}
fu_usb_base_hdr_unref:
  183|   658k|{
  184|   658k|    g_return_if_fail(st != NULL);
  ------------------
  |  |  630|   658k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   658k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   658k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   658k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   658k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   658k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   658k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   658k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 658k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   658k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   658k|   else                                         \
  |  |  |  |  |  | 1021|   658k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   658k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   658k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 658k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   658k|      { } \
  |  |  633|   658k|    else \
  |  |  634|   658k|      { \
  |  |  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|   658k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   658k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 658k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  185|   658k|    if (st->refcount == 0) {
  ------------------
  |  Branch (185:9): [True: 0, False: 658k]
  ------------------
  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|   658k|    if (--st->refcount > 0)
  ------------------
  |  Branch (189:9): [True: 0, False: 658k]
  ------------------
  190|      0|        return;
  191|   658k|    if (st->buf != NULL)
  ------------------
  |  Branch (191:9): [True: 658k, False: 78]
  ------------------
  192|   658k|        g_byte_array_unref(st->buf);
  193|   658k|    g_free(st);
  194|   658k|}
fu_usb_base_hdr_get_length:
  212|  1.13M|{
  213|  1.13M|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  1.13M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.13M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.13M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.13M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.13M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.13M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.13M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.13M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.13M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.13M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.13M|   else                                         \
  |  |  |  |  |  | 1021|  1.13M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.13M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.13M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.13M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.13M|      { } \
  |  |  646|  1.13M|    else \
  |  |  647|  1.13M|      { \
  |  |  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.13M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.13M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.13M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  214|  1.13M|    return st->buf->data[0];
  215|  1.13M|}
fu_usb_base_hdr_get_descriptor_type:
  221|   658k|{
  222|   658k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|   658k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   658k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   658k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   658k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   658k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   658k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   658k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   658k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 658k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   658k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   658k|   else                                         \
  |  |  |  |  |  | 1021|   658k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   658k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   658k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 658k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   658k|      { } \
  |  |  646|   658k|    else \
  |  |  647|   658k|      { \
  |  |  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|   658k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   658k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 658k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  223|   658k|    return st->buf->data[1];
  224|   658k|}
fu_usb_base_hdr_parse:
  264|   458k|{
  265|   458k|    g_autoptr(FuUsbBaseHdr) st = fu_usb_base_hdr_new_internal();
  ------------------
  |  | 1162|   458k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   458k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  266|   458k|    g_return_val_if_fail(buf != NULL, NULL);
  ------------------
  |  |  643|   458k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   458k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   458k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   458k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   458k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   458k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   458k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   458k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 458k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   458k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   458k|   else                                         \
  |  |  |  |  |  | 1021|   458k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   458k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   458k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 458k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   458k|      { } \
  |  |  646|   458k|    else \
  |  |  647|   458k|      { \
  |  |  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|   458k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   458k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 458k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  267|   458k|    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
  ------------------
  |  |  643|   458k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   458k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   458k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   458k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   458k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   458k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   458k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.37M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 458k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 458k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   458k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   458k|   else                                         \
  |  |  |  |  |  | 1021|   458k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   458k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   458k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 458k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   458k|      { } \
  |  |  646|   458k|    else \
  |  |  647|   458k|      { \
  |  |  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|   458k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   458k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 458k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  268|   458k|    if (!fu_memchk_read(bufsz, offset, 2, error)) {
  ------------------
  |  Branch (268:9): [True: 78, False: 458k]
  ------------------
  269|     78|        g_prefix_error_literal(error, "invalid struct FuUsbBaseHdr: ");
  ------------------
  |  |   13|     78|#define g_prefix_error_literal	  g_prefix_error
  ------------------
  270|     78|        return NULL;
  271|     78|    }
  272|   458k|    st->buf = g_byte_array_new();
  273|   458k|    g_byte_array_append(st->buf, buf + offset, 2);
  274|   458k|    if (!fu_usb_base_hdr_parse_internal(st, error))
  ------------------
  |  Branch (274:9): [True: 0, False: 458k]
  ------------------
  275|      0|        return NULL;
  276|   458k|    return g_steal_pointer(&st);
  ------------------
  |  |  222|   458k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  277|   458k|}
fu_usb_base_hdr_parse_bytes:
  283|   458k|{
  284|   458k|    gsize bufsz = 0;
  285|   458k|    const guint8 *buf = fu_bytes_get_data_safe(blob, &bufsz, error);
  286|   458k|    if (buf == NULL)
  ------------------
  |  Branch (286:9): [True: 0, False: 458k]
  ------------------
  287|      0|        return NULL;
  288|   458k|    return fu_usb_base_hdr_parse(buf, bufsz, offset, error);
  289|   458k|}
fu_usb_base_hdr_parse_stream:
  295|   199k|{
  296|   199k|    g_autoptr(FuUsbBaseHdr) st = fu_usb_base_hdr_new_internal();
  ------------------
  |  | 1162|   199k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   199k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  297|   199k|    st->buf = fu_input_stream_read_byte_array(stream, offset, 2, NULL, error);
  298|   199k|    if (st->buf == NULL) {
  ------------------
  |  Branch (298:9): [True: 0, False: 199k]
  ------------------
  299|      0|        g_prefix_error(error, "FuUsbBaseHdr failed read of 0x%x: ", (guint) 2);
  300|      0|        return NULL;
  301|      0|    }
  302|   199k|    if (st->buf->len != 2) {
  ------------------
  |  Branch (302:9): [True: 161, False: 199k]
  ------------------
  303|    161|        g_set_error(error,
  304|    161|                    FWUPD_ERROR,
  ------------------
  |  |   15|    161|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  305|    161|                    FWUPD_ERROR_INVALID_DATA,
  306|    161|                    "FuUsbBaseHdr requested 0x%x and got 0x%x",
  307|    161|                    (guint) 2,
  308|    161|                    (guint) st->buf->len);
  309|    161|        return NULL;
  310|    161|    }
  311|   199k|    if (!fu_usb_base_hdr_parse_internal(st, error))
  ------------------
  |  Branch (311:9): [True: 0, False: 199k]
  ------------------
  312|      0|        return NULL;
  313|   199k|    return g_steal_pointer(&st);
  ------------------
  |  |  222|   199k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  314|   199k|}
fu_usb_device_hdr_unref:
  330|    735|{
  331|    735|    g_return_if_fail(st != NULL);
  ------------------
  |  |  630|    735|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    735|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    735|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    735|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    735| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    735|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    735|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    735|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 735, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    735|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    735|   else                                         \
  |  |  |  |  |  | 1021|    735|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    735|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    735|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 735, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    735|      { } \
  |  |  633|    735|    else \
  |  |  634|    735|      { \
  |  |  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|    735|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    735|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 735]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  332|    735|    if (st->refcount == 0) {
  ------------------
  |  Branch (332:9): [True: 0, False: 735]
  ------------------
  333|      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__)
  ------------------
  334|      0|        return;
  335|      0|    }
  336|    735|    if (--st->refcount > 0)
  ------------------
  |  Branch (336:9): [True: 0, False: 735]
  ------------------
  337|      0|        return;
  338|    735|    if (st->buf != NULL)
  ------------------
  |  Branch (338:9): [True: 720, False: 15]
  ------------------
  339|    720|        g_byte_array_unref(st->buf);
  340|    735|    g_free(st);
  341|    735|}
fu_usb_device_hdr_get_length:
  359|  1.36k|{
  360|  1.36k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  1.36k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.36k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.36k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.36k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.36k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.36k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.36k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.36k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.36k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.36k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.36k|   else                                         \
  |  |  |  |  |  | 1021|  1.36k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.36k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.36k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.36k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.36k|      { } \
  |  |  646|  1.36k|    else \
  |  |  647|  1.36k|      { \
  |  |  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.36k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.36k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.36k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  361|  1.36k|    return st->buf->data[0];
  362|  1.36k|}
fu_usb_device_hdr_get_usb:
  377|    682|{
  378|    682|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    682|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    682|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    682|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    682|      { } \
  |  |  646|    682|    else \
  |  |  647|    682|      { \
  |  |  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|    682|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    682|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  379|    682|    return fu_memread_uint16(st->buf->data + 2, G_LITTLE_ENDIAN);
  ------------------
  |  |  184|    682|#define G_LITTLE_ENDIAN 1234
  ------------------
  380|    682|}
fu_usb_device_hdr_get_device_class:
  386|    682|{
  387|    682|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    682|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    682|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    682|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    682|      { } \
  |  |  646|    682|    else \
  |  |  647|    682|      { \
  |  |  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|    682|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    682|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  388|    682|    return st->buf->data[4];
  389|    682|}
fu_usb_device_hdr_get_device_sub_class:
  395|    682|{
  396|    682|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    682|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    682|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    682|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    682|      { } \
  |  |  646|    682|    else \
  |  |  647|    682|      { \
  |  |  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|    682|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    682|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  397|    682|    return st->buf->data[5];
  398|    682|}
fu_usb_device_hdr_get_device_protocol:
  404|    682|{
  405|    682|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    682|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    682|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    682|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    682|      { } \
  |  |  646|    682|    else \
  |  |  647|    682|      { \
  |  |  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|    682|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    682|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  406|    682|    return st->buf->data[6];
  407|    682|}
fu_usb_device_hdr_get_max_packet_size0:
  413|    682|{
  414|    682|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    682|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    682|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    682|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    682|      { } \
  |  |  646|    682|    else \
  |  |  647|    682|      { \
  |  |  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|    682|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    682|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  415|    682|    return st->buf->data[7];
  416|    682|}
fu_usb_device_hdr_get_vendor:
  422|    682|{
  423|    682|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    682|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    682|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    682|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    682|      { } \
  |  |  646|    682|    else \
  |  |  647|    682|      { \
  |  |  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|    682|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    682|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  424|    682|    return fu_memread_uint16(st->buf->data + 8, G_LITTLE_ENDIAN);
  ------------------
  |  |  184|    682|#define G_LITTLE_ENDIAN 1234
  ------------------
  425|    682|}
fu_usb_device_hdr_get_product:
  431|    682|{
  432|    682|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    682|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    682|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    682|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    682|      { } \
  |  |  646|    682|    else \
  |  |  647|    682|      { \
  |  |  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|    682|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    682|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  433|    682|    return fu_memread_uint16(st->buf->data + 10, G_LITTLE_ENDIAN);
  ------------------
  |  |  184|    682|#define G_LITTLE_ENDIAN 1234
  ------------------
  434|    682|}
fu_usb_device_hdr_get_device:
  440|    682|{
  441|    682|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    682|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    682|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    682|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    682|      { } \
  |  |  646|    682|    else \
  |  |  647|    682|      { \
  |  |  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|    682|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    682|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  442|    682|    return fu_memread_uint16(st->buf->data + 12, G_LITTLE_ENDIAN);
  ------------------
  |  |  184|    682|#define G_LITTLE_ENDIAN 1234
  ------------------
  443|    682|}
fu_usb_device_hdr_get_manufacturer_idx:
  449|    682|{
  450|    682|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    682|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    682|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    682|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    682|      { } \
  |  |  646|    682|    else \
  |  |  647|    682|      { \
  |  |  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|    682|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    682|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  451|    682|    return st->buf->data[14];
  452|    682|}
fu_usb_device_hdr_get_product_idx:
  458|    682|{
  459|    682|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    682|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    682|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    682|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    682|      { } \
  |  |  646|    682|    else \
  |  |  647|    682|      { \
  |  |  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|    682|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    682|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  460|    682|    return st->buf->data[15];
  461|    682|}
fu_usb_device_hdr_get_serial_number_idx:
  467|    682|{
  468|    682|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    682|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    682|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    682|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    682|      { } \
  |  |  646|    682|    else \
  |  |  647|    682|      { \
  |  |  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|    682|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    682|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  469|    682|    return st->buf->data[16];
  470|    682|}
fu_usb_device_hdr_get_num_configurations:
  476|    682|{
  477|    682|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    682|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    682|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    682|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    682|      { } \
  |  |  646|    682|    else \
  |  |  647|    682|      { \
  |  |  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|    682|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    682|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 682]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  478|    682|    return st->buf->data[17];
  479|    682|}
fu_usb_device_hdr_parse_bytes:
  586|    735|{
  587|    735|    gsize bufsz = 0;
  588|    735|    const guint8 *buf = fu_bytes_get_data_safe(blob, &bufsz, error);
  589|    735|    if (buf == NULL)
  ------------------
  |  Branch (589:9): [True: 0, False: 735]
  ------------------
  590|      0|        return NULL;
  591|    735|    return fu_usb_device_hdr_parse(buf, bufsz, offset, error);
  592|    735|}
fu_usb_descriptor_hdr_unref:
  608|   124k|{
  609|   124k|    g_return_if_fail(st != NULL);
  ------------------
  |  |  630|   124k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   124k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   124k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   124k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   124k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   124k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   124k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   124k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 124k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   124k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   124k|   else                                         \
  |  |  |  |  |  | 1021|   124k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   124k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   124k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 124k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   124k|      { } \
  |  |  633|   124k|    else \
  |  |  634|   124k|      { \
  |  |  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|   124k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   124k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 124k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  610|   124k|    if (st->refcount == 0) {
  ------------------
  |  Branch (610:9): [True: 0, False: 124k]
  ------------------
  611|      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__)
  ------------------
  612|      0|        return;
  613|      0|    }
  614|   124k|    if (--st->refcount > 0)
  ------------------
  |  Branch (614:9): [True: 0, False: 124k]
  ------------------
  615|      0|        return;
  616|   124k|    if (st->buf != NULL)
  ------------------
  |  Branch (616:9): [True: 124k, False: 0]
  ------------------
  617|   124k|        g_byte_array_unref(st->buf);
  618|   124k|    g_free(st);
  619|   124k|}
fu_usb_descriptor_hdr_get_configuration_value:
  673|   124k|{
  674|   124k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|   124k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   124k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   124k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   124k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   124k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   124k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   124k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   124k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 124k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   124k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   124k|   else                                         \
  |  |  |  |  |  | 1021|   124k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   124k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   124k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 124k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   124k|      { } \
  |  |  646|   124k|    else \
  |  |  647|   124k|      { \
  |  |  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|   124k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   124k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 124k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  675|   124k|    return st->buf->data[5];
  676|   124k|}
fu_usb_descriptor_hdr_get_configuration:
  682|   124k|{
  683|   124k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|   124k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   124k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   124k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   124k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   124k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   124k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   124k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   124k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 124k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   124k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   124k|   else                                         \
  |  |  |  |  |  | 1021|   124k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   124k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   124k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 124k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   124k|      { } \
  |  |  646|   124k|    else \
  |  |  647|   124k|      { \
  |  |  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|   124k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   124k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 124k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  684|   124k|    return st->buf->data[6];
  685|   124k|}
fu_usb_descriptor_hdr_parse_stream:
  772|   124k|{
  773|   124k|    g_autoptr(FuUsbDescriptorHdr) st = fu_usb_descriptor_hdr_new_internal();
  ------------------
  |  | 1162|   124k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   124k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  774|   124k|    st->buf = fu_input_stream_read_byte_array(stream, offset, 9, NULL, error);
  775|   124k|    if (st->buf == NULL) {
  ------------------
  |  Branch (775:9): [True: 0, False: 124k]
  ------------------
  776|      0|        g_prefix_error(error, "FuUsbDescriptorHdr failed read of 0x%x: ", (guint) 9);
  777|      0|        return NULL;
  778|      0|    }
  779|   124k|    if (st->buf->len != 9) {
  ------------------
  |  Branch (779:9): [True: 34, False: 124k]
  ------------------
  780|     34|        g_set_error(error,
  781|     34|                    FWUPD_ERROR,
  ------------------
  |  |   15|     34|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  782|     34|                    FWUPD_ERROR_INVALID_DATA,
  783|     34|                    "FuUsbDescriptorHdr requested 0x%x and got 0x%x",
  784|     34|                    (guint) 9,
  785|     34|                    (guint) st->buf->len);
  786|     34|        return NULL;
  787|     34|    }
  788|   124k|    if (!fu_usb_descriptor_hdr_parse_internal(st, error))
  ------------------
  |  Branch (788:9): [True: 0, False: 124k]
  ------------------
  789|      0|        return NULL;
  790|   124k|    return g_steal_pointer(&st);
  ------------------
  |  |  222|   124k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  791|   124k|}
fu_usb_hid_descriptor_hdr_unref:
  807|  17.7k|{
  808|  17.7k|    g_return_if_fail(st != NULL);
  ------------------
  |  |  630|  17.7k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  17.7k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  17.7k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  17.7k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  17.7k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  17.7k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  17.7k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  17.7k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 17.7k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  17.7k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  17.7k|   else                                         \
  |  |  |  |  |  | 1021|  17.7k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  17.7k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  17.7k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 17.7k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  17.7k|      { } \
  |  |  633|  17.7k|    else \
  |  |  634|  17.7k|      { \
  |  |  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|  17.7k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  17.7k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 17.7k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  809|  17.7k|    if (st->refcount == 0) {
  ------------------
  |  Branch (809:9): [True: 0, False: 17.7k]
  ------------------
  810|      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__)
  ------------------
  811|      0|        return;
  812|      0|    }
  813|  17.7k|    if (--st->refcount > 0)
  ------------------
  |  Branch (813:9): [True: 0, False: 17.7k]
  ------------------
  814|      0|        return;
  815|  17.7k|    if (st->buf != NULL)
  ------------------
  |  Branch (815:9): [True: 17.7k, False: 0]
  ------------------
  816|  17.7k|        g_byte_array_unref(st->buf);
  817|  17.7k|    g_free(st);
  818|  17.7k|}
fu_usb_hid_descriptor_hdr_get_class_descriptor_length:
  890|  17.7k|{
  891|  17.7k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  17.7k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  17.7k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  17.7k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  17.7k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  17.7k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  17.7k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  17.7k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  17.7k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 17.7k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  17.7k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  17.7k|   else                                         \
  |  |  |  |  |  | 1021|  17.7k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  17.7k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  17.7k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 17.7k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  17.7k|      { } \
  |  |  646|  17.7k|    else \
  |  |  647|  17.7k|      { \
  |  |  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|  17.7k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  17.7k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 17.7k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  892|  17.7k|    return fu_memread_uint16(st->buf->data + 7, G_LITTLE_ENDIAN);
  ------------------
  |  |  184|  17.7k|#define G_LITTLE_ENDIAN 1234
  ------------------
  893|  17.7k|}
fu_usb_hid_descriptor_hdr_parse_stream:
  960|  17.7k|{
  961|  17.7k|    g_autoptr(FuUsbHidDescriptorHdr) st = fu_usb_hid_descriptor_hdr_new_internal();
  ------------------
  |  | 1162|  17.7k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  17.7k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  962|  17.7k|    st->buf = fu_input_stream_read_byte_array(stream, offset, 9, NULL, error);
  963|  17.7k|    if (st->buf == NULL) {
  ------------------
  |  Branch (963:9): [True: 0, False: 17.7k]
  ------------------
  964|      0|        g_prefix_error(error, "FuUsbHidDescriptorHdr failed read of 0x%x: ", (guint) 9);
  965|      0|        return NULL;
  966|      0|    }
  967|  17.7k|    if (st->buf->len != 9) {
  ------------------
  |  Branch (967:9): [True: 11, False: 17.7k]
  ------------------
  968|     11|        g_set_error(error,
  969|     11|                    FWUPD_ERROR,
  ------------------
  |  |   15|     11|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  970|     11|                    FWUPD_ERROR_INVALID_DATA,
  971|     11|                    "FuUsbHidDescriptorHdr requested 0x%x and got 0x%x",
  972|     11|                    (guint) 9,
  973|     11|                    (guint) st->buf->len);
  974|     11|        return NULL;
  975|     11|    }
  976|  17.7k|    if (!fu_usb_hid_descriptor_hdr_parse_internal(st, error))
  ------------------
  |  Branch (976:9): [True: 0, False: 17.7k]
  ------------------
  977|      0|        return NULL;
  978|  17.7k|    return g_steal_pointer(&st);
  ------------------
  |  |  222|  17.7k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  979|  17.7k|}
fu_usb_interface_hdr_unref:
 1179|  59.9k|{
 1180|  59.9k|    g_return_if_fail(st != NULL);
  ------------------
  |  |  630|  59.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  59.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  59.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  59.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  59.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  59.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  59.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  59.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 59.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  59.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  59.9k|   else                                         \
  |  |  |  |  |  | 1021|  59.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  59.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  59.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 59.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  59.9k|      { } \
  |  |  633|  59.9k|    else \
  |  |  634|  59.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|  59.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  59.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 59.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1181|  59.9k|    if (st->refcount == 0) {
  ------------------
  |  Branch (1181:9): [True: 0, False: 59.9k]
  ------------------
 1182|      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__)
  ------------------
 1183|      0|        return;
 1184|      0|    }
 1185|  59.9k|    if (--st->refcount > 0)
  ------------------
  |  Branch (1185:9): [True: 0, False: 59.9k]
  ------------------
 1186|      0|        return;
 1187|  59.9k|    if (st->buf != NULL)
  ------------------
  |  Branch (1187:9): [True: 59.9k, False: 0]
  ------------------
 1188|  59.9k|        g_byte_array_unref(st->buf);
 1189|  59.9k|    g_free(st);
 1190|  59.9k|}
fu_usb_interface_hdr_get_length:
 1208|  59.9k|{
 1209|  59.9k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  59.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  59.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  59.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  59.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  59.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  59.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  59.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  59.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 59.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  59.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  59.9k|   else                                         \
  |  |  |  |  |  | 1021|  59.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  59.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  59.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 59.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  59.9k|      { } \
  |  |  646|  59.9k|    else \
  |  |  647|  59.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|  59.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  59.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 59.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1210|  59.9k|    return st->buf->data[0];
 1211|  59.9k|}
fu_usb_interface_hdr_get_interface_number:
 1226|  59.9k|{
 1227|  59.9k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  59.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  59.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  59.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  59.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  59.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  59.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  59.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  59.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 59.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  59.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  59.9k|   else                                         \
  |  |  |  |  |  | 1021|  59.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  59.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  59.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 59.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  59.9k|      { } \
  |  |  646|  59.9k|    else \
  |  |  647|  59.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|  59.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  59.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 59.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1228|  59.9k|    return st->buf->data[2];
 1229|  59.9k|}
fu_usb_interface_hdr_get_alternate_setting:
 1235|  59.9k|{
 1236|  59.9k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  59.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  59.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  59.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  59.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  59.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  59.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  59.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  59.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 59.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  59.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  59.9k|   else                                         \
  |  |  |  |  |  | 1021|  59.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  59.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  59.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 59.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  59.9k|      { } \
  |  |  646|  59.9k|    else \
  |  |  647|  59.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|  59.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  59.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 59.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1237|  59.9k|    return st->buf->data[3];
 1238|  59.9k|}
fu_usb_interface_hdr_get_num_endpoints:
 1244|  59.9k|{
 1245|  59.9k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  59.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  59.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  59.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  59.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  59.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  59.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  59.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  59.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 59.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  59.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  59.9k|   else                                         \
  |  |  |  |  |  | 1021|  59.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  59.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  59.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 59.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  59.9k|      { } \
  |  |  646|  59.9k|    else \
  |  |  647|  59.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|  59.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  59.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 59.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1246|  59.9k|    return st->buf->data[4];
 1247|  59.9k|}
fu_usb_interface_hdr_get_interface_class:
 1253|  59.9k|{
 1254|  59.9k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  59.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  59.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  59.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  59.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  59.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  59.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  59.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  59.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 59.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  59.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  59.9k|   else                                         \
  |  |  |  |  |  | 1021|  59.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  59.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  59.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 59.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  59.9k|      { } \
  |  |  646|  59.9k|    else \
  |  |  647|  59.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|  59.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  59.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 59.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1255|  59.9k|    return st->buf->data[5];
 1256|  59.9k|}
fu_usb_interface_hdr_get_interface_sub_class:
 1262|  59.9k|{
 1263|  59.9k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  59.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  59.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  59.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  59.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  59.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  59.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  59.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  59.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 59.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  59.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  59.9k|   else                                         \
  |  |  |  |  |  | 1021|  59.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  59.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  59.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 59.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  59.9k|      { } \
  |  |  646|  59.9k|    else \
  |  |  647|  59.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|  59.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  59.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 59.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1264|  59.9k|    return st->buf->data[6];
 1265|  59.9k|}
fu_usb_interface_hdr_get_interface_protocol:
 1271|  59.9k|{
 1272|  59.9k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  59.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  59.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  59.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  59.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  59.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  59.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  59.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  59.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 59.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  59.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  59.9k|   else                                         \
  |  |  |  |  |  | 1021|  59.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  59.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  59.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 59.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  59.9k|      { } \
  |  |  646|  59.9k|    else \
  |  |  647|  59.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|  59.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  59.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 59.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1273|  59.9k|    return st->buf->data[7];
 1274|  59.9k|}
fu_usb_interface_hdr_get_interface:
 1280|  59.9k|{
 1281|  59.9k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  59.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  59.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  59.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  59.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  59.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  59.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  59.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  59.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 59.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  59.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  59.9k|   else                                         \
  |  |  |  |  |  | 1021|  59.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  59.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  59.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 59.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  59.9k|      { } \
  |  |  646|  59.9k|    else \
  |  |  647|  59.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|  59.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  59.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 59.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1282|  59.9k|    return st->buf->data[8];
 1283|  59.9k|}
fu_usb_interface_hdr_parse_stream:
 1360|  59.9k|{
 1361|  59.9k|    g_autoptr(FuUsbInterfaceHdr) st = fu_usb_interface_hdr_new_internal();
  ------------------
  |  | 1162|  59.9k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  59.9k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1362|  59.9k|    st->buf = fu_input_stream_read_byte_array(stream, offset, 9, NULL, error);
 1363|  59.9k|    if (st->buf == NULL) {
  ------------------
  |  Branch (1363:9): [True: 0, False: 59.9k]
  ------------------
 1364|      0|        g_prefix_error(error, "FuUsbInterfaceHdr failed read of 0x%x: ", (guint) 9);
 1365|      0|        return NULL;
 1366|      0|    }
 1367|  59.9k|    if (st->buf->len != 9) {
  ------------------
  |  Branch (1367:9): [True: 39, False: 59.9k]
  ------------------
 1368|     39|        g_set_error(error,
 1369|     39|                    FWUPD_ERROR,
  ------------------
  |  |   15|     39|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1370|     39|                    FWUPD_ERROR_INVALID_DATA,
 1371|     39|                    "FuUsbInterfaceHdr requested 0x%x and got 0x%x",
 1372|     39|                    (guint) 9,
 1373|     39|                    (guint) st->buf->len);
 1374|     39|        return NULL;
 1375|     39|    }
 1376|  59.9k|    if (!fu_usb_interface_hdr_parse_internal(st, error))
  ------------------
  |  Branch (1376:9): [True: 0, False: 59.9k]
  ------------------
 1377|      0|        return NULL;
 1378|  59.9k|    return g_steal_pointer(&st);
  ------------------
  |  |  222|  59.9k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
 1379|  59.9k|}
fu_usb_endpoint_hdr_unref:
 1395|  36.4k|{
 1396|  36.4k|    g_return_if_fail(st != NULL);
  ------------------
  |  |  630|  36.4k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  36.4k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  36.4k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  36.4k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  36.4k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  36.4k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  36.4k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  36.4k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 36.4k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  36.4k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  36.4k|   else                                         \
  |  |  |  |  |  | 1021|  36.4k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  36.4k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  36.4k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 36.4k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  36.4k|      { } \
  |  |  633|  36.4k|    else \
  |  |  634|  36.4k|      { \
  |  |  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|  36.4k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  36.4k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 36.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1397|  36.4k|    if (st->refcount == 0) {
  ------------------
  |  Branch (1397:9): [True: 0, False: 36.4k]
  ------------------
 1398|      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__)
  ------------------
 1399|      0|        return;
 1400|      0|    }
 1401|  36.4k|    if (--st->refcount > 0)
  ------------------
  |  Branch (1401:9): [True: 0, False: 36.4k]
  ------------------
 1402|      0|        return;
 1403|  36.4k|    if (st->buf != NULL)
  ------------------
  |  Branch (1403:9): [True: 36.4k, False: 0]
  ------------------
 1404|  36.4k|        g_byte_array_unref(st->buf);
 1405|  36.4k|    g_free(st);
 1406|  36.4k|}
fu_usb_endpoint_hdr_get_length:
 1424|  36.4k|{
 1425|  36.4k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  36.4k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  36.4k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  36.4k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  36.4k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  36.4k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  36.4k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  36.4k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  36.4k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 36.4k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  36.4k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  36.4k|   else                                         \
  |  |  |  |  |  | 1021|  36.4k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  36.4k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  36.4k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 36.4k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  36.4k|      { } \
  |  |  646|  36.4k|    else \
  |  |  647|  36.4k|      { \
  |  |  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|  36.4k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  36.4k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 36.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1426|  36.4k|    return st->buf->data[0];
 1427|  36.4k|}
fu_usb_endpoint_hdr_get_descriptor_type:
 1433|  36.4k|{
 1434|  36.4k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  36.4k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  36.4k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  36.4k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  36.4k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  36.4k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  36.4k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  36.4k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  36.4k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 36.4k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  36.4k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  36.4k|   else                                         \
  |  |  |  |  |  | 1021|  36.4k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  36.4k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  36.4k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 36.4k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  36.4k|      { } \
  |  |  646|  36.4k|    else \
  |  |  647|  36.4k|      { \
  |  |  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|  36.4k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  36.4k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 36.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1435|  36.4k|    return st->buf->data[1];
 1436|  36.4k|}
fu_usb_endpoint_hdr_get_endpoint_address:
 1442|  36.4k|{
 1443|  36.4k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  36.4k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  36.4k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  36.4k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  36.4k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  36.4k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  36.4k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  36.4k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  36.4k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 36.4k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  36.4k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  36.4k|   else                                         \
  |  |  |  |  |  | 1021|  36.4k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  36.4k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  36.4k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 36.4k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  36.4k|      { } \
  |  |  646|  36.4k|    else \
  |  |  647|  36.4k|      { \
  |  |  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|  36.4k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  36.4k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 36.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1444|  36.4k|    return st->buf->data[2];
 1445|  36.4k|}
fu_usb_endpoint_hdr_get_attributes:
 1451|  36.4k|{
 1452|  36.4k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  36.4k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  36.4k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  36.4k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  36.4k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  36.4k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  36.4k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  36.4k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  36.4k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 36.4k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  36.4k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  36.4k|   else                                         \
  |  |  |  |  |  | 1021|  36.4k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  36.4k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  36.4k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 36.4k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  36.4k|      { } \
  |  |  646|  36.4k|    else \
  |  |  647|  36.4k|      { \
  |  |  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|  36.4k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  36.4k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 36.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1453|  36.4k|    return st->buf->data[3];
 1454|  36.4k|}
fu_usb_endpoint_hdr_get_max_packet_size:
 1460|  36.4k|{
 1461|  36.4k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  36.4k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  36.4k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  36.4k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  36.4k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  36.4k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  36.4k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  36.4k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  36.4k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 36.4k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  36.4k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  36.4k|   else                                         \
  |  |  |  |  |  | 1021|  36.4k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  36.4k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  36.4k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 36.4k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  36.4k|      { } \
  |  |  646|  36.4k|    else \
  |  |  647|  36.4k|      { \
  |  |  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|  36.4k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  36.4k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 36.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1462|  36.4k|    return fu_memread_uint16(st->buf->data + 4, G_LITTLE_ENDIAN);
  ------------------
  |  |  184|  36.4k|#define G_LITTLE_ENDIAN 1234
  ------------------
 1463|  36.4k|}
fu_usb_endpoint_hdr_get_interval:
 1469|  36.4k|{
 1470|  36.4k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  36.4k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  36.4k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  36.4k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  36.4k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  36.4k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  36.4k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  36.4k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  36.4k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 36.4k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  36.4k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  36.4k|   else                                         \
  |  |  |  |  |  | 1021|  36.4k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  36.4k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  36.4k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 36.4k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  36.4k|      { } \
  |  |  646|  36.4k|    else \
  |  |  647|  36.4k|      { \
  |  |  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|  36.4k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  36.4k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 36.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1471|  36.4k|    return st->buf->data[6];
 1472|  36.4k|}
fu_usb_endpoint_hdr_parse_stream:
 1519|  36.4k|{
 1520|  36.4k|    g_autoptr(FuUsbEndpointHdr) st = fu_usb_endpoint_hdr_new_internal();
  ------------------
  |  | 1162|  36.4k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  36.4k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1521|  36.4k|    st->buf = fu_input_stream_read_byte_array(stream, offset, 7, NULL, error);
 1522|  36.4k|    if (st->buf == NULL) {
  ------------------
  |  Branch (1522:9): [True: 0, False: 36.4k]
  ------------------
 1523|      0|        g_prefix_error(error, "FuUsbEndpointHdr failed read of 0x%x: ", (guint) 7);
 1524|      0|        return NULL;
 1525|      0|    }
 1526|  36.4k|    if (st->buf->len != 7) {
  ------------------
  |  Branch (1526:9): [True: 36, False: 36.4k]
  ------------------
 1527|     36|        g_set_error(error,
 1528|     36|                    FWUPD_ERROR,
  ------------------
  |  |   15|     36|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1529|     36|                    FWUPD_ERROR_INVALID_DATA,
 1530|     36|                    "FuUsbEndpointHdr requested 0x%x and got 0x%x",
 1531|     36|                    (guint) 7,
 1532|     36|                    (guint) st->buf->len);
 1533|     36|        return NULL;
 1534|     36|    }
 1535|  36.4k|    if (!fu_usb_endpoint_hdr_parse_internal(st, error))
  ------------------
  |  Branch (1535:9): [True: 0, False: 36.4k]
  ------------------
 1536|      0|        return NULL;
 1537|  36.4k|    return g_steal_pointer(&st);
  ------------------
  |  |  222|  36.4k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
 1538|  36.4k|}
fu-usb-struct.c:fu_usb_base_hdr_new_internal:
  200|   658k|{
  201|       |    FuUsbBaseHdr *st = g_new0(FuUsbBaseHdr, 1);
  ------------------
  |  |  307|   658k|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|   658k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   658k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|   658k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|   658k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|   658k|	  gpointer __p;						\
  |  |  |  |  239|   658k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 658k]
  |  |  |  |  ------------------
  |  |  |  |  240|   658k|	    __p = g_##func (__n);				\
  |  |  |  |  241|   658k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 658k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|   658k|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   658k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   658k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 658k]
  |  |  |  |  |  Branch (242:26): [True: 658k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|   658k|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|   658k|	  else							\
  |  |  |  |  245|   658k|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|   658k|	  __p;							\
  |  |  |  |  247|   658k|	}))
  |  |  ------------------
  ------------------
  202|   658k|    st->refcount = 1;
  203|   658k|    return st;
  204|   658k|}
fu-usb-struct.c:fu_usb_base_hdr_parse_internal:
  251|   658k|{
  252|   658k|    if (g_log_get_debug_enabled()) {
  ------------------
  |  |   13|   658k|#define g_log_get_debug_enabled() (g_getenv("FWUPD_VERBOSE") != NULL)
  |  |  ------------------
  |  |  |  Branch (13:35): [True: 0, False: 658k]
  |  |  ------------------
  ------------------
  253|      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)))
  |  |  ------------------
  ------------------
  254|      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__)
  ------------------
  255|      0|    }
  256|   658k|    return TRUE;
  ------------------
  |  |  818|   658k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   658k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  257|   658k|}
fu-usb-struct.c:fu_usb_device_hdr_parse:
  567|    735|{
  568|    735|    g_autoptr(FuUsbDeviceHdr) st = fu_usb_device_hdr_new_internal();
  ------------------
  |  | 1162|    735|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|    735|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  569|    735|    g_return_val_if_fail(buf != NULL, NULL);
  ------------------
  |  |  643|    735|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    735|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    735|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    735|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    735| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    735|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    735|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    735|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 735, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    735|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    735|   else                                         \
  |  |  |  |  |  | 1021|    735|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    735|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    735|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 735, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    735|      { } \
  |  |  646|    735|    else \
  |  |  647|    735|      { \
  |  |  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|    735|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    735|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 735]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  570|    735|    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
  ------------------
  |  |  643|    735|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    735|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    735|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    735|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    735| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    735|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    735|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.47k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 735, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    735|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    735|   else                                         \
  |  |  |  |  |  | 1021|    735|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    735|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    735|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 735, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    735|      { } \
  |  |  646|    735|    else \
  |  |  647|    735|      { \
  |  |  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|    735|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    735|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 735]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  571|    735|    if (!fu_memchk_read(bufsz, offset, 18, error)) {
  ------------------
  |  Branch (571:9): [True: 15, False: 720]
  ------------------
  572|     15|        g_prefix_error_literal(error, "invalid struct FuUsbDeviceHdr: ");
  ------------------
  |  |   13|     15|#define g_prefix_error_literal	  g_prefix_error
  ------------------
  573|     15|        return NULL;
  574|     15|    }
  575|    720|    st->buf = g_byte_array_new();
  576|    720|    g_byte_array_append(st->buf, buf + offset, 18);
  577|    720|    if (!fu_usb_device_hdr_parse_internal(st, error))
  ------------------
  |  Branch (577:9): [True: 38, False: 682]
  ------------------
  578|     38|        return NULL;
  579|    682|    return g_steal_pointer(&st);
  ------------------
  |  |  222|    682|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  580|    720|}
fu-usb-struct.c:fu_usb_device_hdr_new_internal:
  347|    735|{
  348|       |    FuUsbDeviceHdr *st = g_new0(FuUsbDeviceHdr, 1);
  ------------------
  |  |  307|    735|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|    735|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    735|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|    735|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|    735|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|    735|	  gpointer __p;						\
  |  |  |  |  239|    735|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 735]
  |  |  |  |  ------------------
  |  |  |  |  240|    735|	    __p = g_##func (__n);				\
  |  |  |  |  241|    735|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 735, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|    735|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|    735|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|    735|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 735]
  |  |  |  |  |  Branch (242:26): [True: 735, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|    735|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|    735|	  else							\
  |  |  |  |  245|    735|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|    735|	  __p;							\
  |  |  |  |  247|    735|	}))
  |  |  ------------------
  ------------------
  349|    735|    st->refcount = 1;
  350|    735|    return st;
  351|    735|}
fu-usb-struct.c:fu_usb_device_hdr_parse_internal:
  552|    720|{
  553|    720|    if (g_log_get_debug_enabled()) {
  ------------------
  |  |   13|    720|#define g_log_get_debug_enabled() (g_getenv("FWUPD_VERBOSE") != NULL)
  |  |  ------------------
  |  |  |  Branch (13:35): [True: 0, False: 720]
  |  |  ------------------
  ------------------
  554|      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)))
  |  |  ------------------
  ------------------
  555|      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__)
  ------------------
  556|      0|    }
  557|    720|    if (!fu_usb_device_hdr_validate_internal(st, error))
  ------------------
  |  Branch (557:9): [True: 38, False: 682]
  ------------------
  558|     38|        return FALSE;
  ------------------
  |  |  814|     38|#define	FALSE	(0)
  ------------------
  559|    682|    return TRUE;
  ------------------
  |  |  818|    682|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    682|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  560|    720|}
fu-usb-struct.c:fu_usb_device_hdr_get_descriptor_type:
  368|    796|{
  369|    796|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|    796|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    796|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    796|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    796|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    796| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    796|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    796|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    796|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 796, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    796|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    796|   else                                         \
  |  |  |  |  |  | 1021|    796|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    796|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    796|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 796, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    796|      { } \
  |  |  646|    796|    else \
  |  |  647|    796|      { \
  |  |  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|    796|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    796|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 796]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  370|    796|    return st->buf->data[1];
  371|    796|}
fu-usb-struct.c:fu_usb_device_hdr_validate_internal:
  536|    720|{
  537|    720|    g_return_val_if_fail(st != NULL, FALSE);
  ------------------
  |  |  643|    720|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    720|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    720|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    720|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    720| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    720|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    720|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    720|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 720, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    720|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    720|   else                                         \
  |  |  |  |  |  | 1021|    720|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    720|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    720|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 720, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    720|      { } \
  |  |  646|    720|    else \
  |  |  647|    720|      { \
  |  |  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|    720|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    720|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 720]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  538|    720|    if (fu_usb_device_hdr_get_descriptor_type(st) != FU_USB_DESCRIPTOR_KIND_DEVICE) {
  ------------------
  |  Branch (538:9): [True: 38, False: 682]
  ------------------
  539|     38|        g_set_error(error,
  540|     38|                    FWUPD_ERROR,
  ------------------
  |  |   15|     38|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  541|     38|                    FWUPD_ERROR_INVALID_DATA,
  542|     38|                    "constant FuUsbDeviceHdr.descriptor_type was not valid, "
  543|     38|                    "expected 'FU_USB_DESCRIPTOR_KIND_DEVICE' and got 0x%x '%s'",
  544|     38|                    fu_usb_device_hdr_get_descriptor_type(st),
  545|     38|                    fu_usb_descriptor_kind_to_string(fu_usb_device_hdr_get_descriptor_type(st)));
  546|     38|        return FALSE;
  ------------------
  |  |  814|     38|#define	FALSE	(0)
  ------------------
  547|     38|    }
  548|    682|    return TRUE;
  ------------------
  |  |  818|    682|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    682|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  549|    720|}
fu-usb-struct.c:fu_usb_descriptor_hdr_new_internal:
  625|   124k|{
  626|       |    FuUsbDescriptorHdr *st = g_new0(FuUsbDescriptorHdr, 1);
  ------------------
  |  |  307|   124k|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|   124k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   124k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|   124k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|   124k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|   124k|	  gpointer __p;						\
  |  |  |  |  239|   124k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 124k]
  |  |  |  |  ------------------
  |  |  |  |  240|   124k|	    __p = g_##func (__n);				\
  |  |  |  |  241|   124k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 124k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|   124k|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|   124k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|   124k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 124k]
  |  |  |  |  |  Branch (242:26): [True: 124k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|   124k|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|   124k|	  else							\
  |  |  |  |  245|   124k|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|   124k|	  __p;							\
  |  |  |  |  247|   124k|	}))
  |  |  ------------------
  ------------------
  627|   124k|    st->refcount = 1;
  628|   124k|    return st;
  629|   124k|}
fu-usb-struct.c:fu_usb_descriptor_hdr_parse_internal:
  758|   124k|{
  759|   124k|    if (g_log_get_debug_enabled()) {
  ------------------
  |  |   13|   124k|#define g_log_get_debug_enabled() (g_getenv("FWUPD_VERBOSE") != NULL)
  |  |  ------------------
  |  |  |  Branch (13:35): [True: 0, False: 124k]
  |  |  ------------------
  ------------------
  760|      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)))
  |  |  ------------------
  ------------------
  761|      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__)
  ------------------
  762|      0|    }
  763|   124k|    if (!fu_usb_descriptor_hdr_validate_internal(st, error))
  ------------------
  |  Branch (763:9): [True: 0, False: 124k]
  ------------------
  764|      0|        return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  765|   124k|    return TRUE;
  ------------------
  |  |  818|   124k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   124k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  766|   124k|}
fu-usb-struct.c:fu_usb_descriptor_hdr_get_descriptor_type:
  646|   124k|{
  647|   124k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|   124k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   124k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   124k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   124k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   124k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   124k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   124k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   124k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 124k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   124k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   124k|   else                                         \
  |  |  |  |  |  | 1021|   124k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   124k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   124k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 124k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   124k|      { } \
  |  |  646|   124k|    else \
  |  |  647|   124k|      { \
  |  |  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|   124k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   124k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 124k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  648|   124k|    return st->buf->data[1];
  649|   124k|}
fu-usb-struct.c:fu_usb_descriptor_hdr_validate_internal:
  742|   124k|{
  743|   124k|    g_return_val_if_fail(st != NULL, FALSE);
  ------------------
  |  |  643|   124k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   124k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   124k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   124k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   124k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   124k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   124k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   124k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 124k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   124k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   124k|   else                                         \
  |  |  |  |  |  | 1021|   124k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   124k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   124k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 124k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   124k|      { } \
  |  |  646|   124k|    else \
  |  |  647|   124k|      { \
  |  |  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|   124k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   124k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 124k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  744|   124k|    if (fu_usb_descriptor_hdr_get_descriptor_type(st) != FU_USB_DESCRIPTOR_KIND_CONFIG) {
  ------------------
  |  Branch (744:9): [True: 0, False: 124k]
  ------------------
  745|      0|        g_set_error(error,
  746|      0|                    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  747|      0|                    FWUPD_ERROR_INVALID_DATA,
  748|      0|                    "constant FuUsbDescriptorHdr.descriptor_type was not valid, "
  749|      0|                    "expected 'FU_USB_DESCRIPTOR_KIND_CONFIG' and got 0x%x '%s'",
  750|      0|                    fu_usb_descriptor_hdr_get_descriptor_type(st),
  751|      0|                    fu_usb_descriptor_kind_to_string(fu_usb_descriptor_hdr_get_descriptor_type(st)));
  752|      0|        return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  753|      0|    }
  754|   124k|    return TRUE;
  ------------------
  |  |  818|   124k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   124k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  755|   124k|}
fu-usb-struct.c:fu_usb_hid_descriptor_hdr_new_internal:
  824|  17.7k|{
  825|       |    FuUsbHidDescriptorHdr *st = g_new0(FuUsbHidDescriptorHdr, 1);
  ------------------
  |  |  307|  17.7k|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|  17.7k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  17.7k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|  17.7k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|  17.7k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|  17.7k|	  gpointer __p;						\
  |  |  |  |  239|  17.7k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 17.7k]
  |  |  |  |  ------------------
  |  |  |  |  240|  17.7k|	    __p = g_##func (__n);				\
  |  |  |  |  241|  17.7k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 17.7k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|  17.7k|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  17.7k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  17.7k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 17.7k]
  |  |  |  |  |  Branch (242:26): [True: 17.7k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|  17.7k|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|  17.7k|	  else							\
  |  |  |  |  245|  17.7k|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|  17.7k|	  __p;							\
  |  |  |  |  247|  17.7k|	}))
  |  |  ------------------
  ------------------
  826|  17.7k|    st->refcount = 1;
  827|  17.7k|    return st;
  828|  17.7k|}
fu-usb-struct.c:fu_usb_hid_descriptor_hdr_parse_internal:
  946|  17.7k|{
  947|  17.7k|    if (g_log_get_debug_enabled()) {
  ------------------
  |  |   13|  17.7k|#define g_log_get_debug_enabled() (g_getenv("FWUPD_VERBOSE") != NULL)
  |  |  ------------------
  |  |  |  Branch (13:35): [True: 0, False: 17.7k]
  |  |  ------------------
  ------------------
  948|      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)))
  |  |  ------------------
  ------------------
  949|      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__)
  ------------------
  950|      0|    }
  951|  17.7k|    if (!fu_usb_hid_descriptor_hdr_validate_internal(st, error))
  ------------------
  |  Branch (951:9): [True: 0, False: 17.7k]
  ------------------
  952|      0|        return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  953|  17.7k|    return TRUE;
  ------------------
  |  |  818|  17.7k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  17.7k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  954|  17.7k|}
fu-usb-struct.c:fu_usb_hid_descriptor_hdr_get_descriptor_type:
  845|  17.7k|{
  846|  17.7k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  17.7k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  17.7k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  17.7k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  17.7k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  17.7k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  17.7k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  17.7k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  17.7k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 17.7k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  17.7k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  17.7k|   else                                         \
  |  |  |  |  |  | 1021|  17.7k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  17.7k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  17.7k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 17.7k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  17.7k|      { } \
  |  |  646|  17.7k|    else \
  |  |  647|  17.7k|      { \
  |  |  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|  17.7k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  17.7k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 17.7k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  847|  17.7k|    return st->buf->data[1];
  848|  17.7k|}
fu-usb-struct.c:fu_usb_hid_descriptor_hdr_validate_internal:
  930|  17.7k|{
  931|  17.7k|    g_return_val_if_fail(st != NULL, FALSE);
  ------------------
  |  |  643|  17.7k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  17.7k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  17.7k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  17.7k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  17.7k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  17.7k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  17.7k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  17.7k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 17.7k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  17.7k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  17.7k|   else                                         \
  |  |  |  |  |  | 1021|  17.7k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  17.7k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  17.7k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 17.7k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  17.7k|      { } \
  |  |  646|  17.7k|    else \
  |  |  647|  17.7k|      { \
  |  |  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|  17.7k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  17.7k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 17.7k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  932|  17.7k|    if (fu_usb_hid_descriptor_hdr_get_descriptor_type(st) != FU_USB_DESCRIPTOR_KIND_HID) {
  ------------------
  |  Branch (932:9): [True: 0, False: 17.7k]
  ------------------
  933|      0|        g_set_error(error,
  934|      0|                    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  935|      0|                    FWUPD_ERROR_INVALID_DATA,
  936|      0|                    "constant FuUsbHidDescriptorHdr.descriptor_type was not valid, "
  937|      0|                    "expected 'FU_USB_DESCRIPTOR_KIND_HID' and got 0x%x '%s'",
  938|      0|                    fu_usb_hid_descriptor_hdr_get_descriptor_type(st),
  939|      0|                    fu_usb_descriptor_kind_to_string(fu_usb_hid_descriptor_hdr_get_descriptor_type(st)));
  940|      0|        return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  941|      0|    }
  942|  17.7k|    return TRUE;
  ------------------
  |  |  818|  17.7k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  17.7k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  943|  17.7k|}
fu-usb-struct.c:fu_usb_interface_hdr_new_internal:
 1196|  59.9k|{
 1197|       |    FuUsbInterfaceHdr *st = g_new0(FuUsbInterfaceHdr, 1);
  ------------------
  |  |  307|  59.9k|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|  59.9k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  59.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|  59.9k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|  59.9k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|  59.9k|	  gpointer __p;						\
  |  |  |  |  239|  59.9k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 59.9k]
  |  |  |  |  ------------------
  |  |  |  |  240|  59.9k|	    __p = g_##func (__n);				\
  |  |  |  |  241|  59.9k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 59.9k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|  59.9k|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  59.9k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  59.9k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 59.9k]
  |  |  |  |  |  Branch (242:26): [True: 59.9k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|  59.9k|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|  59.9k|	  else							\
  |  |  |  |  245|  59.9k|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|  59.9k|	  __p;							\
  |  |  |  |  247|  59.9k|	}))
  |  |  ------------------
  ------------------
 1198|  59.9k|    st->refcount = 1;
 1199|  59.9k|    return st;
 1200|  59.9k|}
fu-usb-struct.c:fu_usb_interface_hdr_parse_internal:
 1346|  59.9k|{
 1347|  59.9k|    if (g_log_get_debug_enabled()) {
  ------------------
  |  |   13|  59.9k|#define g_log_get_debug_enabled() (g_getenv("FWUPD_VERBOSE") != NULL)
  |  |  ------------------
  |  |  |  Branch (13:35): [True: 0, False: 59.9k]
  |  |  ------------------
  ------------------
 1348|      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)))
  |  |  ------------------
  ------------------
 1349|      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__)
  ------------------
 1350|      0|    }
 1351|  59.9k|    if (!fu_usb_interface_hdr_validate_internal(st, error))
  ------------------
  |  Branch (1351:9): [True: 0, False: 59.9k]
  ------------------
 1352|      0|        return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1353|  59.9k|    return TRUE;
  ------------------
  |  |  818|  59.9k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  59.9k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1354|  59.9k|}
fu-usb-struct.c:fu_usb_interface_hdr_get_descriptor_type:
 1217|  59.9k|{
 1218|  59.9k|    g_return_val_if_fail(st != NULL, 0x0);
  ------------------
  |  |  643|  59.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  59.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  59.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  59.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  59.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  59.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  59.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  59.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 59.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  59.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  59.9k|   else                                         \
  |  |  |  |  |  | 1021|  59.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  59.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  59.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 59.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  59.9k|      { } \
  |  |  646|  59.9k|    else \
  |  |  647|  59.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|  59.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  59.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 59.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1219|  59.9k|    return st->buf->data[1];
 1220|  59.9k|}
fu-usb-struct.c:fu_usb_interface_hdr_validate_internal:
 1330|  59.9k|{
 1331|  59.9k|    g_return_val_if_fail(st != NULL, FALSE);
  ------------------
  |  |  643|  59.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  59.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  59.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  59.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  59.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  59.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  59.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  59.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 59.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  59.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  59.9k|   else                                         \
  |  |  |  |  |  | 1021|  59.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  59.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  59.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 59.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  59.9k|      { } \
  |  |  646|  59.9k|    else \
  |  |  647|  59.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|  59.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  59.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 59.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1332|  59.9k|    if (fu_usb_interface_hdr_get_descriptor_type(st) != FU_USB_DESCRIPTOR_KIND_INTERFACE) {
  ------------------
  |  Branch (1332:9): [True: 0, False: 59.9k]
  ------------------
 1333|      0|        g_set_error(error,
 1334|      0|                    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1335|      0|                    FWUPD_ERROR_INVALID_DATA,
 1336|      0|                    "constant FuUsbInterfaceHdr.descriptor_type was not valid, "
 1337|      0|                    "expected 'FU_USB_DESCRIPTOR_KIND_INTERFACE' and got 0x%x '%s'",
 1338|      0|                    fu_usb_interface_hdr_get_descriptor_type(st),
 1339|      0|                    fu_usb_descriptor_kind_to_string(fu_usb_interface_hdr_get_descriptor_type(st)));
 1340|      0|        return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1341|      0|    }
 1342|  59.9k|    return TRUE;
  ------------------
  |  |  818|  59.9k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  59.9k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1343|  59.9k|}
fu-usb-struct.c:fu_usb_endpoint_hdr_new_internal:
 1412|  36.4k|{
 1413|       |    FuUsbEndpointHdr *st = g_new0(FuUsbEndpointHdr, 1);
  ------------------
  |  |  307|  36.4k|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|  36.4k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  36.4k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|  36.4k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|  36.4k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|  36.4k|	  gpointer __p;						\
  |  |  |  |  239|  36.4k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 36.4k]
  |  |  |  |  ------------------
  |  |  |  |  240|  36.4k|	    __p = g_##func (__n);				\
  |  |  |  |  241|  36.4k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 36.4k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|  36.4k|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  36.4k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  36.4k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 36.4k]
  |  |  |  |  |  Branch (242:26): [True: 36.4k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|  36.4k|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|  36.4k|	  else							\
  |  |  |  |  245|  36.4k|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|  36.4k|	  __p;							\
  |  |  |  |  247|  36.4k|	}))
  |  |  ------------------
  ------------------
 1414|  36.4k|    st->refcount = 1;
 1415|  36.4k|    return st;
 1416|  36.4k|}
fu-usb-struct.c:fu_usb_endpoint_hdr_parse_internal:
 1507|  36.4k|{
 1508|  36.4k|    if (g_log_get_debug_enabled()) {
  ------------------
  |  |   13|  36.4k|#define g_log_get_debug_enabled() (g_getenv("FWUPD_VERBOSE") != NULL)
  |  |  ------------------
  |  |  |  Branch (13:35): [True: 0, False: 36.4k]
  |  |  ------------------
  ------------------
 1509|      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)))
  |  |  ------------------
  ------------------
 1510|      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__)
  ------------------
 1511|      0|    }
 1512|  36.4k|    return TRUE;
  ------------------
  |  |  818|  36.4k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  36.4k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1513|  36.4k|}

fu-fuzzer-firmware.c:glib_autoptr_cleanup_GObject:
 1139|    740|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|    740|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-fuzzer-firmware.c:glib_autoptr_clear_GObject:
 1137|    740|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 740, False: 0]
  ------------------
fu-fuzzer-firmware.c:glib_autoptr_cleanup_GBytes:
 1139|    740|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|    740|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-fuzzer-firmware.c:glib_autoptr_clear_GBytes:
 1137|    740|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 740, False: 0]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbBaseHdr:
 1139|   658k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   658k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbBaseHdr:
 1137|   658k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 239, False: 658k]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbDeviceHdr:
 1139|    735|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|    735|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbDeviceHdr:
 1137|    735|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 53, False: 682]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbDescriptorHdr:
 1139|   124k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   124k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbDescriptorHdr:
 1137|   124k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 34, False: 124k]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbHidDescriptorHdr:
 1139|  17.7k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  17.7k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbHidDescriptorHdr:
 1137|  17.7k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 11, False: 17.7k]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbInterfaceHdr:
 1139|  59.9k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  59.9k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbInterfaceHdr:
 1137|  59.9k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 39, False: 59.9k]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbEndpointHdr:
 1139|  36.4k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  36.4k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbEndpointHdr:
 1137|  36.4k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 36, False: 36.4k]
  ------------------
fu-firmware.c:glib_autoptr_clear_GObject:
 1137|  1.02M|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 1.02M, False: 0]
  ------------------
fu-firmware.c:glib_autoptr_cleanup_GBytes:
 1139|   342k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   342k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-firmware.c:glib_autoptr_clear_GBytes:
 1137|   342k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 103k, False: 239k]
  ------------------
fu-firmware.c:glib_autoptr_cleanup_FuInputStream:
 1139|  1.02M|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  1.02M|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-firmware.c:glib_autoptr_clear_FuInputStream:
 1137|  1.02M|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 1.02M, False: 53]
  ------------------
fu-input-stream.c:glib_autoptr_cleanup_GByteArray:
 1139|   647k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   647k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-input-stream.c:glib_autoptr_clear_GByteArray:
 1137|   647k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 1, False: 647k]
  ------------------
fu-input-stream.c:glib_autoptr_cleanup_GError:
 1139|   544k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   544k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-input-stream.c:glib_autoptr_clear_GError:
 1137|   544k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 0, False: 544k]
  ------------------
fu-memory-input-stream.c:glib_autoptr_cleanup_FuMemoryInputStream:
 1139|   342k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   342k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-memory-input-stream.c:glib_autoptr_clear_FuMemoryInputStream:
 1137|   342k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 0, False: 342k]
  ------------------
fu-partial-input-stream.c:glib_autoptr_cleanup_FuPartialInputStream:
 1139|   340k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   340k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-partial-input-stream.c:glib_autoptr_clear_FuPartialInputStream:
 1137|   340k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 0, False: 340k]
  ------------------
fu-usb-config-descriptor.c:glib_autoptr_cleanup_FuUsbDescriptorHdr:
 1139|   124k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   124k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-config-descriptor.c:glib_autoptr_clear_FuUsbDescriptorHdr:
 1137|   124k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 124k, False: 34]
  ------------------
fu-usb-descriptor.c:glib_autoptr_cleanup_FuUsbBaseHdr:
 1139|   199k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   199k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-descriptor.c:glib_autoptr_clear_FuUsbBaseHdr:
 1137|   199k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 199k, False: 161]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_GError:
 1139|   458k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   458k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_GError:
 1137|   458k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 0, False: 458k]
  ------------------
fu-usb-device.c:glib_autoptr_clear_GObject:
 1137|   112k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 112k, False: 0]
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuFirmware:
 1137|   112k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 112k, False: 0]
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbDescriptor:
 1137|   112k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 112k, False: 0]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbConfigDescriptor:
 1139|   124k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   124k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbConfigDescriptor:
 1137|   124k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 34, False: 124k]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbHidDescriptor:
 1139|  17.7k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  17.7k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbHidDescriptor:
 1137|  17.7k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 622, False: 17.0k]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbDeviceHdr:
 1139|    740|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|    740|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbDeviceHdr:
 1137|    740|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 682, False: 58]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbBaseHdr:
 1139|   458k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   458k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbBaseHdr:
 1137|   458k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 458k, False: 78]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbDescriptor:
 1139|  14.9k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  14.9k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbEndpoint:
 1139|  36.4k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  36.4k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbEndpoint:
 1137|  36.4k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 36.4k, False: 0]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbInterface:
 1139|  60.7k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  60.7k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbInterface:
 1137|  60.7k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 60.3k, False: 393]
  ------------------
fu-usb-endpoint.c:glib_autoptr_cleanup_FuUsbEndpointHdr:
 1139|  36.4k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  36.4k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-endpoint.c:glib_autoptr_clear_FuUsbEndpointHdr:
 1137|  36.4k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 36.4k, False: 36]
  ------------------
fu-usb-hid-descriptor.c:glib_autoptr_cleanup_FuUsbHidDescriptorHdr:
 1139|  17.7k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  17.7k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-hid-descriptor.c:glib_autoptr_clear_FuUsbHidDescriptorHdr:
 1137|  17.7k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 17.7k, False: 11]
  ------------------
fu-usb-interface.c:glib_autoptr_cleanup_FuUsbInterfaceHdr:
 1139|  59.9k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  59.9k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-interface.c:glib_autoptr_clear_FuUsbInterfaceHdr:
 1137|  59.9k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 59.9k, False: 39]
  ------------------
fu-usb-interface.c:glib_autoptr_cleanup_GByteArray:
 1139|  1.87k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  1.87k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-interface.c:glib_autoptr_clear_GByteArray:
 1137|  1.87k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 1.87k, False: 1]
  ------------------
fu-usb-interface.c:glib_autoptr_cleanup_GBytes:
 1139|  1.87k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  1.87k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-interface.c:glib_autoptr_clear_GBytes:
 1137|  1.87k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 1.87k, False: 0]
  ------------------
fu-usb-interface.c:glib_autoptr_clear_FuUsbDescriptor:
 1137|  88.4k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 88.4k, False: 0]
  ------------------
fu-usb-interface.c:glib_autoptr_clear_FuFirmware:
 1137|  88.4k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 88.4k, False: 0]
  ------------------
fu-usb-interface.c:glib_autoptr_clear_GObject:
 1137|  88.4k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 88.4k, False: 0]
  ------------------
fu-usb-interface.c:glib_autoptr_cleanup_FuUsbDescriptor:
 1139|  88.4k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  88.4k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------

fu-usb-struct.c:g_steal_pointer:
  210|   897k|{
  211|   897k|  gpointer *ptr = (gpointer *) pp;
  212|   897k|  gpointer ref;
  213|       |
  214|   897k|  ref = *ptr;
  215|   897k|  *ptr = NULL;
  216|       |
  217|   897k|  return ref;
  218|   897k|}
fu-input-stream.c:g_steal_pointer:
  210|   647k|{
  211|   647k|  gpointer *ptr = (gpointer *) pp;
  212|   647k|  gpointer ref;
  213|       |
  214|   647k|  ref = *ptr;
  215|   647k|  *ptr = NULL;
  216|       |
  217|   647k|  return ref;
  218|   647k|}
fu-memory-input-stream.c:g_steal_pointer:
  210|   342k|{
  211|   342k|  gpointer *ptr = (gpointer *) pp;
  212|   342k|  gpointer ref;
  213|       |
  214|   342k|  ref = *ptr;
  215|   342k|  *ptr = NULL;
  216|       |
  217|   342k|  return ref;
  218|   342k|}
fu-partial-input-stream.c:g_steal_pointer:
  210|   340k|{
  211|   340k|  gpointer *ptr = (gpointer *) pp;
  212|   340k|  gpointer ref;
  213|       |
  214|   340k|  ref = *ptr;
  215|   340k|  *ptr = NULL;
  216|       |
  217|   340k|  return ref;
  218|   340k|}
fu-usb-device.c:g_steal_pointer:
  210|   142k|{
  211|   142k|  gpointer *ptr = (gpointer *) pp;
  212|   142k|  gpointer ref;
  213|       |
  214|   142k|  ref = *ptr;
  215|   142k|  *ptr = NULL;
  216|       |
  217|   142k|  return ref;
  218|   142k|}

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

fu-device.c:g_set_object:
  723|    740|{
  724|    740|  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|    740|  if (old_object == new_object)
  ------------------
  |  Branch (732:7): [True: 740, False: 0]
  ------------------
  733|    740|    return FALSE;
  ------------------
  |  |  814|    740|#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|    740|}
fu-usb-device.c:g_set_object:
  723|  59.7k|{
  724|  59.7k|  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|  59.7k|  if (old_object == new_object)
  ------------------
  |  Branch (732:7): [True: 0, False: 59.7k]
  ------------------
  733|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  734|       |
  735|  59.7k|  if (new_object != NULL)
  ------------------
  |  Branch (735:7): [True: 59.7k, False: 0]
  ------------------
  736|  59.7k|    g_object_ref (new_object);
  ------------------
  |  |  523|  59.7k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
  737|       |
  738|  59.7k|  *object_ptr = new_object;
  739|       |
  740|  59.7k|  if (old_object != NULL)
  ------------------
  |  Branch (740:7): [True: 59.3k, False: 347]
  ------------------
  741|  59.3k|    g_object_unref (old_object);
  742|       |
  743|  59.7k|  return TRUE;
  ------------------
  |  |  818|  59.7k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  59.7k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  744|  59.7k|}

fu-fuzzer-firmware.c:FU_FUZZER:
 1580|    740|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                         \
 1581|    740|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }               \
  ------------------
  |  |  484|    740|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|    740|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fwupd-device.c:fwupd_device_get_type_once:
 1762|      2|#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|      2|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      2|type_name##_get_type_once (void) \
  |  |  |  | 2014|      2|{ \
  |  |  |  | 2015|      2|  GType g_define_type_id = \
  |  |  |  | 2016|      2|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      2|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      2|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      2|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      2|                                       sizeof (TypeName), \
  |  |  |  | 2021|      2|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      2|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      2|    { /* 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|      2|    }					\
  |  | 2027|      2|  return g_define_type_id; \
  |  | 2028|      2|} /* 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|  5.92k|type_name##_get_instance_private (TypeName *self) \
 1991|  5.92k|{ \
 1992|  5.92k|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|  5.92k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|  5.92k|} \
fwupd-device.c:FWUPD_IS_DEVICE:
 1506|  4.44k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|  4.44k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  4.44k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  4.44k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.44k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  4.44k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  4.44k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 4.44k]
  |  |  |  |  ------------------
  |  |  |  | 2316|  4.44k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  4.44k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 4.44k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 0, False: 4.44k]
  |  |  |  |  ------------------
  |  |  |  | 2318|  4.44k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  4.44k|  else \
  |  |  |  | 2320|  4.44k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  4.44k|  __r; \
  |  |  |  | 2322|  4.44k|}))
  |  |  ------------------
  ------------------
fwupd-device.c:FWUPD_DEVICE:
 1502|    740|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|    740|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|    740|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|    740|    ((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:
 1618|      2|#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|      2|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      2|type_name##_get_type_once (void) \
  |  |  |  | 2014|      2|{ \
  |  |  |  | 2015|      2|  GType g_define_type_id = \
  |  |  |  | 2016|      2|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      2|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      2|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      2|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      2|                                       sizeof (TypeName), \
  |  |  |  | 2021|      2|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      2|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      2|    { /* 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|      2|    }					\
  |  | 2027|      2|  return g_define_type_id; \
  |  | 2028|      2|} /* 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|  18.5k|type_name##_get_instance_private (TypeName *self) \
 1991|  18.5k|{ \
 1992|  18.5k|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|  18.5k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|  18.5k|} \
fu-device.c:FU_IS_DEVICE:
 1506|  12.3k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|  12.3k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  12.3k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  12.3k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  12.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  12.3k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  12.3k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  | 2316|  12.3k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  12.3k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 12.3k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  | 2318|  12.3k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  12.3k|  else \
  |  |  |  | 2320|  12.3k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  12.3k|  __r; \
  |  |  |  | 2322|  12.3k|}))
  |  |  ------------------
  ------------------
fu-device.c:FU_DEVICE:
 1502|  5.92k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  5.92k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  5.92k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  5.92k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-device.c:FWUPD_DEVICE:
 1502|  4.44k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  4.44k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  4.44k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  4.44k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-device.c:FU_IS_CONTEXT:
 1506|    740|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|    740|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|    740|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|    740|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    740|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|    740|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|    740|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 740, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2316|    740|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    740|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|    740|  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|    740|  __r; \
  |  |  |  | 2322|    740|}))
  |  |  ------------------
  ------------------
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-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|  3.81M|type_name##_get_instance_private (TypeName *self) \
 1991|  3.81M|{ \
 1992|  3.81M|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|  3.81M|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|  3.81M|} \
fu-firmware.c:FU_IS_FIRMWARE:
 1506|  3.23M|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|  3.23M|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  3.23M|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  3.23M|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.23M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  3.23M|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  3.23M|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 3.23M]
  |  |  |  |  ------------------
  |  |  |  | 2316|  3.23M|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  3.23M|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 3.23M, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 0, False: 3.23M]
  |  |  |  |  ------------------
  |  |  |  | 2318|  3.23M|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  3.23M|  else \
  |  |  |  | 2320|  3.23M|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  3.23M|  __r; \
  |  |  |  | 2322|  3.23M|}))
  |  |  ------------------
  ------------------
fu-firmware.c:FU_FIRMWARE_GET_CLASS:
 1510|  1.57M|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_GET_CLASS (gpointer ptr) {    \
 1511|  1.57M|    return G_TYPE_INSTANCE_GET_CLASS (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }       \
  ------------------
  |  |  527|  1.57M|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2309|  1.57M|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  ------------------
  ------------------
fu-firmware.c:FU_IS_INPUT_STREAM:
 1506|   342k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|   342k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|   342k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|   342k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   342k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|   342k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|   342k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 342k]
  |  |  |  |  ------------------
  |  |  |  | 2316|   342k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|   342k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 342k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 0, False: 342k]
  |  |  |  |  ------------------
  |  |  |  | 2318|   342k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|   342k|  else \
  |  |  |  | 2320|   342k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|   342k|  __r; \
  |  |  |  | 2322|   342k|}))
  |  |  ------------------
  ------------------
fu-firmware.c:FU_IS_FIRMWARE_CLASS:
 1508|      1|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME##_CLASS (gpointer ptr) {                   \
 1509|      1|    return G_TYPE_CHECK_CLASS_TYPE (ptr, module_obj_name##_get_type ()); }                               \
  ------------------
  |  |  566|      1|#define G_TYPE_CHECK_CLASS_TYPE(g_class, g_type)                (_G_TYPE_CCT ((g_class), (g_type)))
  |  |  ------------------
  |  |  |  | 2323|      1|#  define _G_TYPE_CCT(cp, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2324|      1|  GTypeClass *__class = (GTypeClass*) cp; GType __t = gt; gboolean __r; \
  |  |  |  | 2325|      1|  if (!__class) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2325:7): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 2326|      1|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2327|      1|  else if (__class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2327:12): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 2328|      1|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2329|      1|  else \
  |  |  |  | 2330|      1|    __r = g_type_check_class_is_a (__class, __t); \
  |  |  |  | 2331|      1|  __r; \
  |  |  |  | 2332|      1|}))
  |  |  ------------------
  ------------------
fu-firmware.c:FU_FIRMWARE:
 1502|  1.02M|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  1.02M|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  1.02M|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  1.02M|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-fuzzer.c:FU_FUZZER_GET_IFACE:
 1584|    740|  G_GNUC_UNUSED static inline ModuleObjName##Interface * MODULE##_##OBJ_NAME##_GET_IFACE (gpointer ptr) {  \
 1585|    740|    return G_TYPE_INSTANCE_GET_INTERFACE (ptr, module_obj_name##_get_type (), ModuleObjName##Interface); } \
  ------------------
  |  |  540|    740|#define G_TYPE_INSTANCE_GET_INTERFACE(instance, g_type, c_type) (_G_TYPE_IGI ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2310|    740|#define _G_TYPE_IGI(ip, gt, ct)         ((ct*) g_type_interface_peek (((GTypeInstance*) ip)->g_class, gt))
  |  |  ------------------
  ------------------
fu-input-stream.c:fu_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-input-stream.c:fu_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-input-stream.c:FU_IS_INPUT_STREAM:
 1506|  2.42M|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|  2.42M|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  2.42M|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  2.42M|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  2.42M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  2.42M|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  2.42M|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 2.42M]
  |  |  |  |  ------------------
  |  |  |  | 2316|  2.42M|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  2.42M|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 2.42M, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 0, False: 2.42M]
  |  |  |  |  ------------------
  |  |  |  | 2318|  2.42M|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  2.42M|  else \
  |  |  |  | 2320|  2.42M|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  2.42M|  __r; \
  |  |  |  | 2322|  2.42M|}))
  |  |  ------------------
  ------------------
fu-input-stream.c:FU_INPUT_STREAM_GET_CLASS:
 1510|  8.73M|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_GET_CLASS (gpointer ptr) {    \
 1511|  8.73M|    return G_TYPE_INSTANCE_GET_CLASS (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }       \
  ------------------
  |  |  527|  8.73M|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2309|  8.73M|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  ------------------
  ------------------
fu-input-stream.c:FU_INPUT_STREAM:
 1502|  6.95M|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  6.95M|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  6.95M|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  6.95M|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-memory-input-stream.c:fu_memory_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() */
  ------------------
fu-memory-input-stream.c:fu_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: 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-memory-input-stream.c:FU_INPUT_STREAM_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-memory-input-stream.c:FU_MEMORY_INPUT_STREAM:
 1410|  3.99M|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|  3.99M|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  3.99M|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  3.99M|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-memory-input-stream.c:FU_INPUT_STREAM:
 1502|   342k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|   342k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|   342k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|   342k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, 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_INPUT_STREAM_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-partial-input-stream.c:FU_PARTIAL_INPUT_STREAM:
 1410|  3.16M|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|  3.16M|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  3.16M|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  3.16M|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-partial-input-stream.c:FU_IS_INPUT_STREAM:
 1506|   340k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|   340k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|   340k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|   340k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   340k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|   340k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|   340k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 340k]
  |  |  |  |  ------------------
  |  |  |  | 2316|   340k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|   340k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 340k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 0, False: 340k]
  |  |  |  |  ------------------
  |  |  |  | 2318|   340k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|   340k|  else \
  |  |  |  | 2320|   340k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|   340k|  __r; \
  |  |  |  | 2322|   340k|}))
  |  |  ------------------
  ------------------
fu-partial-input-stream.c:FU_INPUT_STREAM:
 1502|   340k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|   340k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|   340k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|   340k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-partial-input-stream.c:FU_IS_PARTIAL_INPUT_STREAM:
 1412|  1.08M|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1413|  1.08M|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  1.08M|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  1.08M|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.08M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  1.08M|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  1.08M|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 1.08M]
  |  |  |  |  ------------------
  |  |  |  | 2316|  1.08M|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  1.08M|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 1.08M, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 1.08M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2318|  1.08M|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|  1.08M|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  1.08M|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  1.08M|  else \
  |  |  |  | 2320|  1.08M|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  1.08M|  __r; \
  |  |  |  | 2322|  1.08M|}))
  |  |  ------------------
  ------------------
fu-udev-device.c:fu_udev_device_get_type_once:
 1762|      2|#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|      2|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      2|type_name##_get_type_once (void) \
  |  |  |  | 2014|      2|{ \
  |  |  |  | 2015|      2|  GType g_define_type_id = \
  |  |  |  | 2016|      2|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      2|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      2|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      2|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      2|                                       sizeof (TypeName), \
  |  |  |  | 2021|      2|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      2|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      2|    { /* 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|      2|    }					\
  |  | 2027|      2|  return g_define_type_id; \
  |  | 2028|      2|} /* 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|  2.96k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  2.96k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  2.96k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  2.96k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-udev-device.c:fu_udev_device_get_instance_private:
 1990|  1.48k|type_name##_get_instance_private (TypeName *self) \
 1991|  1.48k|{ \
 1992|  1.48k|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|  1.48k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|  1.48k|} \
fu-udev-device.c:FU_UDEV_DEVICE:
 1502|    740|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|    740|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|    740|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|    740|    ((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_USB_CONFIG_DESCRIPTOR:
 1410|   249k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|   249k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|   249k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|   249k|    ((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-device.c:fu_usb_device_get_type_once:
 1762|      2|#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|      2|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      2|type_name##_get_type_once (void) \
  |  |  |  | 2014|      2|{ \
  |  |  |  | 2015|      2|  GType g_define_type_id = \
  |  |  |  | 2016|      2|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      2|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      2|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      2|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      2|                                       sizeof (TypeName), \
  |  |  |  | 2021|      2|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      2|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      2|    { /* 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|      2|    }					\
  |  | 2027|      2|  return g_define_type_id; \
  |  | 2028|      2|} /* 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.22k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  2.22k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  2.22k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  2.22k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-device.c:FU_FIRMWARE:
 1502|   298k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|   298k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|   298k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|   298k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-device.c:fu_usb_device_get_instance_private:
 1990|  62.7k|type_name##_get_instance_private (TypeName *self) \
 1991|  62.7k|{ \
 1992|  62.7k|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|  62.7k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|  62.7k|} \
fu-usb-device.c:FU_DEVICE:
 1502|  4.32k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  4.32k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  4.32k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  4.32k|    ((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|  36.4k|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) {        \
 1505|  36.4k|    return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }         \
  ------------------
  |  |  553|  36.4k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2302|  36.4k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  ------------------
  ------------------
fu-usb-endpoint.c:FU_IS_USB_ENDPOINT:
 1412|  14.8k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1413|  14.8k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  14.8k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  14.8k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  14.8k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  14.8k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  14.8k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 14.8k]
  |  |  |  |  ------------------
  |  |  |  | 2316|  14.8k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  14.8k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 14.8k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 14.8k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2318|  14.8k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|  14.8k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  14.8k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  14.8k|  else \
  |  |  |  | 2320|  14.8k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  14.8k|  __r; \
  |  |  |  | 2322|  14.8k|}))
  |  |  ------------------
  ------------------
fu-usb-endpoint.c:FU_USB_ENDPOINT:
 1410|  36.4k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|  36.4k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  36.4k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  36.4k|    ((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|  35.4k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|  35.4k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  35.4k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  35.4k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-hid-descriptor.c:FU_IS_USB_HID_DESCRIPTOR:
 1412|  17.0k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1413|  17.0k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  17.0k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  17.0k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  17.0k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  17.0k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  17.0k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 17.0k]
  |  |  |  |  ------------------
  |  |  |  | 2316|  17.0k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  17.0k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 17.0k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 17.0k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2318|  17.0k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|  17.0k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  17.0k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  17.0k|  else \
  |  |  |  | 2320|  17.0k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  17.0k|  __r; \
  |  |  |  | 2322|  17.0k|}))
  |  |  ------------------
  ------------------
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|  59.9k|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) {        \
 1505|  59.9k|    return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }         \
  ------------------
  |  |  553|  59.9k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2302|  59.9k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  ------------------
  ------------------
fu-usb-interface.c:FU_FIRMWARE:
 1502|   413k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|   413k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|   413k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|   413k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-interface.c:FU_USB_INTERFACE:
 1410|   119k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|   119k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|   119k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|   119k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-interface.c:FU_IS_USB_INTERFACE:
 1412|  98.4k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1413|  98.4k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  98.4k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  98.4k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  98.4k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  98.4k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  98.4k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 98.4k]
  |  |  |  |  ------------------
  |  |  |  | 2316|  98.4k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  98.4k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 98.4k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 98.4k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2318|  98.4k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|  98.4k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  98.4k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  98.4k|  else \
  |  |  |  | 2320|  98.4k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  98.4k|  __r; \
  |  |  |  | 2322|  98.4k|}))
  |  |  ------------------
  ------------------
fu-usb-interface.c:FU_IS_USB_ENDPOINT:
 1412|  21.5k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1413|  21.5k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  21.5k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  21.5k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  21.5k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  21.5k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  21.5k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 21.5k]
  |  |  |  |  ------------------
  |  |  |  | 2316|  21.5k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  21.5k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 21.5k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 21.5k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2318|  21.5k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|  21.5k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  21.5k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  21.5k|  else \
  |  |  |  | 2320|  21.5k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  21.5k|  __r; \
  |  |  |  | 2322|  21.5k|}))
  |  |  ------------------
  ------------------

